From 1a84cdb93e3e4f17d38f840cc4798c24adb7a5f6 Mon Sep 17 00:00:00 2001 From: Aditya Agarwal Date: Wed, 2 Sep 2026 15:14:38 +0200 Subject: [PATCH 1/8] feat: [FEEDS-1830] regenerate OpenAPI client --- getstream/__init__.py | 6 +- getstream/chat/async_channel.py | 379 +- getstream/chat/async_client.py | 13 +- getstream/chat/async_rest_client.py | 2333 +- getstream/chat/channel.py | 379 +- getstream/chat/client.py | 13 +- getstream/chat/rest_client.py | 2301 +- getstream/common/async_client.py | 7 +- getstream/common/async_rest_client.py | 1478 +- getstream/common/client.py | 7 +- getstream/common/rest_client.py | 1418 +- getstream/feeds/client.py | 6 +- getstream/feeds/feeds.py | 244 +- getstream/feeds/rest_client.py | 2589 +- getstream/models/__init__.py | 26408 ++++---------------- getstream/moderation/async_rest_client.py | 1165 +- getstream/moderation/rest_client.py | 1133 +- getstream/stream.py | 62 +- getstream/stream_response.py | 8 +- getstream/tests/test_webhook.py | 54 +- getstream/video/__init__.py | 15 +- getstream/video/async_call.py | 547 +- getstream/video/async_client.py | 2 +- getstream/video/async_rest_client.py | 1483 +- getstream/video/call.py | 487 +- getstream/video/client.py | 2 +- getstream/video/rest_client.py | 1467 +- getstream/webhook.py | 53 +- 28 files changed, 8862 insertions(+), 35197 deletions(-) diff --git a/getstream/__init__.py b/getstream/__init__.py index 2378c84e..0d93ca61 100644 --- a/getstream/__init__.py +++ b/getstream/__init__.py @@ -8,8 +8,10 @@ StreamTaskException, StreamTransportException, ) -from getstream.stream import Stream # noqa: F401 -from getstream.stream import AsyncStream # noqa: F401 +from getstream.stream import ( + AsyncStream, # noqa: F401 + Stream, # noqa: F401 +) # No-op until the caller attaches a handler: the SDK never configures the # logger's level or output, it only emits at each event's documented level. diff --git a/getstream/chat/async_channel.py b/getstream/chat/async_channel.py index c77204fb..45ec72a9 100644 --- a/getstream/chat/async_channel.py +++ b/getstream/chat/async_channel.py @@ -5,427 +5,144 @@ class Channel: - def __init__( - self, - client, - channel_type: str, - channel_id: str | None = None, - custom_data: Dict = None, - ): + + def __init__(self, client, channel_type: str, channel_id: str = None, custom_data: Dict = None): self.channel_id = channel_id self.channel_type = channel_type self.client = client self.custom_data = custom_data or {} def _sync_from_response(self, data): - if hasattr(data, "channel") and isinstance(data.channel, ChannelResponse): + if hasattr(data, 'channel') and isinstance(data.channel, ChannelResponse): self.custom_data = data.channel.custom + + @attach_channel_cid_async - async def delete( - self, hard_delete: Optional[bool] = None - ) -> StreamResponse[DeleteChannelResponse]: - response = await self.client.delete_channel( - type=self.channel_type, id=self.channel_id, hard_delete=hard_delete - ) + async def delete(self, hard_delete: Optional[bool] = None) -> StreamResponse[DeleteChannelResponse]: + response = await self.client.delete_channel(type=self.channel_type, id=self.channel_id, hard_delete=hard_delete) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def get( - self, - state: Optional[bool] = None, - messages_limit: Optional[int] = None, - members_limit: Optional[int] = None, - watchers_limit: Optional[int] = None, - messages_id_lt: Optional[str] = None, - messages_id_lte: Optional[str] = None, - messages_id_gt: Optional[str] = None, - messages_id_gte: Optional[str] = None, - messages_id_around: Optional[str] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[ChannelStateResponse]: - response = await self.client.get_channel( - type=self.channel_type, - id=self.channel_id, - state=state, - messages_limit=messages_limit, - members_limit=members_limit, - watchers_limit=watchers_limit, - messages_id_lt=messages_id_lt, - messages_id_lte=messages_id_lte, - messages_id_gt=messages_id_gt, - messages_id_gte=messages_id_gte, - messages_id_around=messages_id_around, - user_id=user_id, - ) + async def get(self, state: Optional[bool] = None, messages_limit: Optional[int] = None, members_limit: Optional[int] = None, watchers_limit: Optional[int] = None, messages_id_lt: Optional[str] = None, messages_id_lte: Optional[str] = None, messages_id_gt: Optional[str] = None, messages_id_gte: Optional[str] = None, messages_id_around: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[ChannelStateResponse]: + response = await self.client.get_channel(type=self.channel_type, id=self.channel_id, state=state, messages_limit=messages_limit, members_limit=members_limit, watchers_limit=watchers_limit, messages_id_lt=messages_id_lt, messages_id_lte=messages_id_lte, messages_id_gt=messages_id_gt, messages_id_gte=messages_id_gte, messages_id_around=messages_id_around, user_id=user_id) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def update_channel_partial( - self, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateChannelPartialResponse]: - response = await self.client.update_channel_partial( - type=self.channel_type, - id=self.channel_id, - user_id=user_id, - unset=unset, - set=set, - user=user, - ) + async def update_channel_partial(self, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateChannelPartialResponse]: + response = await self.client.update_channel_partial(type=self.channel_type, id=self.channel_id, user_id=user_id, unset=unset, set=set, user=user) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def update( - self, - accept_invite: Optional[bool] = None, - cooldown: Optional[int] = None, - hide_history: Optional[bool] = None, - hide_history_before: Optional[datetime] = None, - reject_invite: Optional[bool] = None, - skip_push: Optional[bool] = None, - user_id: Optional[str] = None, - add_filter_tags: Optional[List[str]] = None, - add_members: Optional[List[ChannelMemberRequest]] = None, - add_moderators: Optional[List[str]] = None, - assign_roles: Optional[List[ChannelMemberRequest]] = None, - demote_moderators: Optional[List[str]] = None, - invites: Optional[List[ChannelMemberRequest]] = None, - remove_filter_tags: Optional[List[str]] = None, - remove_members: Optional[List[str]] = None, - data: Optional[ChannelInputRequest] = None, - message: Optional[MessageRequest] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateChannelResponse]: - response = await self.client.update_channel( - type=self.channel_type, - id=self.channel_id, - accept_invite=accept_invite, - cooldown=cooldown, - hide_history=hide_history, - hide_history_before=hide_history_before, - reject_invite=reject_invite, - skip_push=skip_push, - user_id=user_id, - add_filter_tags=add_filter_tags, - add_members=add_members, - add_moderators=add_moderators, - assign_roles=assign_roles, - demote_moderators=demote_moderators, - invites=invites, - remove_filter_tags=remove_filter_tags, - remove_members=remove_members, - data=data, - message=message, - user=user, - ) + async def update(self, accept_invite: Optional[bool] = None, cooldown: Optional[int] = None, hide_history: Optional[bool] = None, hide_history_before: Optional[datetime] = None, reject_invite: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, add_filter_tags: Optional[List[str]] = None, add_members: Optional[List[ChannelMemberRequest]] = None, add_moderators: Optional[List[str]] = None, assign_roles: Optional[List[ChannelMemberRequest]] = None, demote_moderators: Optional[List[str]] = None, invites: Optional[List[ChannelMemberRequest]] = None, remove_filter_tags: Optional[List[str]] = None, remove_members: Optional[List[str]] = None, data: Optional[ChannelInputRequest] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateChannelResponse]: + response = await self.client.update_channel(type=self.channel_type, id=self.channel_id, accept_invite=accept_invite, cooldown=cooldown, hide_history=hide_history, hide_history_before=hide_history_before, reject_invite=reject_invite, skip_push=skip_push, user_id=user_id, add_filter_tags=add_filter_tags, add_members=add_members, add_moderators=add_moderators, assign_roles=assign_roles, demote_moderators=demote_moderators, invites=invites, remove_filter_tags=remove_filter_tags, remove_members=remove_members, data=data, message=message, user=user) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def delete_draft( - self, parent_id: Optional[str] = None, user_id: Optional[str] = None - ) -> StreamResponse[Response]: - response = await self.client.delete_draft( - type=self.channel_type, - id=self.channel_id, - parent_id=parent_id, - user_id=user_id, - ) + async def delete_draft(self, parent_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[Response]: + response = await self.client.delete_draft(type=self.channel_type, id=self.channel_id, parent_id=parent_id, user_id=user_id) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def get_draft( - self, parent_id: Optional[str] = None, user_id: Optional[str] = None - ) -> StreamResponse[GetDraftResponse]: - response = await self.client.get_draft( - type=self.channel_type, - id=self.channel_id, - parent_id=parent_id, - user_id=user_id, - ) + async def get_draft(self, parent_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[GetDraftResponse]: + response = await self.client.get_draft(type=self.channel_type, id=self.channel_id, parent_id=parent_id, user_id=user_id) self._sync_from_response(response.data) return response @attach_channel_cid_async async def send_event(self, event: EventRequest) -> StreamResponse[EventResponse]: - response = await self.client.send_event( - type=self.channel_type, id=self.channel_id, event=event - ) + response = await self.client.send_event(type=self.channel_type, id=self.channel_id, event=event) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def delete_channel_file( - self, url: Optional[str] = None - ) -> StreamResponse[Response]: - response = await self.client.delete_channel_file( - type=self.channel_type, id=self.channel_id, url=url - ) + async def delete_channel_file(self, url: Optional[str] = None) -> StreamResponse[Response]: + response = await self.client.delete_channel_file(type=self.channel_type, id=self.channel_id, url=url) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def upload_channel_file( - self, file: Optional[str] = None, user: Optional[OnlyUserID] = None - ) -> StreamResponse[UploadChannelFileResponse]: - response = await self.client.upload_channel_file( - type=self.channel_type, id=self.channel_id, file=file, user=user - ) + async def upload_channel_file(self, file: Optional[str] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[UploadChannelFileResponse]: + response = await self.client.upload_channel_file(type=self.channel_type, id=self.channel_id, file=file, user=user) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def hide( - self, - clear_history: Optional[bool] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[HideChannelResponse]: - response = await self.client.hide_channel( - type=self.channel_type, - id=self.channel_id, - clear_history=clear_history, - user_id=user_id, - user=user, - ) + async def hide(self, clear_history: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[HideChannelResponse]: + response = await self.client.hide_channel(type=self.channel_type, id=self.channel_id, clear_history=clear_history, user_id=user_id, user=user) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def delete_channel_image( - self, url: Optional[str] = None - ) -> StreamResponse[Response]: - response = await self.client.delete_channel_image( - type=self.channel_type, id=self.channel_id, url=url - ) + async def delete_channel_image(self, url: Optional[str] = None) -> StreamResponse[Response]: + response = await self.client.delete_channel_image(type=self.channel_type, id=self.channel_id, url=url) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def upload_channel_image( - self, - file: Optional[str] = None, - upload_sizes: Optional[List[ImageSize]] = None, - user: Optional[OnlyUserID] = None, - ) -> StreamResponse[UploadChannelResponse]: - response = await self.client.upload_channel_image( - type=self.channel_type, - id=self.channel_id, - file=file, - upload_sizes=upload_sizes, - user=user, - ) + async def upload_channel_image(self, file: Optional[str] = None, upload_sizes: Optional[List[ImageSize]] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[UploadChannelResponse]: + response = await self.client.upload_channel_image(type=self.channel_type, id=self.channel_id, file=file, upload_sizes=upload_sizes, user=user) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def update_member_partial( - self, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - ) -> StreamResponse[UpdateMemberPartialResponse]: - response = await self.client.update_member_partial( - type=self.channel_type, - id=self.channel_id, - user_id=user_id, - unset=unset, - set=set, - ) + async def update_member_partial(self, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None) -> StreamResponse[UpdateMemberPartialResponse]: + response = await self.client.update_member_partial(type=self.channel_type, id=self.channel_id, user_id=user_id, unset=unset, set=set) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def send_message( - self, - message: MessageRequest, - force_moderation: Optional[bool] = None, - include_channel_context: Optional[bool] = None, - include_mentioned_members: Optional[bool] = None, - keep_channel_hidden: Optional[bool] = None, - pending: Optional[bool] = None, - skip_enrich_url: Optional[bool] = None, - skip_push: Optional[bool] = None, - pending_message_metadata: Optional[Dict[str, str]] = None, - ) -> StreamResponse[SendMessageResponse]: - response = await self.client.send_message( - type=self.channel_type, - id=self.channel_id, - message=message, - force_moderation=force_moderation, - include_channel_context=include_channel_context, - include_mentioned_members=include_mentioned_members, - keep_channel_hidden=keep_channel_hidden, - pending=pending, - skip_enrich_url=skip_enrich_url, - skip_push=skip_push, - pending_message_metadata=pending_message_metadata, - ) + async def send_message(self, message: MessageRequest, force_moderation: Optional[bool] = None, include_channel_context: Optional[bool] = None, include_mentioned_members: Optional[bool] = None, keep_channel_hidden: Optional[bool] = None, pending: Optional[bool] = None, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, pending_message_metadata: Optional[Dict[str, str]] = None) -> StreamResponse[SendMessageResponse]: + response = await self.client.send_message(type=self.channel_type, id=self.channel_id, message=message, force_moderation=force_moderation, include_channel_context=include_channel_context, include_mentioned_members=include_mentioned_members, keep_channel_hidden=keep_channel_hidden, pending=pending, skip_enrich_url=skip_enrich_url, skip_push=skip_push, pending_message_metadata=pending_message_metadata) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def get_many_messages( - self, ids: List[str], member_custom_include: Optional[List[str]] = None - ) -> StreamResponse[GetManyMessagesResponse]: - response = await self.client.get_many_messages( - type=self.channel_type, - id=self.channel_id, - ids=ids, - member_custom_include=member_custom_include, - ) + async def get_many_messages(self, ids: List[str], member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetManyMessagesResponse]: + response = await self.client.get_many_messages(type=self.channel_type, id=self.channel_id, ids=ids, member_custom_include=member_custom_include) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def get_pinned_messages( - self, - limit: Optional[int] = None, - offset: Optional[int] = None, - id_gte: Optional[str] = None, - id_gt: Optional[str] = None, - id_lte: Optional[str] = None, - id_lt: Optional[str] = None, - pinned_at_after_or_equal: Optional[datetime] = None, - pinned_at_after: Optional[datetime] = None, - pinned_at_before_or_equal: Optional[datetime] = None, - pinned_at_before: Optional[datetime] = None, - id_around: Optional[str] = None, - pinned_at_around: Optional[datetime] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - member_custom_include: Optional[List[str]] = None, - ) -> StreamResponse[GetPinnedMessagesResponse]: - response = await self.client.get_pinned_messages( - type=self.channel_type, - id=self.channel_id, - limit=limit, - offset=offset, - id_gte=id_gte, - id_gt=id_gt, - id_lte=id_lte, - id_lt=id_lt, - pinned_at_after_or_equal=pinned_at_after_or_equal, - pinned_at_after=pinned_at_after, - pinned_at_before_or_equal=pinned_at_before_or_equal, - pinned_at_before=pinned_at_before, - id_around=id_around, - pinned_at_around=pinned_at_around, - user_id=user_id, - sort=sort, - member_custom_include=member_custom_include, - ) + async def get_pinned_messages(self, limit: Optional[int] = None, offset: Optional[int] = None, id_gte: Optional[str] = None, id_gt: Optional[str] = None, id_lte: Optional[str] = None, id_lt: Optional[str] = None, pinned_at_after_or_equal: Optional[datetime] = None, pinned_at_after: Optional[datetime] = None, pinned_at_before_or_equal: Optional[datetime] = None, pinned_at_before: Optional[datetime] = None, id_around: Optional[str] = None, pinned_at_around: Optional[datetime] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetPinnedMessagesResponse]: + response = await self.client.get_pinned_messages(type=self.channel_type, id=self.channel_id, limit=limit, offset=offset, id_gte=id_gte, id_gt=id_gt, id_lte=id_lte, id_lt=id_lt, pinned_at_after_or_equal=pinned_at_after_or_equal, pinned_at_after=pinned_at_after, pinned_at_before_or_equal=pinned_at_before_or_equal, pinned_at_before=pinned_at_before, id_around=id_around, pinned_at_around=pinned_at_around, user_id=user_id, sort=sort, member_custom_include=member_custom_include) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def get_or_create( - self, - hide_for_creator: Optional[bool] = None, - state: Optional[bool] = None, - thread_unread_counts: Optional[bool] = None, - member_custom_include: Optional[List[str]] = None, - data: Optional[ChannelInput] = None, - members: Optional[PaginationParams] = None, - messages: Optional[MessagePaginationParams] = None, - watchers: Optional[PaginationParams] = None, - ) -> StreamResponse[ChannelStateResponse]: - response = await self.client.get_or_create_channel( - type=self.channel_type, - id=self.channel_id, - hide_for_creator=hide_for_creator, - state=state, - thread_unread_counts=thread_unread_counts, - member_custom_include=member_custom_include, - data=data, - members=members, - messages=messages, - watchers=watchers, - ) + async def get_or_create(self, hide_for_creator: Optional[bool] = None, state: Optional[bool] = None, thread_unread_counts: Optional[bool] = None, member_custom_include: Optional[List[str]] = None, data: Optional[ChannelInput] = None, members: Optional[PaginationParams] = None, messages: Optional[MessagePaginationParams] = None, watchers: Optional[PaginationParams] = None) -> StreamResponse[ChannelStateResponse]: + response = await self.client.get_or_create_channel(type=self.channel_type, id=self.channel_id, hide_for_creator=hide_for_creator, state=state, thread_unread_counts=thread_unread_counts, member_custom_include=member_custom_include, data=data, members=members, messages=messages, watchers=watchers) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def mark_read( - self, - message_id: Optional[str] = None, - thread_id: Optional[str] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[MarkReadResponse]: - response = await self.client.mark_read( - type=self.channel_type, - id=self.channel_id, - message_id=message_id, - thread_id=thread_id, - user_id=user_id, - user=user, - ) + async def mark_read(self, message_id: Optional[str] = None, thread_id: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[MarkReadResponse]: + response = await self.client.mark_read(type=self.channel_type, id=self.channel_id, message_id=message_id, thread_id=thread_id, user_id=user_id, user=user) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def show( - self, user_id: Optional[str] = None, user: Optional[UserRequest] = None - ) -> StreamResponse[ShowChannelResponse]: - response = await self.client.show_channel( - type=self.channel_type, id=self.channel_id, user_id=user_id, user=user - ) + async def show(self, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[ShowChannelResponse]: + response = await self.client.show_channel(type=self.channel_type, id=self.channel_id, user_id=user_id, user=user) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def truncate( - self, - hard_delete: Optional[bool] = None, - skip_push: Optional[bool] = None, - truncated_at: Optional[datetime] = None, - user_id: Optional[str] = None, - member_ids: Optional[List[str]] = None, - message: Optional[MessageRequest] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[TruncateChannelResponse]: - response = await self.client.truncate_channel( - type=self.channel_type, - id=self.channel_id, - hard_delete=hard_delete, - skip_push=skip_push, - truncated_at=truncated_at, - user_id=user_id, - member_ids=member_ids, - message=message, - user=user, - ) + async def truncate(self, hard_delete: Optional[bool] = None, skip_push: Optional[bool] = None, truncated_at: Optional[datetime] = None, user_id: Optional[str] = None, member_ids: Optional[List[str]] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[TruncateChannelResponse]: + response = await self.client.truncate_channel(type=self.channel_type, id=self.channel_id, hard_delete=hard_delete, skip_push=skip_push, truncated_at=truncated_at, user_id=user_id, member_ids=member_ids, message=message, user=user) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def mark_unread( - self, - message_id: Optional[str] = None, - message_timestamp: Optional[datetime] = None, - thread_id: Optional[str] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[Response]: - response = await self.client.mark_unread( - type=self.channel_type, - id=self.channel_id, - message_id=message_id, - message_timestamp=message_timestamp, - thread_id=thread_id, - user_id=user_id, - user=user, - ) + async def mark_unread(self, message_id: Optional[str] = None, message_timestamp: Optional[datetime] = None, thread_id: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[Response]: + response = await self.client.mark_unread(type=self.channel_type, id=self.channel_id, message_id=message_id, message_timestamp=message_timestamp, thread_id=thread_id, user_id=user_id, user=user) self._sync_from_response(response.data) return response - create = get_or_create + + create = get_or_create \ No newline at end of file diff --git a/getstream/chat/async_client.py b/getstream/chat/async_client.py index 25277dc8..bd0c6316 100644 --- a/getstream/chat/async_client.py +++ b/getstream/chat/async_client.py @@ -1,5 +1,4 @@ import json -from typing import List, Optional from getstream.chat.async_channel import Channel from getstream.chat.async_rest_client import ChatRestClient @@ -33,7 +32,7 @@ async def upload_channel_file( type: str, id: str, file: str, - user: Optional[OnlyUserID] = None, + user: OnlyUserID | None = None, ) -> StreamResponse[UploadChannelFileResponse]: form_fields = [] if user is not None: @@ -49,11 +48,11 @@ async def upload_channel_file( @telemetry.operation_name("getstream.api.chat.upload_channel_image") async def upload_channel_image( self, - channel_type: Optional[str] = None, - id: Optional[str] = None, - file: Optional[str] = None, - upload_sizes: Optional[List[ImageSize]] = None, - user: Optional[OnlyUserID] = None, + channel_type: str | None = None, + id: str | None = None, + file: str | None = None, + upload_sizes: list[ImageSize] | None = None, + user: OnlyUserID | None = None, **kwargs, ) -> StreamResponse[UploadChannelResponse]: # Backward compatibility for generated wrappers passing `type=...`. diff --git a/getstream/chat/async_rest_client.py b/getstream/chat/async_rest_client.py index d06634ca..54784fb7 100644 --- a/getstream/chat/async_rest_client.py +++ b/getstream/chat/async_rest_client.py @@ -1,3 +1,4 @@ + # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import AsyncBaseClient from getstream.common import telemetry @@ -7,14 +8,8 @@ class ChatRestClient(AsyncBaseClient): - def __init__( - self, - api_key: str, - base_url: str, - timeout: float, - token: str, - user_agent: str | None = None, - ): + + def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): """ Initializes ChatClient with BaseClient instance :param api_key: A string representing the client's API key @@ -31,2090 +26,688 @@ def __init__( user_agent=user_agent, ) + @telemetry.operation_name("getstream.api.chat.create_campaign") - async def create_campaign( - self, - sender_id: str, - message_template: CampaignMessageTemplate, - create_channels: Optional[bool] = None, - description: Optional[str] = None, - id: Optional[str] = None, - name: Optional[str] = None, - sender_mode: Optional[str] = None, - sender_visibility: Optional[str] = None, - show_channels: Optional[bool] = None, - skip_push: Optional[bool] = None, - skip_webhook: Optional[bool] = None, - segment_ids: Optional[List[str]] = None, - user_ids: Optional[List[str]] = None, - channel_template: Optional[CampaignChannelTemplate] = None, - ) -> StreamResponse[CreateCampaignResponse]: - json = CreateCampaignRequest( - sender_id=sender_id, - message_template=message_template, - create_channels=create_channels, - description=description, - id=id, - name=name, - sender_mode=sender_mode, - sender_visibility=sender_visibility, - show_channels=show_channels, - skip_push=skip_push, - skip_webhook=skip_webhook, - segment_ids=segment_ids, - user_ids=user_ids, - channel_template=channel_template, - ).to_dict() - return await self.post( - "/api/v2/chat/campaigns", CreateCampaignResponse, json=json - ) - + async def create_campaign(self, sender_id: str, message_template: CampaignMessageTemplate, create_channels: Optional[bool] = None, description: Optional[str] = None, id: Optional[str] = None, name: Optional[str] = None, sender_mode: Optional[str] = None, sender_visibility: Optional[str] = None, show_channels: Optional[bool] = None, skip_push: Optional[bool] = None, skip_webhook: Optional[bool] = None, segment_ids: Optional[List[str]] = None, user_ids: Optional[List[str]] = None, channel_template: Optional[CampaignChannelTemplate] = None) -> StreamResponse[CreateCampaignResponse]: + json = CreateCampaignRequest(sender_id=sender_id, message_template=message_template, create_channels=create_channels, description=description, id=id, name=name, sender_mode=sender_mode, sender_visibility=sender_visibility, show_channels=show_channels, skip_push=skip_push, skip_webhook=skip_webhook, segment_ids=segment_ids, user_ids=user_ids, channel_template=channel_template).to_dict() + return await self.post("/api/v2/chat/campaigns", CreateCampaignResponse, json=json) + @telemetry.operation_name("getstream.api.chat.query_campaigns") - async def query_campaigns( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_limit: Optional[int] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCampaignsResponse]: - json = QueryCampaignsRequest( - limit=limit, - next=next, - prev=prev, - user_limit=user_limit, - sort=sort, - filter=filter, - ).to_dict() - return await self.post( - "/api/v2/chat/campaigns/query", QueryCampaignsResponse, json=json - ) - + async def query_campaigns(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_limit: Optional[int] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCampaignsResponse]: + json = QueryCampaignsRequest(limit=limit, next=next, prev=prev, user_limit=user_limit, sort=sort, filter=filter).to_dict() + return await self.post("/api/v2/chat/campaigns/query", QueryCampaignsResponse, json=json) + @telemetry.operation_name("getstream.api.chat.delete_campaign") async def delete_campaign(self, id: str) -> StreamResponse[DeleteCampaignResponse]: path_params = { - "id": id, + "id": id, } - return await self.delete( - "/api/v2/chat/campaigns/{id}", - DeleteCampaignResponse, - path_params=path_params, - ) - + return await self.delete("/api/v2/chat/campaigns/{id}", DeleteCampaignResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_campaign") - async def get_campaign( - self, - id: str, - prev: Optional[str] = None, - next: Optional[str] = None, - limit: Optional[int] = None, - ) -> StreamResponse[GetCampaignResponse]: + async def get_campaign(self, id: str, prev: Optional[str] = None, next: Optional[str] = None, limit: Optional[int] = None) -> StreamResponse[GetCampaignResponse]: query_params = build_query_param(prev=prev, next=next, limit=limit) path_params = { - "id": id, + "id": id, } - return await self.get( - "/api/v2/chat/campaigns/{id}", - GetCampaignResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/chat/campaigns/{id}", GetCampaignResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_campaign") - async def update_campaign( - self, - id: str, - sender_id: str, - message_template: CampaignMessageTemplate, - create_channels: Optional[bool] = None, - description: Optional[str] = None, - id_: Optional[str] = None, - name: Optional[str] = None, - sender_mode: Optional[str] = None, - sender_visibility: Optional[str] = None, - show_channels: Optional[bool] = None, - skip_push: Optional[bool] = None, - skip_webhook: Optional[bool] = None, - segment_ids: Optional[List[str]] = None, - user_ids: Optional[List[str]] = None, - channel_template: Optional[CampaignChannelTemplate] = None, - ) -> StreamResponse[CampaignResponse]: - path_params = { - "id": id, - } - json = UpdateCampaignRequest( - sender_id=sender_id, - message_template=message_template, - create_channels=create_channels, - description=description, - id=id_, - name=name, - sender_mode=sender_mode, - sender_visibility=sender_visibility, - show_channels=show_channels, - skip_push=skip_push, - skip_webhook=skip_webhook, - segment_ids=segment_ids, - user_ids=user_ids, - channel_template=channel_template, - ).to_dict() - return await self.put( - "/api/v2/chat/campaigns/{id}", - CampaignResponse, - path_params=path_params, - json=json, - ) - + async def update_campaign(self, id: str, sender_id: str, message_template: CampaignMessageTemplate, create_channels: Optional[bool] = None, description: Optional[str] = None, id_: Optional[str] = None, name: Optional[str] = None, sender_mode: Optional[str] = None, sender_visibility: Optional[str] = None, show_channels: Optional[bool] = None, skip_push: Optional[bool] = None, skip_webhook: Optional[bool] = None, segment_ids: Optional[List[str]] = None, user_ids: Optional[List[str]] = None, channel_template: Optional[CampaignChannelTemplate] = None) -> StreamResponse[CampaignResponse]: + path_params = { + "id": id, + } + json = UpdateCampaignRequest(sender_id=sender_id, message_template=message_template, create_channels=create_channels, description=description, id=id_, name=name, sender_mode=sender_mode, sender_visibility=sender_visibility, show_channels=show_channels, skip_push=skip_push, skip_webhook=skip_webhook, segment_ids=segment_ids, user_ids=user_ids, channel_template=channel_template).to_dict() + return await self.put("/api/v2/chat/campaigns/{id}", CampaignResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.start_campaign") - async def start_campaign( - self, - id: str, - scheduled_for: Optional[datetime] = None, - stop_at: Optional[datetime] = None, - ) -> StreamResponse[StartCampaignResponse]: - path_params = { - "id": id, - } - json = StartCampaignRequest( - scheduled_for=scheduled_for, stop_at=stop_at - ).to_dict() - return await self.post( - "/api/v2/chat/campaigns/{id}/start", - StartCampaignResponse, - path_params=path_params, - json=json, - ) - + async def start_campaign(self, id: str, scheduled_for: Optional[datetime] = None, stop_at: Optional[datetime] = None) -> StreamResponse[StartCampaignResponse]: + path_params = { + "id": id, + } + json = StartCampaignRequest(scheduled_for=scheduled_for, stop_at=stop_at).to_dict() + return await self.post("/api/v2/chat/campaigns/{id}/start", StartCampaignResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.stop_campaign") - async def stop_campaign( - self, - id: str, - ) -> StreamResponse[CampaignResponse]: + async def stop_campaign(self, id: str, ) -> StreamResponse[CampaignResponse]: path_params = { - "id": id, + "id": id, } json = StopCampaignRequest().to_dict() - return await self.post( - "/api/v2/chat/campaigns/{id}/stop", - CampaignResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/chat/campaigns/{id}/stop", CampaignResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.query_channels") - async def query_channels( - self, - limit: Optional[int] = None, - member_limit: Optional[int] = None, - message_limit: Optional[int] = None, - offset: Optional[int] = None, - predefined_filter: Optional[str] = None, - state: Optional[bool] = None, - user_id: Optional[str] = None, - member_custom_include: Optional[List[str]] = None, - sort: Optional[List[SortParamRequest]] = None, - filter_conditions: Optional[Dict[str, object]] = None, - filter_values: Optional[Dict[str, object]] = None, - sort_values: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryChannelsResponse]: - json = QueryChannelsRequest( - limit=limit, - member_limit=member_limit, - message_limit=message_limit, - offset=offset, - predefined_filter=predefined_filter, - state=state, - user_id=user_id, - member_custom_include=member_custom_include, - sort=sort, - filter_conditions=filter_conditions, - filter_values=filter_values, - sort_values=sort_values, - user=user, - ).to_dict() - return await self.post( - "/api/v2/chat/channels", QueryChannelsResponse, json=json - ) - + async def query_channels(self, limit: Optional[int] = None, member_limit: Optional[int] = None, message_limit: Optional[int] = None, offset: Optional[int] = None, predefined_filter: Optional[str] = None, state: Optional[bool] = None, user_id: Optional[str] = None, member_custom_include: Optional[List[str]] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None, filter_values: Optional[Dict[str, object]] = None, sort_values: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryChannelsResponse]: + json = QueryChannelsRequest(limit=limit, member_limit=member_limit, message_limit=message_limit, offset=offset, predefined_filter=predefined_filter, state=state, user_id=user_id, member_custom_include=member_custom_include, sort=sort, filter_conditions=filter_conditions, filter_values=filter_values, sort_values=sort_values, user=user).to_dict() + return await self.post("/api/v2/chat/channels", QueryChannelsResponse, json=json) + @telemetry.operation_name("getstream.api.chat.channel_batch_update") - async def channel_batch_update( - self, - operation: str, - filter: Dict[str, object], - members: Optional[List[ChannelBatchMemberRequest]] = None, - data: Optional[ChannelDataUpdate] = None, - ) -> StreamResponse[ChannelBatchUpdateResponse]: - json = ChannelBatchUpdateRequest( - operation=operation, filter=filter, members=members, data=data - ).to_dict() - return await self.put( - "/api/v2/chat/channels/batch", ChannelBatchUpdateResponse, json=json - ) - + async def channel_batch_update(self, operation: str, filter: Dict[str, object], custom_unset: Optional[List[str]] = None, members: Optional[List[ChannelBatchMemberRequest]] = None, custom_set: Optional[Dict[str, object]] = None, data: Optional[ChannelDataUpdate] = None) -> StreamResponse[ChannelBatchUpdateResponse]: + json = ChannelBatchUpdateRequest(operation=operation, filter=filter, custom_unset=custom_unset, members=members, custom_set=custom_set, data=data).to_dict() + return await self.put("/api/v2/chat/channels/batch", ChannelBatchUpdateResponse, json=json) + @telemetry.operation_name("getstream.api.chat.delete_channels") - async def delete_channels( - self, cids: List[str], hard_delete: Optional[bool] = None - ) -> StreamResponse[DeleteChannelsResponse]: + async def delete_channels(self, cids: List[str], hard_delete: Optional[bool] = None) -> StreamResponse[DeleteChannelsResponse]: json = DeleteChannelsRequest(cids=cids, hard_delete=hard_delete).to_dict() - return await self.post( - "/api/v2/chat/channels/delete", DeleteChannelsResponse, json=json - ) - + return await self.post("/api/v2/chat/channels/delete", DeleteChannelsResponse, json=json) + @telemetry.operation_name("getstream.api.chat.mark_delivered") - async def mark_delivered( - self, - user_id: Optional[str] = None, - latest_delivered_messages: Optional[List[DeliveredMessagePayload]] = None, - ) -> StreamResponse[MarkDeliveredResponse]: + async def mark_delivered(self, user_id: Optional[str] = None, latest_delivered_messages: Optional[List[DeliveredMessagePayload]] = None) -> StreamResponse[MarkDeliveredResponse]: query_params = build_query_param(user_id=user_id) - json = MarkDeliveredRequest( - latest_delivered_messages=latest_delivered_messages - ).to_dict() - return await self.post( - "/api/v2/chat/channels/delivered", - MarkDeliveredResponse, - query_params=query_params, - json=json, - ) - + json = MarkDeliveredRequest(latest_delivered_messages=latest_delivered_messages).to_dict() + return await self.post("/api/v2/chat/channels/delivered", MarkDeliveredResponse, query_params=query_params, json=json) + @telemetry.operation_name("getstream.api.chat.grouped_query_channels") - async def grouped_query_channels( - self, - limit: Optional[int] = None, - user_id: Optional[str] = None, - groups: Optional[Dict[str, GroupedChannelsGroupRequest]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[GroupedQueryChannelsResponse]: - json = GroupedQueryChannelsRequest( - limit=limit, user_id=user_id, groups=groups, user=user - ).to_dict() - return await self.post( - "/api/v2/chat/channels/grouped", GroupedQueryChannelsResponse, json=json - ) - + async def grouped_query_channels(self, limit: Optional[int] = None, user_id: Optional[str] = None, groups: Optional[Dict[str, GroupedChannelsGroupRequest]] = None, user: Optional[UserRequest] = None) -> StreamResponse[GroupedQueryChannelsResponse]: + json = GroupedQueryChannelsRequest(limit=limit, user_id=user_id, groups=groups, user=user).to_dict() + return await self.post("/api/v2/chat/channels/grouped", GroupedQueryChannelsResponse, json=json) + @telemetry.operation_name("getstream.api.chat.mark_channels_read") - async def mark_channels_read( - self, - user_id: Optional[str] = None, - read_by_channel: Optional[Dict[str, str]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[MarkReadResponse]: - json = MarkChannelsReadRequest( - user_id=user_id, read_by_channel=read_by_channel, user=user - ).to_dict() - return await self.post( - "/api/v2/chat/channels/read", MarkReadResponse, json=json - ) - + async def mark_channels_read(self, user_id: Optional[str] = None, read_by_channel: Optional[Dict[str, str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[MarkReadResponse]: + json = MarkChannelsReadRequest(user_id=user_id, read_by_channel=read_by_channel, user=user).to_dict() + return await self.post("/api/v2/chat/channels/read", MarkReadResponse, json=json) + @telemetry.operation_name("getstream.api.chat.get_or_create_distinct_channel") - async def get_or_create_distinct_channel( - self, - type: str, - hide_for_creator: Optional[bool] = None, - state: Optional[bool] = None, - thread_unread_counts: Optional[bool] = None, - member_custom_include: Optional[List[str]] = None, - data: Optional[ChannelInput] = None, - members: Optional[PaginationParams] = None, - messages: Optional[MessagePaginationParams] = None, - watchers: Optional[PaginationParams] = None, - ) -> StreamResponse[ChannelStateResponse]: - path_params = { - "type": type, - } - json = ChannelGetOrCreateRequest( - hide_for_creator=hide_for_creator, - state=state, - thread_unread_counts=thread_unread_counts, - member_custom_include=member_custom_include, - data=data, - members=members, - messages=messages, - watchers=watchers, - ).to_dict() - return await self.post( - "/api/v2/chat/channels/{type}/query", - ChannelStateResponse, - path_params=path_params, - json=json, - ) - + async def get_or_create_distinct_channel(self, type: str, hide_for_creator: Optional[bool] = None, state: Optional[bool] = None, thread_unread_counts: Optional[bool] = None, member_custom_include: Optional[List[str]] = None, data: Optional[ChannelInput] = None, members: Optional[PaginationParams] = None, messages: Optional[MessagePaginationParams] = None, watchers: Optional[PaginationParams] = None) -> StreamResponse[ChannelStateResponse]: + path_params = { + "type": type, + } + json = ChannelGetOrCreateRequest(hide_for_creator=hide_for_creator, state=state, thread_unread_counts=thread_unread_counts, member_custom_include=member_custom_include, data=data, members=members, messages=messages, watchers=watchers).to_dict() + return await self.post("/api/v2/chat/channels/{type}/query", ChannelStateResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.delete_channel") - async def delete_channel( - self, type: str, id: str, hard_delete: Optional[bool] = None - ) -> StreamResponse[DeleteChannelResponse]: + async def delete_channel(self, type: str, id: str, hard_delete: Optional[bool] = None) -> StreamResponse[DeleteChannelResponse]: query_params = build_query_param(hard_delete=hard_delete) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return await self.delete( - "/api/v2/chat/channels/{type}/{id}", - DeleteChannelResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.delete("/api/v2/chat/channels/{type}/{id}", DeleteChannelResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_channel") - async def get_channel( - self, - type: str, - id: str, - state: Optional[bool] = None, - messages_limit: Optional[int] = None, - members_limit: Optional[int] = None, - watchers_limit: Optional[int] = None, - messages_id_lt: Optional[str] = None, - messages_id_lte: Optional[str] = None, - messages_id_gt: Optional[str] = None, - messages_id_gte: Optional[str] = None, - messages_id_around: Optional[str] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[ChannelStateResponse]: - query_params = build_query_param( - state=state, - messages_limit=messages_limit, - members_limit=members_limit, - watchers_limit=watchers_limit, - messages_id_lt=messages_id_lt, - messages_id_lte=messages_id_lte, - messages_id_gt=messages_id_gt, - messages_id_gte=messages_id_gte, - messages_id_around=messages_id_around, - user_id=user_id, - ) + async def get_channel(self, type: str, id: str, state: Optional[bool] = None, messages_limit: Optional[int] = None, members_limit: Optional[int] = None, watchers_limit: Optional[int] = None, messages_id_lt: Optional[str] = None, messages_id_lte: Optional[str] = None, messages_id_gt: Optional[str] = None, messages_id_gte: Optional[str] = None, messages_id_around: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[ChannelStateResponse]: + query_params = build_query_param(state=state, messages_limit=messages_limit, members_limit=members_limit, watchers_limit=watchers_limit, messages_id_lt=messages_id_lt, messages_id_lte=messages_id_lte, messages_id_gt=messages_id_gt, messages_id_gte=messages_id_gte, messages_id_around=messages_id_around, user_id=user_id) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return await self.get( - "/api/v2/chat/channels/{type}/{id}", - ChannelStateResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/chat/channels/{type}/{id}", ChannelStateResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_channel_partial") - async def update_channel_partial( - self, - type: str, - id: str, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateChannelPartialResponse]: - path_params = { - "type": type, - "id": id, - } - json = UpdateChannelPartialRequest( - user_id=user_id, unset=unset, set=set, user=user - ).to_dict() - return await self.patch( - "/api/v2/chat/channels/{type}/{id}", - UpdateChannelPartialResponse, - path_params=path_params, - json=json, - ) - + async def update_channel_partial(self, type: str, id: str, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateChannelPartialResponse]: + path_params = { + "type": type, "id": id, + } + json = UpdateChannelPartialRequest(user_id=user_id, unset=unset, set=set, user=user).to_dict() + return await self.patch("/api/v2/chat/channels/{type}/{id}", UpdateChannelPartialResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.update_channel") - async def update_channel( - self, - type: str, - id: str, - accept_invite: Optional[bool] = None, - cooldown: Optional[int] = None, - hide_history: Optional[bool] = None, - hide_history_before: Optional[datetime] = None, - reject_invite: Optional[bool] = None, - skip_push: Optional[bool] = None, - user_id: Optional[str] = None, - add_filter_tags: Optional[List[str]] = None, - add_members: Optional[List[ChannelMemberRequest]] = None, - add_moderators: Optional[List[str]] = None, - assign_roles: Optional[List[ChannelMemberRequest]] = None, - demote_moderators: Optional[List[str]] = None, - invites: Optional[List[ChannelMemberRequest]] = None, - remove_filter_tags: Optional[List[str]] = None, - remove_members: Optional[List[str]] = None, - data: Optional[ChannelInputRequest] = None, - message: Optional[MessageRequest] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateChannelResponse]: - path_params = { - "type": type, - "id": id, - } - json = UpdateChannelRequest( - accept_invite=accept_invite, - cooldown=cooldown, - hide_history=hide_history, - hide_history_before=hide_history_before, - reject_invite=reject_invite, - skip_push=skip_push, - user_id=user_id, - add_filter_tags=add_filter_tags, - add_members=add_members, - add_moderators=add_moderators, - assign_roles=assign_roles, - demote_moderators=demote_moderators, - invites=invites, - remove_filter_tags=remove_filter_tags, - remove_members=remove_members, - data=data, - message=message, - user=user, - ).to_dict() - return await self.post( - "/api/v2/chat/channels/{type}/{id}", - UpdateChannelResponse, - path_params=path_params, - json=json, - ) - + async def update_channel(self, type: str, id: str, accept_invite: Optional[bool] = None, cooldown: Optional[int] = None, hide_history: Optional[bool] = None, hide_history_before: Optional[datetime] = None, reject_invite: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, add_filter_tags: Optional[List[str]] = None, add_members: Optional[List[ChannelMemberRequest]] = None, add_moderators: Optional[List[str]] = None, assign_roles: Optional[List[ChannelMemberRequest]] = None, demote_moderators: Optional[List[str]] = None, invites: Optional[List[ChannelMemberRequest]] = None, remove_filter_tags: Optional[List[str]] = None, remove_members: Optional[List[str]] = None, data: Optional[ChannelInputRequest] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateChannelResponse]: + path_params = { + "type": type, "id": id, + } + json = UpdateChannelRequest(accept_invite=accept_invite, cooldown=cooldown, hide_history=hide_history, hide_history_before=hide_history_before, reject_invite=reject_invite, skip_push=skip_push, user_id=user_id, add_filter_tags=add_filter_tags, add_members=add_members, add_moderators=add_moderators, assign_roles=assign_roles, demote_moderators=demote_moderators, invites=invites, remove_filter_tags=remove_filter_tags, remove_members=remove_members, data=data, message=message, user=user).to_dict() + return await self.post("/api/v2/chat/channels/{type}/{id}", UpdateChannelResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.delete_draft") - async def delete_draft( - self, - type: str, - id: str, - parent_id: Optional[str] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[Response]: + async def delete_draft(self, type: str, id: str, parent_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(parent_id=parent_id, user_id=user_id) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return await self.delete( - "/api/v2/chat/channels/{type}/{id}/draft", - Response, - query_params=query_params, - path_params=path_params, - ) - + return await self.delete("/api/v2/chat/channels/{type}/{id}/draft", Response, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_draft") - async def get_draft( - self, - type: str, - id: str, - parent_id: Optional[str] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[GetDraftResponse]: + async def get_draft(self, type: str, id: str, parent_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[GetDraftResponse]: query_params = build_query_param(parent_id=parent_id, user_id=user_id) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return await self.get( - "/api/v2/chat/channels/{type}/{id}/draft", - GetDraftResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/chat/channels/{type}/{id}/draft", GetDraftResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.send_event") - async def send_event( - self, type: str, id: str, event: EventRequest - ) -> StreamResponse[EventResponse]: + async def send_event(self, type: str, id: str, event: EventRequest) -> StreamResponse[EventResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = SendEventRequest(event=event).to_dict() - return await self.post( - "/api/v2/chat/channels/{type}/{id}/event", - EventResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/chat/channels/{type}/{id}/event", EventResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.delete_channel_file") - async def delete_channel_file( - self, type: str, id: str, url: Optional[str] = None - ) -> StreamResponse[Response]: + async def delete_channel_file(self, type: str, id: str, url: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(url=url) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return await self.delete( - "/api/v2/chat/channels/{type}/{id}/file", - Response, - query_params=query_params, - path_params=path_params, - ) - + return await self.delete("/api/v2/chat/channels/{type}/{id}/file", Response, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.upload_channel_file") - async def upload_channel_file( - self, - type: str, - id: str, - file: Optional[str] = None, - user: Optional[OnlyUserID] = None, - ) -> StreamResponse[UploadChannelFileResponse]: + async def upload_channel_file(self, type: str, id: str, file: Optional[str] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[UploadChannelFileResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = UploadChannelFileRequest(file=file, user=user).to_dict() - return await self.post( - "/api/v2/chat/channels/{type}/{id}/file", - UploadChannelFileResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/chat/channels/{type}/{id}/file", UploadChannelFileResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.hide_channel") - async def hide_channel( - self, - type: str, - id: str, - clear_history: Optional[bool] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[HideChannelResponse]: - path_params = { - "type": type, - "id": id, - } - json = HideChannelRequest( - clear_history=clear_history, user_id=user_id, user=user - ).to_dict() - return await self.post( - "/api/v2/chat/channels/{type}/{id}/hide", - HideChannelResponse, - path_params=path_params, - json=json, - ) - + async def hide_channel(self, type: str, id: str, clear_history: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[HideChannelResponse]: + path_params = { + "type": type, "id": id, + } + json = HideChannelRequest(clear_history=clear_history, user_id=user_id, user=user).to_dict() + return await self.post("/api/v2/chat/channels/{type}/{id}/hide", HideChannelResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.delete_channel_image") - async def delete_channel_image( - self, type: str, id: str, url: Optional[str] = None - ) -> StreamResponse[Response]: + async def delete_channel_image(self, type: str, id: str, url: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(url=url) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return await self.delete( - "/api/v2/chat/channels/{type}/{id}/image", - Response, - query_params=query_params, - path_params=path_params, - ) - + return await self.delete("/api/v2/chat/channels/{type}/{id}/image", Response, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.upload_channel_image") - async def upload_channel_image( - self, - type: str, - id: str, - file: Optional[str] = None, - upload_sizes: Optional[List[ImageSize]] = None, - user: Optional[OnlyUserID] = None, - ) -> StreamResponse[UploadChannelResponse]: - path_params = { - "type": type, - "id": id, - } - json = UploadChannelRequest( - file=file, upload_sizes=upload_sizes, user=user - ).to_dict() - return await self.post( - "/api/v2/chat/channels/{type}/{id}/image", - UploadChannelResponse, - path_params=path_params, - json=json, - ) - + async def upload_channel_image(self, type: str, id: str, file: Optional[str] = None, upload_sizes: Optional[List[ImageSize]] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[UploadChannelResponse]: + path_params = { + "type": type, "id": id, + } + json = UploadChannelRequest(file=file, upload_sizes=upload_sizes, user=user).to_dict() + return await self.post("/api/v2/chat/channels/{type}/{id}/image", UploadChannelResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.update_member_partial") - async def update_member_partial( - self, - type: str, - id: str, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - ) -> StreamResponse[UpdateMemberPartialResponse]: + async def update_member_partial(self, type: str, id: str, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None) -> StreamResponse[UpdateMemberPartialResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = UpdateMemberPartialRequest(unset=unset, set=set).to_dict() - return await self.patch( - "/api/v2/chat/channels/{type}/{id}/member", - UpdateMemberPartialResponse, - query_params=query_params, - path_params=path_params, - json=json, - ) - + return await self.patch("/api/v2/chat/channels/{type}/{id}/member", UpdateMemberPartialResponse, query_params=query_params, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.send_message") - async def send_message( - self, - type: str, - id: str, - message: MessageRequest, - force_moderation: Optional[bool] = None, - include_channel_context: Optional[bool] = None, - include_mentioned_members: Optional[bool] = None, - keep_channel_hidden: Optional[bool] = None, - pending: Optional[bool] = None, - skip_enrich_url: Optional[bool] = None, - skip_push: Optional[bool] = None, - pending_message_metadata: Optional[Dict[str, str]] = None, - ) -> StreamResponse[SendMessageResponse]: - path_params = { - "type": type, - "id": id, - } - json = SendMessageRequest( - message=message, - force_moderation=force_moderation, - include_channel_context=include_channel_context, - include_mentioned_members=include_mentioned_members, - keep_channel_hidden=keep_channel_hidden, - pending=pending, - skip_enrich_url=skip_enrich_url, - skip_push=skip_push, - pending_message_metadata=pending_message_metadata, - ).to_dict() - return await self.post( - "/api/v2/chat/channels/{type}/{id}/message", - SendMessageResponse, - path_params=path_params, - json=json, - ) - + async def send_message(self, type: str, id: str, message: MessageRequest, force_moderation: Optional[bool] = None, include_channel_context: Optional[bool] = None, include_mentioned_members: Optional[bool] = None, keep_channel_hidden: Optional[bool] = None, pending: Optional[bool] = None, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, pending_message_metadata: Optional[Dict[str, str]] = None) -> StreamResponse[SendMessageResponse]: + path_params = { + "type": type, "id": id, + } + json = SendMessageRequest(message=message, force_moderation=force_moderation, include_channel_context=include_channel_context, include_mentioned_members=include_mentioned_members, keep_channel_hidden=keep_channel_hidden, pending=pending, skip_enrich_url=skip_enrich_url, skip_push=skip_push, pending_message_metadata=pending_message_metadata).to_dict() + return await self.post("/api/v2/chat/channels/{type}/{id}/message", SendMessageResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.get_many_messages") - async def get_many_messages( - self, - type: str, - id: str, - ids: List[str], - member_custom_include: Optional[List[str]] = None, - ) -> StreamResponse[GetManyMessagesResponse]: - query_params = build_query_param( - ids=ids, member_custom_include=member_custom_include - ) + async def get_many_messages(self, type: str, id: str, ids: List[str], member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetManyMessagesResponse]: + query_params = build_query_param(ids=ids, member_custom_include=member_custom_include) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return await self.get( - "/api/v2/chat/channels/{type}/{id}/messages", - GetManyMessagesResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/chat/channels/{type}/{id}/messages", GetManyMessagesResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_pinned_messages") - async def get_pinned_messages( - self, - type: str, - id: str, - limit: Optional[int] = None, - offset: Optional[int] = None, - id_gte: Optional[str] = None, - id_gt: Optional[str] = None, - id_lte: Optional[str] = None, - id_lt: Optional[str] = None, - pinned_at_after_or_equal: Optional[datetime] = None, - pinned_at_after: Optional[datetime] = None, - pinned_at_before_or_equal: Optional[datetime] = None, - pinned_at_before: Optional[datetime] = None, - id_around: Optional[str] = None, - pinned_at_around: Optional[datetime] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - member_custom_include: Optional[List[str]] = None, - ) -> StreamResponse[GetPinnedMessagesResponse]: - query_params = build_query_param( - limit=limit, - offset=offset, - id_gte=id_gte, - id_gt=id_gt, - id_lte=id_lte, - id_lt=id_lt, - pinned_at_after_or_equal=pinned_at_after_or_equal, - pinned_at_after=pinned_at_after, - pinned_at_before_or_equal=pinned_at_before_or_equal, - pinned_at_before=pinned_at_before, - id_around=id_around, - pinned_at_around=pinned_at_around, - user_id=user_id, - sort=sort, - member_custom_include=member_custom_include, - ) + async def get_pinned_messages(self, type: str, id: str, limit: Optional[int] = None, offset: Optional[int] = None, id_gte: Optional[str] = None, id_gt: Optional[str] = None, id_lte: Optional[str] = None, id_lt: Optional[str] = None, pinned_at_after_or_equal: Optional[datetime] = None, pinned_at_after: Optional[datetime] = None, pinned_at_before_or_equal: Optional[datetime] = None, pinned_at_before: Optional[datetime] = None, id_around: Optional[str] = None, pinned_at_around: Optional[datetime] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetPinnedMessagesResponse]: + query_params = build_query_param(limit=limit, offset=offset, id_gte=id_gte, id_gt=id_gt, id_lte=id_lte, id_lt=id_lt, pinned_at_after_or_equal=pinned_at_after_or_equal, pinned_at_after=pinned_at_after, pinned_at_before_or_equal=pinned_at_before_or_equal, pinned_at_before=pinned_at_before, id_around=id_around, pinned_at_around=pinned_at_around, user_id=user_id, sort=sort, member_custom_include=member_custom_include) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return await self.get( - "/api/v2/chat/channels/{type}/{id}/pinned_messages", - GetPinnedMessagesResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/chat/channels/{type}/{id}/pinned_messages", GetPinnedMessagesResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_or_create_channel") - async def get_or_create_channel( - self, - type: str, - id: str, - hide_for_creator: Optional[bool] = None, - state: Optional[bool] = None, - thread_unread_counts: Optional[bool] = None, - member_custom_include: Optional[List[str]] = None, - data: Optional[ChannelInput] = None, - members: Optional[PaginationParams] = None, - messages: Optional[MessagePaginationParams] = None, - watchers: Optional[PaginationParams] = None, - ) -> StreamResponse[ChannelStateResponse]: - path_params = { - "type": type, - "id": id, - } - json = ChannelGetOrCreateRequest( - hide_for_creator=hide_for_creator, - state=state, - thread_unread_counts=thread_unread_counts, - member_custom_include=member_custom_include, - data=data, - members=members, - messages=messages, - watchers=watchers, - ).to_dict() - return await self.post( - "/api/v2/chat/channels/{type}/{id}/query", - ChannelStateResponse, - path_params=path_params, - json=json, - ) - + async def get_or_create_channel(self, type: str, id: str, hide_for_creator: Optional[bool] = None, state: Optional[bool] = None, thread_unread_counts: Optional[bool] = None, member_custom_include: Optional[List[str]] = None, data: Optional[ChannelInput] = None, members: Optional[PaginationParams] = None, messages: Optional[MessagePaginationParams] = None, watchers: Optional[PaginationParams] = None) -> StreamResponse[ChannelStateResponse]: + path_params = { + "type": type, "id": id, + } + json = ChannelGetOrCreateRequest(hide_for_creator=hide_for_creator, state=state, thread_unread_counts=thread_unread_counts, member_custom_include=member_custom_include, data=data, members=members, messages=messages, watchers=watchers).to_dict() + return await self.post("/api/v2/chat/channels/{type}/{id}/query", ChannelStateResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.mark_read") - async def mark_read( - self, - type: str, - id: str, - message_id: Optional[str] = None, - thread_id: Optional[str] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[MarkReadResponse]: - path_params = { - "type": type, - "id": id, - } - json = MarkReadRequest( - message_id=message_id, thread_id=thread_id, user_id=user_id, user=user - ).to_dict() - return await self.post( - "/api/v2/chat/channels/{type}/{id}/read", - MarkReadResponse, - path_params=path_params, - json=json, - ) - + async def mark_read(self, type: str, id: str, message_id: Optional[str] = None, thread_id: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[MarkReadResponse]: + path_params = { + "type": type, "id": id, + } + json = MarkReadRequest(message_id=message_id, thread_id=thread_id, user_id=user_id, user=user).to_dict() + return await self.post("/api/v2/chat/channels/{type}/{id}/read", MarkReadResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.show_channel") - async def show_channel( - self, - type: str, - id: str, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[ShowChannelResponse]: + async def show_channel(self, type: str, id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[ShowChannelResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = ShowChannelRequest(user_id=user_id, user=user).to_dict() - return await self.post( - "/api/v2/chat/channels/{type}/{id}/show", - ShowChannelResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/chat/channels/{type}/{id}/show", ShowChannelResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.truncate_channel") - async def truncate_channel( - self, - type: str, - id: str, - hard_delete: Optional[bool] = None, - skip_push: Optional[bool] = None, - truncated_at: Optional[datetime] = None, - user_id: Optional[str] = None, - member_ids: Optional[List[str]] = None, - message: Optional[MessageRequest] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[TruncateChannelResponse]: - path_params = { - "type": type, - "id": id, - } - json = TruncateChannelRequest( - hard_delete=hard_delete, - skip_push=skip_push, - truncated_at=truncated_at, - user_id=user_id, - member_ids=member_ids, - message=message, - user=user, - ).to_dict() - return await self.post( - "/api/v2/chat/channels/{type}/{id}/truncate", - TruncateChannelResponse, - path_params=path_params, - json=json, - ) - + async def truncate_channel(self, type: str, id: str, hard_delete: Optional[bool] = None, skip_push: Optional[bool] = None, truncated_at: Optional[datetime] = None, user_id: Optional[str] = None, member_ids: Optional[List[str]] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[TruncateChannelResponse]: + path_params = { + "type": type, "id": id, + } + json = TruncateChannelRequest(hard_delete=hard_delete, skip_push=skip_push, truncated_at=truncated_at, user_id=user_id, member_ids=member_ids, message=message, user=user).to_dict() + return await self.post("/api/v2/chat/channels/{type}/{id}/truncate", TruncateChannelResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.mark_unread") - async def mark_unread( - self, - type: str, - id: str, - message_id: Optional[str] = None, - message_timestamp: Optional[datetime] = None, - thread_id: Optional[str] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[Response]: - path_params = { - "type": type, - "id": id, - } - json = MarkUnreadRequest( - message_id=message_id, - message_timestamp=message_timestamp, - thread_id=thread_id, - user_id=user_id, - user=user, - ).to_dict() - return await self.post( - "/api/v2/chat/channels/{type}/{id}/unread", - Response, - path_params=path_params, - json=json, - ) - + async def mark_unread(self, type: str, id: str, message_id: Optional[str] = None, message_timestamp: Optional[datetime] = None, thread_id: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[Response]: + path_params = { + "type": type, "id": id, + } + json = MarkUnreadRequest(message_id=message_id, message_timestamp=message_timestamp, thread_id=thread_id, user_id=user_id, user=user).to_dict() + return await self.post("/api/v2/chat/channels/{type}/{id}/unread", Response, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.list_channel_types") async def list_channel_types(self) -> StreamResponse[ListChannelTypesResponse]: return await self.get("/api/v2/chat/channeltypes", ListChannelTypesResponse) - + @telemetry.operation_name("getstream.api.chat.create_channel_type") - async def create_channel_type( - self, - automod: str, - automod_behavior: str, - max_message_length: int, - name: str, - blocklist: Optional[str] = None, - blocklist_behavior: Optional[str] = None, - connect_events: Optional[bool] = None, - count_messages: Optional[bool] = None, - custom_events: Optional[bool] = None, - delivery_events: Optional[bool] = None, - mark_messages_pending: Optional[bool] = None, - message_retention: Optional[str] = None, - mutes: Optional[bool] = None, - partition_size: Optional[int] = None, - partition_ttl: Optional[str] = None, - polls: Optional[bool] = None, - push_level: Optional[str] = None, - push_notifications: Optional[bool] = None, - reactions: Optional[bool] = None, - read_events: Optional[bool] = None, - replies: Optional[bool] = None, - search: Optional[bool] = None, - shared_locations: Optional[bool] = None, - skip_last_msg_update_for_system_msgs: Optional[bool] = None, - typing_events: Optional[bool] = None, - uploads: Optional[bool] = None, - url_enrichment: Optional[bool] = None, - user_message_reminders: Optional[bool] = None, - blocklists: Optional[List[BlockListOptions]] = None, - commands: Optional[List[str]] = None, - permissions: Optional[List[PolicyRequest]] = None, - chat_preferences: Optional[ChatPreferences] = None, - grants: Optional[Dict[str, List[str]]] = None, - ) -> StreamResponse[CreateChannelTypeResponse]: - json = CreateChannelTypeRequest( - automod=automod, - automod_behavior=automod_behavior, - max_message_length=max_message_length, - name=name, - blocklist=blocklist, - blocklist_behavior=blocklist_behavior, - connect_events=connect_events, - count_messages=count_messages, - custom_events=custom_events, - delivery_events=delivery_events, - mark_messages_pending=mark_messages_pending, - message_retention=message_retention, - mutes=mutes, - partition_size=partition_size, - partition_ttl=partition_ttl, - polls=polls, - push_level=push_level, - push_notifications=push_notifications, - reactions=reactions, - read_events=read_events, - replies=replies, - search=search, - shared_locations=shared_locations, - skip_last_msg_update_for_system_msgs=skip_last_msg_update_for_system_msgs, - typing_events=typing_events, - uploads=uploads, - url_enrichment=url_enrichment, - user_message_reminders=user_message_reminders, - blocklists=blocklists, - commands=commands, - permissions=permissions, - chat_preferences=chat_preferences, - grants=grants, - ).to_dict() - return await self.post( - "/api/v2/chat/channeltypes", CreateChannelTypeResponse, json=json - ) - + async def create_channel_type(self, automod: str, automod_behavior: str, max_message_length: int, name: str, blocklist: Optional[str] = None, blocklist_behavior: Optional[str] = None, connect_events: Optional[bool] = None, count_messages: Optional[bool] = None, custom_events: Optional[bool] = None, delivery_events: Optional[bool] = None, mark_messages_pending: Optional[bool] = None, message_retention: Optional[str] = None, mutes: Optional[bool] = None, partition_size: Optional[int] = None, partition_ttl: Optional[str] = None, polls: Optional[bool] = None, push_level: Optional[str] = None, push_notifications: Optional[bool] = None, reactions: Optional[bool] = None, read_events: Optional[bool] = None, replies: Optional[bool] = None, search: Optional[bool] = None, shared_locations: Optional[bool] = None, skip_last_msg_update_for_system_msgs: Optional[bool] = None, typing_events: Optional[bool] = None, uploads: Optional[bool] = None, url_enrichment: Optional[bool] = None, user_message_reminders: Optional[bool] = None, blocklists: Optional[List[BlockListOptions]] = None, commands: Optional[List[str]] = None, permissions: Optional[List[PolicyRequest]] = None, chat_preferences: Optional[ChatPreferences] = None, grants: Optional[Dict[str, List[str]]] = None) -> StreamResponse[CreateChannelTypeResponse]: + json = CreateChannelTypeRequest(automod=automod, automod_behavior=automod_behavior, max_message_length=max_message_length, name=name, blocklist=blocklist, blocklist_behavior=blocklist_behavior, connect_events=connect_events, count_messages=count_messages, custom_events=custom_events, delivery_events=delivery_events, mark_messages_pending=mark_messages_pending, message_retention=message_retention, mutes=mutes, partition_size=partition_size, partition_ttl=partition_ttl, polls=polls, push_level=push_level, push_notifications=push_notifications, reactions=reactions, read_events=read_events, replies=replies, search=search, shared_locations=shared_locations, skip_last_msg_update_for_system_msgs=skip_last_msg_update_for_system_msgs, typing_events=typing_events, uploads=uploads, url_enrichment=url_enrichment, user_message_reminders=user_message_reminders, blocklists=blocklists, commands=commands, permissions=permissions, chat_preferences=chat_preferences, grants=grants).to_dict() + return await self.post("/api/v2/chat/channeltypes", CreateChannelTypeResponse, json=json) + @telemetry.operation_name("getstream.api.chat.delete_channel_type") async def delete_channel_type(self, name: str) -> StreamResponse[Response]: path_params = { - "name": name, + "name": name, } - return await self.delete( - "/api/v2/chat/channeltypes/{name}", Response, path_params=path_params - ) - + return await self.delete("/api/v2/chat/channeltypes/{name}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_channel_type") - async def get_channel_type( - self, name: str - ) -> StreamResponse[GetChannelTypeResponse]: + async def get_channel_type(self, name: str) -> StreamResponse[GetChannelTypeResponse]: path_params = { - "name": name, + "name": name, } - return await self.get( - "/api/v2/chat/channeltypes/{name}", - GetChannelTypeResponse, - path_params=path_params, - ) - + return await self.get("/api/v2/chat/channeltypes/{name}", GetChannelTypeResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_channel_type") - async def update_channel_type( - self, - name: str, - automod: str, - automod_behavior: str, - max_message_length: int, - blocklist: Optional[str] = None, - blocklist_behavior: Optional[str] = None, - connect_events: Optional[bool] = None, - count_messages: Optional[bool] = None, - custom_events: Optional[bool] = None, - delivery_events: Optional[bool] = None, - mark_messages_pending: Optional[bool] = None, - message_retention: Optional[str] = None, - mutes: Optional[bool] = None, - partition_size: Optional[int] = None, - partition_ttl: Optional[str] = None, - polls: Optional[bool] = None, - push_level: Optional[str] = None, - push_notifications: Optional[bool] = None, - quotes: Optional[bool] = None, - reactions: Optional[bool] = None, - read_events: Optional[bool] = None, - reminders: Optional[bool] = None, - replies: Optional[bool] = None, - search: Optional[bool] = None, - shared_locations: Optional[bool] = None, - skip_last_msg_update_for_system_msgs: Optional[bool] = None, - typing_events: Optional[bool] = None, - uploads: Optional[bool] = None, - url_enrichment: Optional[bool] = None, - user_message_reminders: Optional[bool] = None, - allowed_flag_reasons: Optional[List[str]] = None, - blocklists: Optional[List[BlockListOptions]] = None, - commands: Optional[List[str]] = None, - permissions: Optional[List[PolicyRequest]] = None, - automod_thresholds: Optional[Thresholds] = None, - chat_preferences: Optional[ChatPreferences] = None, - grants: Optional[Dict[str, List[str]]] = None, - ) -> StreamResponse[UpdateChannelTypeResponse]: - path_params = { - "name": name, - } - json = UpdateChannelTypeRequest( - automod=automod, - automod_behavior=automod_behavior, - max_message_length=max_message_length, - blocklist=blocklist, - blocklist_behavior=blocklist_behavior, - connect_events=connect_events, - count_messages=count_messages, - custom_events=custom_events, - delivery_events=delivery_events, - mark_messages_pending=mark_messages_pending, - message_retention=message_retention, - mutes=mutes, - partition_size=partition_size, - partition_ttl=partition_ttl, - polls=polls, - push_level=push_level, - push_notifications=push_notifications, - quotes=quotes, - reactions=reactions, - read_events=read_events, - reminders=reminders, - replies=replies, - search=search, - shared_locations=shared_locations, - skip_last_msg_update_for_system_msgs=skip_last_msg_update_for_system_msgs, - typing_events=typing_events, - uploads=uploads, - url_enrichment=url_enrichment, - user_message_reminders=user_message_reminders, - allowed_flag_reasons=allowed_flag_reasons, - blocklists=blocklists, - commands=commands, - permissions=permissions, - automod_thresholds=automod_thresholds, - chat_preferences=chat_preferences, - grants=grants, - ).to_dict() - return await self.put( - "/api/v2/chat/channeltypes/{name}", - UpdateChannelTypeResponse, - path_params=path_params, - json=json, - ) - + async def update_channel_type(self, name: str, automod: str, automod_behavior: str, max_message_length: int, blocklist: Optional[str] = None, blocklist_behavior: Optional[str] = None, connect_events: Optional[bool] = None, count_messages: Optional[bool] = None, custom_events: Optional[bool] = None, delivery_events: Optional[bool] = None, mark_messages_pending: Optional[bool] = None, message_retention: Optional[str] = None, mutes: Optional[bool] = None, partition_size: Optional[int] = None, partition_ttl: Optional[str] = None, polls: Optional[bool] = None, push_level: Optional[str] = None, push_notifications: Optional[bool] = None, quotes: Optional[bool] = None, reactions: Optional[bool] = None, read_events: Optional[bool] = None, reminders: Optional[bool] = None, replies: Optional[bool] = None, search: Optional[bool] = None, shared_locations: Optional[bool] = None, skip_last_msg_update_for_system_msgs: Optional[bool] = None, typing_events: Optional[bool] = None, uploads: Optional[bool] = None, url_enrichment: Optional[bool] = None, user_message_reminders: Optional[bool] = None, allowed_flag_reasons: Optional[List[str]] = None, blocklists: Optional[List[BlockListOptions]] = None, commands: Optional[List[str]] = None, permissions: Optional[List[PolicyRequest]] = None, automod_thresholds: Optional[Thresholds] = None, chat_preferences: Optional[ChatPreferences] = None, grants: Optional[Dict[str, List[str]]] = None) -> StreamResponse[UpdateChannelTypeResponse]: + path_params = { + "name": name, + } + json = UpdateChannelTypeRequest(automod=automod, automod_behavior=automod_behavior, max_message_length=max_message_length, blocklist=blocklist, blocklist_behavior=blocklist_behavior, connect_events=connect_events, count_messages=count_messages, custom_events=custom_events, delivery_events=delivery_events, mark_messages_pending=mark_messages_pending, message_retention=message_retention, mutes=mutes, partition_size=partition_size, partition_ttl=partition_ttl, polls=polls, push_level=push_level, push_notifications=push_notifications, quotes=quotes, reactions=reactions, read_events=read_events, reminders=reminders, replies=replies, search=search, shared_locations=shared_locations, skip_last_msg_update_for_system_msgs=skip_last_msg_update_for_system_msgs, typing_events=typing_events, uploads=uploads, url_enrichment=url_enrichment, user_message_reminders=user_message_reminders, allowed_flag_reasons=allowed_flag_reasons, blocklists=blocklists, commands=commands, permissions=permissions, automod_thresholds=automod_thresholds, chat_preferences=chat_preferences, grants=grants).to_dict() + return await self.put("/api/v2/chat/channeltypes/{name}", UpdateChannelTypeResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.list_commands") async def list_commands(self) -> StreamResponse[ListCommandsResponse]: return await self.get("/api/v2/chat/commands", ListCommandsResponse) - + @telemetry.operation_name("getstream.api.chat.create_command") - async def create_command( - self, - description: str, - name: str, - args: Optional[str] = None, - set: Optional[str] = None, - ) -> StreamResponse[CreateCommandResponse]: - json = CreateCommandRequest( - description=description, name=name, args=args, set=set - ).to_dict() - return await self.post( - "/api/v2/chat/commands", CreateCommandResponse, json=json - ) - + async def create_command(self, description: str, name: str, args: Optional[str] = None, set: Optional[str] = None) -> StreamResponse[CreateCommandResponse]: + json = CreateCommandRequest(description=description, name=name, args=args, set=set).to_dict() + return await self.post("/api/v2/chat/commands", CreateCommandResponse, json=json) + @telemetry.operation_name("getstream.api.chat.delete_command") async def delete_command(self, name: str) -> StreamResponse[DeleteCommandResponse]: path_params = { - "name": name, + "name": name, } - return await self.delete( - "/api/v2/chat/commands/{name}", - DeleteCommandResponse, - path_params=path_params, - ) - + return await self.delete("/api/v2/chat/commands/{name}", DeleteCommandResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_command") async def get_command(self, name: str) -> StreamResponse[GetCommandResponse]: path_params = { - "name": name, + "name": name, } - return await self.get( - "/api/v2/chat/commands/{name}", GetCommandResponse, path_params=path_params - ) - + return await self.get("/api/v2/chat/commands/{name}", GetCommandResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_command") - async def update_command( - self, - name: str, - description: str, - args: Optional[str] = None, - set: Optional[str] = None, - ) -> StreamResponse[UpdateCommandResponse]: - path_params = { - "name": name, - } - json = UpdateCommandRequest( - description=description, args=args, set=set - ).to_dict() - return await self.put( - "/api/v2/chat/commands/{name}", - UpdateCommandResponse, - path_params=path_params, - json=json, - ) - + async def update_command(self, name: str, description: str, args: Optional[str] = None, set: Optional[str] = None) -> StreamResponse[UpdateCommandResponse]: + path_params = { + "name": name, + } + json = UpdateCommandRequest(description=description, args=args, set=set).to_dict() + return await self.put("/api/v2/chat/commands/{name}", UpdateCommandResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.query_drafts") - async def query_drafts( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryDraftsResponse]: - json = QueryDraftsRequest( - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return await self.post( - "/api/v2/chat/drafts/query", QueryDraftsResponse, json=json - ) - + async def query_drafts(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryDraftsResponse]: + json = QueryDraftsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return await self.post("/api/v2/chat/drafts/query", QueryDraftsResponse, json=json) + @telemetry.operation_name("getstream.api.chat.export_channels") - async def export_channels( - self, - channels: List[ChannelExport], - clear_deleted_message_text: Optional[bool] = None, - export_users: Optional[bool] = None, - format: Optional[str] = None, - include_soft_deleted_channels: Optional[bool] = None, - include_truncated_messages: Optional[bool] = None, - version: Optional[str] = None, - include_fields: Optional[List[str]] = None, - ) -> StreamResponse[ExportChannelsResponse]: - json = ExportChannelsRequest( - channels=channels, - clear_deleted_message_text=clear_deleted_message_text, - export_users=export_users, - format=format, - include_soft_deleted_channels=include_soft_deleted_channels, - include_truncated_messages=include_truncated_messages, - version=version, - include_fields=include_fields, - ).to_dict() - return await self.post( - "/api/v2/chat/export_channels", ExportChannelsResponse, json=json - ) - + async def export_channels(self, channels: List[ChannelExport], clear_deleted_message_text: Optional[bool] = None, export_users: Optional[bool] = None, format: Optional[str] = None, include_soft_deleted_channels: Optional[bool] = None, include_truncated_messages: Optional[bool] = None, version: Optional[str] = None, include_fields: Optional[List[str]] = None) -> StreamResponse[ExportChannelsResponse]: + json = ExportChannelsRequest(channels=channels, clear_deleted_message_text=clear_deleted_message_text, export_users=export_users, format=format, include_soft_deleted_channels=include_soft_deleted_channels, include_truncated_messages=include_truncated_messages, version=version, include_fields=include_fields).to_dict() + return await self.post("/api/v2/chat/export_channels", ExportChannelsResponse, json=json) + @telemetry.operation_name("getstream.api.chat.query_members") - async def query_members( - self, payload: Optional[QueryMembersPayload] = None - ) -> StreamResponse[MembersResponse]: + async def query_members(self, payload: Optional[QueryMembersPayload] = None) -> StreamResponse[MembersResponse]: query_params = build_query_param(payload=payload) - return await self.get( - "/api/v2/chat/members", MembersResponse, query_params=query_params - ) - + return await self.get("/api/v2/chat/members", MembersResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.chat.query_message_history") - async def query_message_history( - self, - filter: Dict[str, object], - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - ) -> StreamResponse[QueryMessageHistoryResponse]: - json = QueryMessageHistoryRequest( - filter=filter, limit=limit, next=next, prev=prev, sort=sort - ).to_dict() - return await self.post( - "/api/v2/chat/messages/history", QueryMessageHistoryResponse, json=json - ) - + async def query_message_history(self, filter: Dict[str, object], limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None) -> StreamResponse[QueryMessageHistoryResponse]: + json = QueryMessageHistoryRequest(filter=filter, limit=limit, next=next, prev=prev, sort=sort).to_dict() + return await self.post("/api/v2/chat/messages/history", QueryMessageHistoryResponse, json=json) + @telemetry.operation_name("getstream.api.chat.delete_message") - async def delete_message( - self, - id: str, - hard: Optional[bool] = None, - deleted_by: Optional[str] = None, - delete_for_me: Optional[bool] = None, - ) -> StreamResponse[DeleteMessageResponse]: - query_params = build_query_param( - hard=hard, deleted_by=deleted_by, delete_for_me=delete_for_me - ) + async def delete_message(self, id: str, hard: Optional[bool] = None, deleted_by: Optional[str] = None, delete_for_me: Optional[bool] = None) -> StreamResponse[DeleteMessageResponse]: + query_params = build_query_param(hard=hard, deleted_by=deleted_by, delete_for_me=delete_for_me) path_params = { - "id": id, + "id": id, } - return await self.delete( - "/api/v2/chat/messages/{id}", - DeleteMessageResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.delete("/api/v2/chat/messages/{id}", DeleteMessageResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_message") - async def get_message( - self, id: str, show_deleted_message: Optional[bool] = None - ) -> StreamResponse[GetMessageResponse]: + async def get_message(self, id: str, show_deleted_message: Optional[bool] = None) -> StreamResponse[GetMessageResponse]: query_params = build_query_param(show_deleted_message=show_deleted_message) path_params = { - "id": id, + "id": id, } - return await self.get( - "/api/v2/chat/messages/{id}", - GetMessageResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/chat/messages/{id}", GetMessageResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_message") - async def update_message( - self, - id: str, - message: MessageRequest, - skip_enrich_url: Optional[bool] = None, - skip_push: Optional[bool] = None, - ) -> StreamResponse[UpdateMessageResponse]: - path_params = { - "id": id, - } - json = UpdateMessageRequest( - message=message, skip_enrich_url=skip_enrich_url, skip_push=skip_push - ).to_dict() - return await self.post( - "/api/v2/chat/messages/{id}", - UpdateMessageResponse, - path_params=path_params, - json=json, - ) - + async def update_message(self, id: str, message: MessageRequest, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None) -> StreamResponse[UpdateMessageResponse]: + path_params = { + "id": id, + } + json = UpdateMessageRequest(message=message, skip_enrich_url=skip_enrich_url, skip_push=skip_push).to_dict() + return await self.post("/api/v2/chat/messages/{id}", UpdateMessageResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.update_message_partial") - async def update_message_partial( - self, - id: str, - skip_enrich_url: Optional[bool] = None, - skip_push: Optional[bool] = None, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateMessagePartialResponse]: - path_params = { - "id": id, - } - json = UpdateMessagePartialRequest( - skip_enrich_url=skip_enrich_url, - skip_push=skip_push, - user_id=user_id, - unset=unset, - set=set, - user=user, - ).to_dict() - return await self.put( - "/api/v2/chat/messages/{id}", - UpdateMessagePartialResponse, - path_params=path_params, - json=json, - ) - + async def update_message_partial(self, id: str, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateMessagePartialResponse]: + path_params = { + "id": id, + } + json = UpdateMessagePartialRequest(skip_enrich_url=skip_enrich_url, skip_push=skip_push, user_id=user_id, unset=unset, set=set, user=user).to_dict() + return await self.put("/api/v2/chat/messages/{id}", UpdateMessagePartialResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.run_message_action") - async def run_message_action( - self, - id: str, - form_data: Dict[str, str], - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[MessageActionResponse]: - path_params = { - "id": id, - } - json = MessageActionRequest( - form_data=form_data, user_id=user_id, user=user - ).to_dict() - return await self.post( - "/api/v2/chat/messages/{id}/action", - MessageActionResponse, - path_params=path_params, - json=json, - ) - + async def run_message_action(self, id: str, form_data: Dict[str, str], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[MessageActionResponse]: + path_params = { + "id": id, + } + json = MessageActionRequest(form_data=form_data, user_id=user_id, user=user).to_dict() + return await self.post("/api/v2/chat/messages/{id}/action", MessageActionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.commit_message") - async def commit_message( - self, - id: str, - ) -> StreamResponse[MessageActionResponse]: + async def commit_message(self, id: str, ) -> StreamResponse[MessageActionResponse]: path_params = { - "id": id, + "id": id, } json = CommitMessageRequest().to_dict() - return await self.post( - "/api/v2/chat/messages/{id}/commit", - MessageActionResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/chat/messages/{id}/commit", MessageActionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.ephemeral_message_update") - async def ephemeral_message_update( - self, - id: str, - skip_enrich_url: Optional[bool] = None, - skip_push: Optional[bool] = None, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateMessagePartialResponse]: - path_params = { - "id": id, - } - json = UpdateMessagePartialRequest( - skip_enrich_url=skip_enrich_url, - skip_push=skip_push, - user_id=user_id, - unset=unset, - set=set, - user=user, - ).to_dict() - return await self.patch( - "/api/v2/chat/messages/{id}/ephemeral", - UpdateMessagePartialResponse, - path_params=path_params, - json=json, - ) - + async def ephemeral_message_update(self, id: str, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateMessagePartialResponse]: + path_params = { + "id": id, + } + json = UpdateMessagePartialRequest(skip_enrich_url=skip_enrich_url, skip_push=skip_push, user_id=user_id, unset=unset, set=set, user=user).to_dict() + return await self.patch("/api/v2/chat/messages/{id}/ephemeral", UpdateMessagePartialResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.send_reaction") - async def send_reaction( - self, - id: str, - reaction: ReactionRequest, - enforce_unique: Optional[bool] = None, - skip_push: Optional[bool] = None, - ) -> StreamResponse[SendReactionResponse]: - path_params = { - "id": id, - } - json = SendReactionRequest( - reaction=reaction, enforce_unique=enforce_unique, skip_push=skip_push - ).to_dict() - return await self.post( - "/api/v2/chat/messages/{id}/reaction", - SendReactionResponse, - path_params=path_params, - json=json, - ) - + async def send_reaction(self, id: str, reaction: ReactionRequest, enforce_unique: Optional[bool] = None, skip_push: Optional[bool] = None) -> StreamResponse[SendReactionResponse]: + path_params = { + "id": id, + } + json = SendReactionRequest(reaction=reaction, enforce_unique=enforce_unique, skip_push=skip_push).to_dict() + return await self.post("/api/v2/chat/messages/{id}/reaction", SendReactionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.delete_reaction") - async def delete_reaction( - self, id: str, type: str, user_id: Optional[str] = None - ) -> StreamResponse[DeleteReactionResponse]: + async def delete_reaction(self, id: str, type: str, user_id: Optional[str] = None) -> StreamResponse[DeleteReactionResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "id": id, - "type": type, + "id": id, "type": type, } - return await self.delete( - "/api/v2/chat/messages/{id}/reaction/{type}", - DeleteReactionResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.delete("/api/v2/chat/messages/{id}/reaction/{type}", DeleteReactionResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_reactions") - async def get_reactions( - self, id: str, limit: Optional[int] = None, offset: Optional[int] = None - ) -> StreamResponse[GetReactionsResponse]: + async def get_reactions(self, id: str, limit: Optional[int] = None, offset: Optional[int] = None) -> StreamResponse[GetReactionsResponse]: query_params = build_query_param(limit=limit, offset=offset) path_params = { - "id": id, + "id": id, } - return await self.get( - "/api/v2/chat/messages/{id}/reactions", - GetReactionsResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/chat/messages/{id}/reactions", GetReactionsResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.query_reactions") - async def query_reactions( - self, - id: str, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryReactionsResponse]: - path_params = { - "id": id, - } - json = QueryReactionsRequest( - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return await self.post( - "/api/v2/chat/messages/{id}/reactions", - QueryReactionsResponse, - path_params=path_params, - json=json, - ) - + async def query_reactions(self, id: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryReactionsResponse]: + path_params = { + "id": id, + } + json = QueryReactionsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return await self.post("/api/v2/chat/messages/{id}/reactions", QueryReactionsResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.translate_message") - async def translate_message( - self, id: str, language: str - ) -> StreamResponse[MessageActionResponse]: + async def translate_message(self, id: str, language: str) -> StreamResponse[TranslateMessageResponse]: path_params = { - "id": id, + "id": id, } json = TranslateMessageRequest(language=language).to_dict() - return await self.post( - "/api/v2/chat/messages/{id}/translate", - MessageActionResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/chat/messages/{id}/translate", TranslateMessageResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.undelete_message") - async def undelete_message( - self, id: str, undeleted_by: str - ) -> StreamResponse[UndeleteMessageResponse]: + async def undelete_message(self, id: str, undeleted_by: str) -> StreamResponse[UndeleteMessageResponse]: path_params = { - "id": id, + "id": id, } json = UndeleteMessageRequest(undeleted_by=undeleted_by).to_dict() - return await self.post( - "/api/v2/chat/messages/{id}/undelete", - UndeleteMessageResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/chat/messages/{id}/undelete", UndeleteMessageResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.cast_poll_vote") - async def cast_poll_vote( - self, - message_id: str, - poll_id: str, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - vote: Optional[VoteData] = None, - ) -> StreamResponse[PollVoteResponse]: - path_params = { - "message_id": message_id, - "poll_id": poll_id, + async def cast_poll_vote(self, message_id: str, poll_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None, vote: Optional[VoteData] = None) -> StreamResponse[PollVoteResponse]: + path_params = { + "message_id": message_id, "poll_id": poll_id, } json = CastPollVoteRequest(user_id=user_id, user=user, vote=vote).to_dict() - return await self.post( - "/api/v2/chat/messages/{message_id}/polls/{poll_id}/vote", - PollVoteResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/chat/messages/{message_id}/polls/{poll_id}/vote", PollVoteResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.delete_poll_vote") - async def delete_poll_vote( - self, message_id: str, poll_id: str, vote_id: str, user_id: Optional[str] = None - ) -> StreamResponse[PollVoteResponse]: + async def delete_poll_vote(self, message_id: str, poll_id: str, vote_id: str, user_id: Optional[str] = None) -> StreamResponse[PollVoteResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "message_id": message_id, - "poll_id": poll_id, - "vote_id": vote_id, + "message_id": message_id, "poll_id": poll_id, "vote_id": vote_id, } - return await self.delete( - "/api/v2/chat/messages/{message_id}/polls/{poll_id}/vote/{vote_id}", - PollVoteResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.delete("/api/v2/chat/messages/{message_id}/polls/{poll_id}/vote/{vote_id}", PollVoteResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.delete_reminder") - async def delete_reminder( - self, message_id: str, user_id: Optional[str] = None - ) -> StreamResponse[DeleteReminderResponse]: + async def delete_reminder(self, message_id: str, user_id: Optional[str] = None) -> StreamResponse[DeleteReminderResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "message_id": message_id, + "message_id": message_id, } - return await self.delete( - "/api/v2/chat/messages/{message_id}/reminders", - DeleteReminderResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.delete("/api/v2/chat/messages/{message_id}/reminders", DeleteReminderResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_reminder") - async def update_reminder( - self, - message_id: str, - remind_at: Optional[datetime] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateReminderResponse]: - path_params = { - "message_id": message_id, - } - json = UpdateReminderRequest( - remind_at=remind_at, user_id=user_id, user=user - ).to_dict() - return await self.patch( - "/api/v2/chat/messages/{message_id}/reminders", - UpdateReminderResponse, - path_params=path_params, - json=json, - ) - + async def update_reminder(self, message_id: str, remind_at: Optional[datetime] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateReminderResponse]: + path_params = { + "message_id": message_id, + } + json = UpdateReminderRequest(remind_at=remind_at, user_id=user_id, user=user).to_dict() + return await self.patch("/api/v2/chat/messages/{message_id}/reminders", UpdateReminderResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.create_reminder") - async def create_reminder( - self, - message_id: str, - remind_at: Optional[datetime] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[ReminderResponseData]: - path_params = { - "message_id": message_id, - } - json = CreateReminderRequest( - remind_at=remind_at, user_id=user_id, user=user - ).to_dict() - return await self.post( - "/api/v2/chat/messages/{message_id}/reminders", - ReminderResponseData, - path_params=path_params, - json=json, - ) - + async def create_reminder(self, message_id: str, remind_at: Optional[datetime] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CreateReminderResponse]: + path_params = { + "message_id": message_id, + } + json = CreateReminderRequest(remind_at=remind_at, user_id=user_id, user=user).to_dict() + return await self.post("/api/v2/chat/messages/{message_id}/reminders", CreateReminderResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.get_replies") - async def get_replies( - self, - parent_id: str, - limit: Optional[int] = None, - id_gte: Optional[str] = None, - id_gt: Optional[str] = None, - id_lte: Optional[str] = None, - id_lt: Optional[str] = None, - id_around: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - member_custom_include: Optional[List[str]] = None, - ) -> StreamResponse[GetRepliesResponse]: - query_params = build_query_param( - limit=limit, - id_gte=id_gte, - id_gt=id_gt, - id_lte=id_lte, - id_lt=id_lt, - id_around=id_around, - sort=sort, - member_custom_include=member_custom_include, - ) + async def get_replies(self, parent_id: str, limit: Optional[int] = None, id_gte: Optional[str] = None, id_gt: Optional[str] = None, id_lte: Optional[str] = None, id_lt: Optional[str] = None, id_around: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetRepliesResponse]: + query_params = build_query_param(limit=limit, id_gte=id_gte, id_gt=id_gt, id_lte=id_lte, id_lt=id_lt, id_around=id_around, sort=sort, member_custom_include=member_custom_include) path_params = { - "parent_id": parent_id, + "parent_id": parent_id, } - return await self.get( - "/api/v2/chat/messages/{parent_id}/replies", - GetRepliesResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/chat/messages/{parent_id}/replies", GetRepliesResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.query_message_flags") - async def query_message_flags( - self, payload: Optional[QueryMessageFlagsPayload] = None - ) -> StreamResponse[QueryMessageFlagsResponse]: + async def query_message_flags(self, payload: Optional[QueryMessageFlagsPayload] = None) -> StreamResponse[QueryMessageFlagsResponse]: query_params = build_query_param(payload=payload) - return await self.get( - "/api/v2/chat/moderation/flags/message", - QueryMessageFlagsResponse, - query_params=query_params, - ) - + return await self.get("/api/v2/chat/moderation/flags/message", QueryMessageFlagsResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.chat.mute_channel") - async def mute_channel( - self, - expiration: Optional[int] = None, - user_id: Optional[str] = None, - channel_cids: Optional[List[str]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[MuteChannelResponse]: - json = MuteChannelRequest( - expiration=expiration, user_id=user_id, channel_cids=channel_cids, user=user - ).to_dict() - return await self.post( - "/api/v2/chat/moderation/mute/channel", MuteChannelResponse, json=json - ) - + async def mute_channel(self, expiration: Optional[int] = None, user_id: Optional[str] = None, channel_cids: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[MuteChannelResponse]: + json = MuteChannelRequest(expiration=expiration, user_id=user_id, channel_cids=channel_cids, user=user).to_dict() + return await self.post("/api/v2/chat/moderation/mute/channel", MuteChannelResponse, json=json) + @telemetry.operation_name("getstream.api.chat.unmute_channel") - async def unmute_channel( - self, - expiration: Optional[int] = None, - user_id: Optional[str] = None, - channel_cids: Optional[List[str]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UnmuteResponse]: - json = UnmuteChannelRequest( - expiration=expiration, user_id=user_id, channel_cids=channel_cids, user=user - ).to_dict() - return await self.post( - "/api/v2/chat/moderation/unmute/channel", UnmuteResponse, json=json - ) - + async def unmute_channel(self, expiration: Optional[int] = None, user_id: Optional[str] = None, channel_cids: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UnmuteResponse]: + json = UnmuteChannelRequest(expiration=expiration, user_id=user_id, channel_cids=channel_cids, user=user).to_dict() + return await self.post("/api/v2/chat/moderation/unmute/channel", UnmuteResponse, json=json) + @telemetry.operation_name("getstream.api.chat.get_predefined_filters") - async def get_predefined_filters( - self, - include_stats: Optional[bool] = None, - sort: Optional[List[SortParamRequest]] = None, - ) -> StreamResponse[QueryPredefinedFiltersResponse]: + async def get_predefined_filters(self, include_stats: Optional[bool] = None, sort: Optional[List[SortParamRequest]] = None) -> StreamResponse[QueryPredefinedFiltersResponse]: query_params = build_query_param(include_stats=include_stats, sort=sort) - return await self.get( - "/api/v2/chat/predefined_filters", - QueryPredefinedFiltersResponse, - query_params=query_params, - ) - + return await self.get("/api/v2/chat/predefined_filters", QueryPredefinedFiltersResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.chat.create_predefined_filter") - async def create_predefined_filter( - self, - name: str, - operation: str, - filter: Dict[str, object], - description: Optional[str] = None, - sort: Optional[List[Dict[str, object]]] = None, - ) -> StreamResponse[CreatePredefinedFilterResponse]: - json = CreatePredefinedFilterRequest( - name=name, - operation=operation, - filter=filter, - description=description, - sort=sort, - ).to_dict() - return await self.post( - "/api/v2/chat/predefined_filters", CreatePredefinedFilterResponse, json=json - ) - + async def create_predefined_filter(self, name: str, operation: str, filter: Dict[str, object], description: Optional[str] = None, sort: Optional[List[Dict[str, object]]] = None) -> StreamResponse[CreatePredefinedFilterResponse]: + json = CreatePredefinedFilterRequest(name=name, operation=operation, filter=filter, description=description, sort=sort).to_dict() + return await self.post("/api/v2/chat/predefined_filters", CreatePredefinedFilterResponse, json=json) + @telemetry.operation_name("getstream.api.chat.delete_predefined_filter") async def delete_predefined_filter(self, name: str) -> StreamResponse[Response]: path_params = { - "name": name, + "name": name, } - return await self.delete( - "/api/v2/chat/predefined_filters/{name}", Response, path_params=path_params - ) - + return await self.delete("/api/v2/chat/predefined_filters/{name}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_predefined_filter") - async def get_predefined_filter( - self, name: str - ) -> StreamResponse[GetPredefinedFilterResponse]: + async def get_predefined_filter(self, name: str) -> StreamResponse[GetPredefinedFilterResponse]: path_params = { - "name": name, + "name": name, } - return await self.get( - "/api/v2/chat/predefined_filters/{name}", - GetPredefinedFilterResponse, - path_params=path_params, - ) - + return await self.get("/api/v2/chat/predefined_filters/{name}", GetPredefinedFilterResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_predefined_filter") - async def update_predefined_filter( - self, - name: str, - operation: str, - filter: Dict[str, object], - description: Optional[str] = None, - sort: Optional[List[Dict[str, object]]] = None, - ) -> StreamResponse[UpdatePredefinedFilterResponse]: - path_params = { - "name": name, - } - json = UpdatePredefinedFilterRequest( - operation=operation, filter=filter, description=description, sort=sort - ).to_dict() - return await self.put( - "/api/v2/chat/predefined_filters/{name}", - UpdatePredefinedFilterResponse, - path_params=path_params, - json=json, - ) - + async def update_predefined_filter(self, name: str, operation: str, filter: Dict[str, object], description: Optional[str] = None, sort: Optional[List[Dict[str, object]]] = None) -> StreamResponse[UpdatePredefinedFilterResponse]: + path_params = { + "name": name, + } + json = UpdatePredefinedFilterRequest(operation=operation, filter=filter, description=description, sort=sort).to_dict() + return await self.put("/api/v2/chat/predefined_filters/{name}", UpdatePredefinedFilterResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.query_banned_users") - async def query_banned_users( - self, payload: Optional[QueryBannedUsersPayload] = None - ) -> StreamResponse[QueryBannedUsersResponse]: + async def query_banned_users(self, payload: Optional[QueryBannedUsersPayload] = None) -> StreamResponse[QueryBannedUsersResponse]: query_params = build_query_param(payload=payload) - return await self.get( - "/api/v2/chat/query_banned_users", - QueryBannedUsersResponse, - query_params=query_params, - ) - + return await self.get("/api/v2/chat/query_banned_users", QueryBannedUsersResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.chat.query_future_channel_bans") - async def query_future_channel_bans( - self, payload: Optional[QueryFutureChannelBansPayload] = None - ) -> StreamResponse[QueryFutureChannelBansResponse]: + async def query_future_channel_bans(self, payload: Optional[QueryFutureChannelBansPayload] = None) -> StreamResponse[QueryFutureChannelBansResponse]: query_params = build_query_param(payload=payload) - return await self.get( - "/api/v2/chat/query_future_channel_bans", - QueryFutureChannelBansResponse, - query_params=query_params, - ) - + return await self.get("/api/v2/chat/query_future_channel_bans", QueryFutureChannelBansResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.chat.query_reminders") - async def query_reminders( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryRemindersResponse]: - json = QueryRemindersRequest( - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return await self.post( - "/api/v2/chat/reminders/query", QueryRemindersResponse, json=json - ) - + async def query_reminders(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryRemindersResponse]: + json = QueryRemindersRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return await self.post("/api/v2/chat/reminders/query", QueryRemindersResponse, json=json) + @telemetry.operation_name("getstream.api.chat.get_retention_policy") async def get_retention_policy(self) -> StreamResponse[GetRetentionPolicyResponse]: - return await self.get( - "/api/v2/chat/retention_policy", GetRetentionPolicyResponse - ) - + return await self.get("/api/v2/chat/retention_policy", GetRetentionPolicyResponse) + @telemetry.operation_name("getstream.api.chat.set_retention_policy") - async def set_retention_policy( - self, max_age_hours: int, policy: str - ) -> StreamResponse[SetRetentionPolicyResponse]: - json = SetRetentionPolicyRequest( - max_age_hours=max_age_hours, policy=policy - ).to_dict() - return await self.post( - "/api/v2/chat/retention_policy", SetRetentionPolicyResponse, json=json - ) - + async def set_retention_policy(self, max_age_hours: int, policy: str) -> StreamResponse[SetRetentionPolicyResponse]: + json = SetRetentionPolicyRequest(max_age_hours=max_age_hours, policy=policy).to_dict() + return await self.post("/api/v2/chat/retention_policy", SetRetentionPolicyResponse, json=json) + @telemetry.operation_name("getstream.api.chat.delete_retention_policy") - async def delete_retention_policy( - self, policy: str - ) -> StreamResponse[DeleteRetentionPolicyResponse]: + async def delete_retention_policy(self, policy: str) -> StreamResponse[DeleteRetentionPolicyResponse]: json = DeleteRetentionPolicyRequest(policy=policy).to_dict() - return await self.post( - "/api/v2/chat/retention_policy/delete", - DeleteRetentionPolicyResponse, - json=json, - ) - + return await self.post("/api/v2/chat/retention_policy/delete", DeleteRetentionPolicyResponse, json=json) + @telemetry.operation_name("getstream.api.chat.get_retention_policy_runs") - async def get_retention_policy_runs( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[GetRetentionPolicyRunsResponse]: - json = GetRetentionPolicyRunsRequest( - limit=limit, - next=next, - prev=prev, - sort=sort, - filter_conditions=filter_conditions, - ).to_dict() - return await self.post( - "/api/v2/chat/retention_policy/runs", - GetRetentionPolicyRunsResponse, - json=json, - ) - + async def get_retention_policy_runs(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[GetRetentionPolicyRunsResponse]: + json = GetRetentionPolicyRunsRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() + return await self.post("/api/v2/chat/retention_policy/runs", GetRetentionPolicyRunsResponse, json=json) + @telemetry.operation_name("getstream.api.chat.search") - async def search( - self, payload: Optional[SearchPayload] = None - ) -> StreamResponse[SearchResponse]: + async def search(self, payload: Optional[SearchPayload] = None) -> StreamResponse[SearchResponse]: query_params = build_query_param(payload=payload) - return await self.get( - "/api/v2/chat/search", SearchResponse, query_params=query_params - ) - + return await self.get("/api/v2/chat/search", SearchResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.chat.create_segment") - async def create_segment( - self, - type: str, - all_sender_channels: Optional[bool] = None, - all_users: Optional[bool] = None, - description: Optional[str] = None, - id: Optional[str] = None, - name: Optional[str] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[CreateSegmentResponse]: - json = CreateSegmentRequest( - type=type, - all_sender_channels=all_sender_channels, - all_users=all_users, - description=description, - id=id, - name=name, - filter=filter, - ).to_dict() - return await self.post( - "/api/v2/chat/segments", CreateSegmentResponse, json=json - ) - + async def create_segment(self, type: str, all_sender_channels: Optional[bool] = None, all_users: Optional[bool] = None, description: Optional[str] = None, id: Optional[str] = None, name: Optional[str] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[CreateSegmentResponse]: + json = CreateSegmentRequest(type=type, all_sender_channels=all_sender_channels, all_users=all_users, description=description, id=id, name=name, filter=filter).to_dict() + return await self.post("/api/v2/chat/segments", CreateSegmentResponse, json=json) + @telemetry.operation_name("getstream.api.chat.query_segments") - async def query_segments( - self, - filter: Dict[str, object], - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - ) -> StreamResponse[QuerySegmentsResponse]: - json = QuerySegmentsRequest( - filter=filter, limit=limit, next=next, prev=prev, sort=sort - ).to_dict() - return await self.post( - "/api/v2/chat/segments/query", QuerySegmentsResponse, json=json - ) - + async def query_segments(self, filter: Dict[str, object], limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None) -> StreamResponse[QuerySegmentsResponse]: + json = QuerySegmentsRequest(filter=filter, limit=limit, next=next, prev=prev, sort=sort).to_dict() + return await self.post("/api/v2/chat/segments/query", QuerySegmentsResponse, json=json) + @telemetry.operation_name("getstream.api.chat.delete_segment") async def delete_segment(self, id: str) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - return await self.delete( - "/api/v2/chat/segments/{id}", Response, path_params=path_params - ) - + return await self.delete("/api/v2/chat/segments/{id}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_segment") async def get_segment(self, id: str) -> StreamResponse[GetSegmentResponse]: path_params = { - "id": id, + "id": id, } - return await self.get( - "/api/v2/chat/segments/{id}", GetSegmentResponse, path_params=path_params - ) - + return await self.get("/api/v2/chat/segments/{id}", GetSegmentResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_segment") - async def update_segment( - self, - id: str, - description: Optional[str] = None, - name: Optional[str] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[UpdateSegmentResponse]: - path_params = { - "id": id, - } - json = UpdateSegmentRequest( - description=description, name=name, filter=filter - ).to_dict() - return await self.put( - "/api/v2/chat/segments/{id}", - UpdateSegmentResponse, - path_params=path_params, - json=json, - ) - + async def update_segment(self, id: str, description: Optional[str] = None, name: Optional[str] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[UpdateSegmentResponse]: + path_params = { + "id": id, + } + json = UpdateSegmentRequest(description=description, name=name, filter=filter).to_dict() + return await self.put("/api/v2/chat/segments/{id}", UpdateSegmentResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.add_segment_targets") - async def add_segment_targets( - self, id: str, target_ids: List[str] - ) -> StreamResponse[Response]: + async def add_segment_targets(self, id: str, target_ids: List[str]) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } json = AddSegmentTargetsRequest(target_ids=target_ids).to_dict() - return await self.post( - "/api/v2/chat/segments/{id}/addtargets", - Response, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/chat/segments/{id}/addtargets", Response, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.delete_segment_targets") - async def delete_segment_targets( - self, id: str, target_ids: List[str] - ) -> StreamResponse[Response]: + async def delete_segment_targets(self, id: str, target_ids: List[str]) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } json = DeleteSegmentTargetsRequest(target_ids=target_ids).to_dict() - return await self.post( - "/api/v2/chat/segments/{id}/deletetargets", - Response, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/chat/segments/{id}/deletetargets", Response, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.segment_target_exists") - async def segment_target_exists( - self, id: str, target_id: str - ) -> StreamResponse[Response]: + async def segment_target_exists(self, id: str, target_id: str) -> StreamResponse[Response]: path_params = { - "id": id, - "target_id": target_id, + "id": id, "target_id": target_id, } - return await self.get( - "/api/v2/chat/segments/{id}/target/{target_id}", - Response, - path_params=path_params, - ) - + return await self.get("/api/v2/chat/segments/{id}/target/{target_id}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.query_segment_targets") - async def query_segment_targets( - self, - id: str, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QuerySegmentTargetsResponse]: - path_params = { - "id": id, - } - json = QuerySegmentTargetsRequest( - limit=limit, next=next, prev=prev, sort=sort, filter=filter - ).to_dict() - return await self.post( - "/api/v2/chat/segments/{id}/targets/query", - QuerySegmentTargetsResponse, - path_params=path_params, - json=json, - ) - + async def query_segment_targets(self, id: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QuerySegmentTargetsResponse]: + path_params = { + "id": id, + } + json = QuerySegmentTargetsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() + return await self.post("/api/v2/chat/segments/{id}/targets/query", QuerySegmentTargetsResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.query_team_usage_stats") - async def query_team_usage_stats( - self, - end_date: Optional[str] = None, - limit: Optional[int] = None, - month: Optional[str] = None, - next: Optional[str] = None, - start_date: Optional[str] = None, - team: Optional[str] = None, - ) -> StreamResponse[QueryTeamUsageStatsResponse]: - json = QueryTeamUsageStatsRequest( - end_date=end_date, - limit=limit, - month=month, - next=next, - start_date=start_date, - team=team, - ).to_dict() - return await self.post( - "/api/v2/chat/stats/team_usage", QueryTeamUsageStatsResponse, json=json - ) - + async def query_team_usage_stats(self, end_date: Optional[str] = None, limit: Optional[int] = None, month: Optional[str] = None, next: Optional[str] = None, start_date: Optional[str] = None, team: Optional[str] = None) -> StreamResponse[QueryTeamUsageStatsResponse]: + json = QueryTeamUsageStatsRequest(end_date=end_date, limit=limit, month=month, next=next, start_date=start_date, team=team).to_dict() + return await self.post("/api/v2/chat/stats/team_usage", QueryTeamUsageStatsResponse, json=json) + @telemetry.operation_name("getstream.api.chat.query_threads") - async def query_threads( - self, - limit: Optional[int] = None, - member_limit: Optional[int] = None, - next: Optional[str] = None, - participant_limit: Optional[int] = None, - prev: Optional[str] = None, - reply_limit: Optional[int] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryThreadsResponse]: - json = QueryThreadsRequest( - limit=limit, - member_limit=member_limit, - next=next, - participant_limit=participant_limit, - prev=prev, - reply_limit=reply_limit, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() + async def query_threads(self, limit: Optional[int] = None, member_limit: Optional[int] = None, next: Optional[str] = None, participant_limit: Optional[int] = None, prev: Optional[str] = None, reply_limit: Optional[int] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryThreadsResponse]: + json = QueryThreadsRequest(limit=limit, member_limit=member_limit, next=next, participant_limit=participant_limit, prev=prev, reply_limit=reply_limit, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() return await self.post("/api/v2/chat/threads", QueryThreadsResponse, json=json) - + @telemetry.operation_name("getstream.api.chat.get_thread") - async def get_thread( - self, - message_id: str, - reply_limit: Optional[int] = None, - participant_limit: Optional[int] = None, - member_limit: Optional[int] = None, - ) -> StreamResponse[GetThreadResponse]: - query_params = build_query_param( - reply_limit=reply_limit, - participant_limit=participant_limit, - member_limit=member_limit, - ) + async def get_thread(self, message_id: str, reply_limit: Optional[int] = None, participant_limit: Optional[int] = None, member_limit: Optional[int] = None) -> StreamResponse[GetThreadResponse]: + query_params = build_query_param(reply_limit=reply_limit, participant_limit=participant_limit, member_limit=member_limit) path_params = { - "message_id": message_id, + "message_id": message_id, } - return await self.get( - "/api/v2/chat/threads/{message_id}", - GetThreadResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/chat/threads/{message_id}", GetThreadResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_thread_partial") - async def update_thread_partial( - self, - message_id: str, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateThreadPartialResponse]: - path_params = { - "message_id": message_id, - } - json = UpdateThreadPartialRequest( - user_id=user_id, unset=unset, set=set, user=user - ).to_dict() - return await self.patch( - "/api/v2/chat/threads/{message_id}", - UpdateThreadPartialResponse, - path_params=path_params, - json=json, - ) - + async def update_thread_partial(self, message_id: str, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateThreadPartialResponse]: + path_params = { + "message_id": message_id, + } + json = UpdateThreadPartialRequest(user_id=user_id, unset=unset, set=set, user=user).to_dict() + return await self.patch("/api/v2/chat/threads/{message_id}", UpdateThreadPartialResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.unread_counts") - async def unread_counts( - self, user_id: Optional[str] = None - ) -> StreamResponse[WrappedUnreadCountsResponse]: + async def unread_counts(self, user_id: Optional[str] = None) -> StreamResponse[WrappedUnreadCountsResponse]: query_params = build_query_param(user_id=user_id) - return await self.get( - "/api/v2/chat/unread", - WrappedUnreadCountsResponse, - query_params=query_params, - ) - + return await self.get("/api/v2/chat/unread", WrappedUnreadCountsResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.chat.unread_counts_batch") - async def unread_counts_batch( - self, user_ids: List[str] - ) -> StreamResponse[UnreadCountsBatchResponse]: + async def unread_counts_batch(self, user_ids: List[str]) -> StreamResponse[UnreadCountsBatchResponse]: json = UnreadCountsBatchRequest(user_ids=user_ids).to_dict() - return await self.post( - "/api/v2/chat/unread_batch", UnreadCountsBatchResponse, json=json - ) - + return await self.post("/api/v2/chat/unread_batch", UnreadCountsBatchResponse, json=json) + @telemetry.operation_name("getstream.api.chat.send_user_custom_event") - async def send_user_custom_event( - self, user_id: str, event: UserCustomEventRequest - ) -> StreamResponse[Response]: + async def send_user_custom_event(self, user_id: str, event: UserCustomEventRequest) -> StreamResponse[Response]: path_params = { - "user_id": user_id, + "user_id": user_id, } json = SendUserCustomEventRequest(event=event).to_dict() - return await self.post( - "/api/v2/chat/users/{user_id}/event", - Response, - path_params=path_params, - json=json, - ) + return await self.post("/api/v2/chat/users/{user_id}/event", Response, path_params=path_params, json=json) + \ No newline at end of file diff --git a/getstream/chat/channel.py b/getstream/chat/channel.py index af24273e..966ef73e 100644 --- a/getstream/chat/channel.py +++ b/getstream/chat/channel.py @@ -5,427 +5,144 @@ class Channel: - def __init__( - self, - client, - channel_type: str, - channel_id: str | None = None, - custom_data: Dict = None, - ): + + def __init__(self, client, channel_type: str, channel_id: str = None, custom_data: Dict = None): self.channel_id = channel_id self.channel_type = channel_type self.client = client self.custom_data = custom_data or {} def _sync_from_response(self, data): - if hasattr(data, "channel") and isinstance(data.channel, ChannelResponse): + if hasattr(data, 'channel') and isinstance(data.channel, ChannelResponse): self.custom_data = data.channel.custom + + @attach_channel_cid - def delete( - self, hard_delete: Optional[bool] = None - ) -> StreamResponse[DeleteChannelResponse]: - response = self.client.delete_channel( - type=self.channel_type, id=self.channel_id, hard_delete=hard_delete - ) + def delete(self, hard_delete: Optional[bool] = None) -> StreamResponse[DeleteChannelResponse]: + response = self.client.delete_channel(type=self.channel_type, id=self.channel_id, hard_delete=hard_delete) self._sync_from_response(response.data) return response @attach_channel_cid - def get( - self, - state: Optional[bool] = None, - messages_limit: Optional[int] = None, - members_limit: Optional[int] = None, - watchers_limit: Optional[int] = None, - messages_id_lt: Optional[str] = None, - messages_id_lte: Optional[str] = None, - messages_id_gt: Optional[str] = None, - messages_id_gte: Optional[str] = None, - messages_id_around: Optional[str] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[ChannelStateResponse]: - response = self.client.get_channel( - type=self.channel_type, - id=self.channel_id, - state=state, - messages_limit=messages_limit, - members_limit=members_limit, - watchers_limit=watchers_limit, - messages_id_lt=messages_id_lt, - messages_id_lte=messages_id_lte, - messages_id_gt=messages_id_gt, - messages_id_gte=messages_id_gte, - messages_id_around=messages_id_around, - user_id=user_id, - ) + def get(self, state: Optional[bool] = None, messages_limit: Optional[int] = None, members_limit: Optional[int] = None, watchers_limit: Optional[int] = None, messages_id_lt: Optional[str] = None, messages_id_lte: Optional[str] = None, messages_id_gt: Optional[str] = None, messages_id_gte: Optional[str] = None, messages_id_around: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[ChannelStateResponse]: + response = self.client.get_channel(type=self.channel_type, id=self.channel_id, state=state, messages_limit=messages_limit, members_limit=members_limit, watchers_limit=watchers_limit, messages_id_lt=messages_id_lt, messages_id_lte=messages_id_lte, messages_id_gt=messages_id_gt, messages_id_gte=messages_id_gte, messages_id_around=messages_id_around, user_id=user_id) self._sync_from_response(response.data) return response @attach_channel_cid - def update_channel_partial( - self, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateChannelPartialResponse]: - response = self.client.update_channel_partial( - type=self.channel_type, - id=self.channel_id, - user_id=user_id, - unset=unset, - set=set, - user=user, - ) + def update_channel_partial(self, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateChannelPartialResponse]: + response = self.client.update_channel_partial(type=self.channel_type, id=self.channel_id, user_id=user_id, unset=unset, set=set, user=user) self._sync_from_response(response.data) return response @attach_channel_cid - def update( - self, - accept_invite: Optional[bool] = None, - cooldown: Optional[int] = None, - hide_history: Optional[bool] = None, - hide_history_before: Optional[datetime] = None, - reject_invite: Optional[bool] = None, - skip_push: Optional[bool] = None, - user_id: Optional[str] = None, - add_filter_tags: Optional[List[str]] = None, - add_members: Optional[List[ChannelMemberRequest]] = None, - add_moderators: Optional[List[str]] = None, - assign_roles: Optional[List[ChannelMemberRequest]] = None, - demote_moderators: Optional[List[str]] = None, - invites: Optional[List[ChannelMemberRequest]] = None, - remove_filter_tags: Optional[List[str]] = None, - remove_members: Optional[List[str]] = None, - data: Optional[ChannelInputRequest] = None, - message: Optional[MessageRequest] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateChannelResponse]: - response = self.client.update_channel( - type=self.channel_type, - id=self.channel_id, - accept_invite=accept_invite, - cooldown=cooldown, - hide_history=hide_history, - hide_history_before=hide_history_before, - reject_invite=reject_invite, - skip_push=skip_push, - user_id=user_id, - add_filter_tags=add_filter_tags, - add_members=add_members, - add_moderators=add_moderators, - assign_roles=assign_roles, - demote_moderators=demote_moderators, - invites=invites, - remove_filter_tags=remove_filter_tags, - remove_members=remove_members, - data=data, - message=message, - user=user, - ) + def update(self, accept_invite: Optional[bool] = None, cooldown: Optional[int] = None, hide_history: Optional[bool] = None, hide_history_before: Optional[datetime] = None, reject_invite: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, add_filter_tags: Optional[List[str]] = None, add_members: Optional[List[ChannelMemberRequest]] = None, add_moderators: Optional[List[str]] = None, assign_roles: Optional[List[ChannelMemberRequest]] = None, demote_moderators: Optional[List[str]] = None, invites: Optional[List[ChannelMemberRequest]] = None, remove_filter_tags: Optional[List[str]] = None, remove_members: Optional[List[str]] = None, data: Optional[ChannelInputRequest] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateChannelResponse]: + response = self.client.update_channel(type=self.channel_type, id=self.channel_id, accept_invite=accept_invite, cooldown=cooldown, hide_history=hide_history, hide_history_before=hide_history_before, reject_invite=reject_invite, skip_push=skip_push, user_id=user_id, add_filter_tags=add_filter_tags, add_members=add_members, add_moderators=add_moderators, assign_roles=assign_roles, demote_moderators=demote_moderators, invites=invites, remove_filter_tags=remove_filter_tags, remove_members=remove_members, data=data, message=message, user=user) self._sync_from_response(response.data) return response @attach_channel_cid - def delete_draft( - self, parent_id: Optional[str] = None, user_id: Optional[str] = None - ) -> StreamResponse[Response]: - response = self.client.delete_draft( - type=self.channel_type, - id=self.channel_id, - parent_id=parent_id, - user_id=user_id, - ) + def delete_draft(self, parent_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[Response]: + response = self.client.delete_draft(type=self.channel_type, id=self.channel_id, parent_id=parent_id, user_id=user_id) self._sync_from_response(response.data) return response @attach_channel_cid - def get_draft( - self, parent_id: Optional[str] = None, user_id: Optional[str] = None - ) -> StreamResponse[GetDraftResponse]: - response = self.client.get_draft( - type=self.channel_type, - id=self.channel_id, - parent_id=parent_id, - user_id=user_id, - ) + def get_draft(self, parent_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[GetDraftResponse]: + response = self.client.get_draft(type=self.channel_type, id=self.channel_id, parent_id=parent_id, user_id=user_id) self._sync_from_response(response.data) return response @attach_channel_cid def send_event(self, event: EventRequest) -> StreamResponse[EventResponse]: - response = self.client.send_event( - type=self.channel_type, id=self.channel_id, event=event - ) + response = self.client.send_event(type=self.channel_type, id=self.channel_id, event=event) self._sync_from_response(response.data) return response @attach_channel_cid - def delete_channel_file( - self, url: Optional[str] = None - ) -> StreamResponse[Response]: - response = self.client.delete_channel_file( - type=self.channel_type, id=self.channel_id, url=url - ) + def delete_channel_file(self, url: Optional[str] = None) -> StreamResponse[Response]: + response = self.client.delete_channel_file(type=self.channel_type, id=self.channel_id, url=url) self._sync_from_response(response.data) return response @attach_channel_cid - def upload_channel_file( - self, file: Optional[str] = None, user: Optional[OnlyUserID] = None - ) -> StreamResponse[UploadChannelFileResponse]: - response = self.client.upload_channel_file( - type=self.channel_type, id=self.channel_id, file=file, user=user - ) + def upload_channel_file(self, file: Optional[str] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[UploadChannelFileResponse]: + response = self.client.upload_channel_file(type=self.channel_type, id=self.channel_id, file=file, user=user) self._sync_from_response(response.data) return response @attach_channel_cid - def hide( - self, - clear_history: Optional[bool] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[HideChannelResponse]: - response = self.client.hide_channel( - type=self.channel_type, - id=self.channel_id, - clear_history=clear_history, - user_id=user_id, - user=user, - ) + def hide(self, clear_history: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[HideChannelResponse]: + response = self.client.hide_channel(type=self.channel_type, id=self.channel_id, clear_history=clear_history, user_id=user_id, user=user) self._sync_from_response(response.data) return response @attach_channel_cid - def delete_channel_image( - self, url: Optional[str] = None - ) -> StreamResponse[Response]: - response = self.client.delete_channel_image( - type=self.channel_type, id=self.channel_id, url=url - ) + def delete_channel_image(self, url: Optional[str] = None) -> StreamResponse[Response]: + response = self.client.delete_channel_image(type=self.channel_type, id=self.channel_id, url=url) self._sync_from_response(response.data) return response @attach_channel_cid - def upload_channel_image( - self, - file: Optional[str] = None, - upload_sizes: Optional[List[ImageSize]] = None, - user: Optional[OnlyUserID] = None, - ) -> StreamResponse[UploadChannelResponse]: - response = self.client.upload_channel_image( - type=self.channel_type, - id=self.channel_id, - file=file, - upload_sizes=upload_sizes, - user=user, - ) + def upload_channel_image(self, file: Optional[str] = None, upload_sizes: Optional[List[ImageSize]] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[UploadChannelResponse]: + response = self.client.upload_channel_image(type=self.channel_type, id=self.channel_id, file=file, upload_sizes=upload_sizes, user=user) self._sync_from_response(response.data) return response @attach_channel_cid - def update_member_partial( - self, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - ) -> StreamResponse[UpdateMemberPartialResponse]: - response = self.client.update_member_partial( - type=self.channel_type, - id=self.channel_id, - user_id=user_id, - unset=unset, - set=set, - ) + def update_member_partial(self, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None) -> StreamResponse[UpdateMemberPartialResponse]: + response = self.client.update_member_partial(type=self.channel_type, id=self.channel_id, user_id=user_id, unset=unset, set=set) self._sync_from_response(response.data) return response @attach_channel_cid - def send_message( - self, - message: MessageRequest, - force_moderation: Optional[bool] = None, - include_channel_context: Optional[bool] = None, - include_mentioned_members: Optional[bool] = None, - keep_channel_hidden: Optional[bool] = None, - pending: Optional[bool] = None, - skip_enrich_url: Optional[bool] = None, - skip_push: Optional[bool] = None, - pending_message_metadata: Optional[Dict[str, str]] = None, - ) -> StreamResponse[SendMessageResponse]: - response = self.client.send_message( - type=self.channel_type, - id=self.channel_id, - message=message, - force_moderation=force_moderation, - include_channel_context=include_channel_context, - include_mentioned_members=include_mentioned_members, - keep_channel_hidden=keep_channel_hidden, - pending=pending, - skip_enrich_url=skip_enrich_url, - skip_push=skip_push, - pending_message_metadata=pending_message_metadata, - ) + def send_message(self, message: MessageRequest, force_moderation: Optional[bool] = None, include_channel_context: Optional[bool] = None, include_mentioned_members: Optional[bool] = None, keep_channel_hidden: Optional[bool] = None, pending: Optional[bool] = None, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, pending_message_metadata: Optional[Dict[str, str]] = None) -> StreamResponse[SendMessageResponse]: + response = self.client.send_message(type=self.channel_type, id=self.channel_id, message=message, force_moderation=force_moderation, include_channel_context=include_channel_context, include_mentioned_members=include_mentioned_members, keep_channel_hidden=keep_channel_hidden, pending=pending, skip_enrich_url=skip_enrich_url, skip_push=skip_push, pending_message_metadata=pending_message_metadata) self._sync_from_response(response.data) return response @attach_channel_cid - def get_many_messages( - self, ids: List[str], member_custom_include: Optional[List[str]] = None - ) -> StreamResponse[GetManyMessagesResponse]: - response = self.client.get_many_messages( - type=self.channel_type, - id=self.channel_id, - ids=ids, - member_custom_include=member_custom_include, - ) + def get_many_messages(self, ids: List[str], member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetManyMessagesResponse]: + response = self.client.get_many_messages(type=self.channel_type, id=self.channel_id, ids=ids, member_custom_include=member_custom_include) self._sync_from_response(response.data) return response @attach_channel_cid - def get_pinned_messages( - self, - limit: Optional[int] = None, - offset: Optional[int] = None, - id_gte: Optional[str] = None, - id_gt: Optional[str] = None, - id_lte: Optional[str] = None, - id_lt: Optional[str] = None, - pinned_at_after_or_equal: Optional[datetime] = None, - pinned_at_after: Optional[datetime] = None, - pinned_at_before_or_equal: Optional[datetime] = None, - pinned_at_before: Optional[datetime] = None, - id_around: Optional[str] = None, - pinned_at_around: Optional[datetime] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - member_custom_include: Optional[List[str]] = None, - ) -> StreamResponse[GetPinnedMessagesResponse]: - response = self.client.get_pinned_messages( - type=self.channel_type, - id=self.channel_id, - limit=limit, - offset=offset, - id_gte=id_gte, - id_gt=id_gt, - id_lte=id_lte, - id_lt=id_lt, - pinned_at_after_or_equal=pinned_at_after_or_equal, - pinned_at_after=pinned_at_after, - pinned_at_before_or_equal=pinned_at_before_or_equal, - pinned_at_before=pinned_at_before, - id_around=id_around, - pinned_at_around=pinned_at_around, - user_id=user_id, - sort=sort, - member_custom_include=member_custom_include, - ) + def get_pinned_messages(self, limit: Optional[int] = None, offset: Optional[int] = None, id_gte: Optional[str] = None, id_gt: Optional[str] = None, id_lte: Optional[str] = None, id_lt: Optional[str] = None, pinned_at_after_or_equal: Optional[datetime] = None, pinned_at_after: Optional[datetime] = None, pinned_at_before_or_equal: Optional[datetime] = None, pinned_at_before: Optional[datetime] = None, id_around: Optional[str] = None, pinned_at_around: Optional[datetime] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetPinnedMessagesResponse]: + response = self.client.get_pinned_messages(type=self.channel_type, id=self.channel_id, limit=limit, offset=offset, id_gte=id_gte, id_gt=id_gt, id_lte=id_lte, id_lt=id_lt, pinned_at_after_or_equal=pinned_at_after_or_equal, pinned_at_after=pinned_at_after, pinned_at_before_or_equal=pinned_at_before_or_equal, pinned_at_before=pinned_at_before, id_around=id_around, pinned_at_around=pinned_at_around, user_id=user_id, sort=sort, member_custom_include=member_custom_include) self._sync_from_response(response.data) return response @attach_channel_cid - def get_or_create( - self, - hide_for_creator: Optional[bool] = None, - state: Optional[bool] = None, - thread_unread_counts: Optional[bool] = None, - member_custom_include: Optional[List[str]] = None, - data: Optional[ChannelInput] = None, - members: Optional[PaginationParams] = None, - messages: Optional[MessagePaginationParams] = None, - watchers: Optional[PaginationParams] = None, - ) -> StreamResponse[ChannelStateResponse]: - response = self.client.get_or_create_channel( - type=self.channel_type, - id=self.channel_id, - hide_for_creator=hide_for_creator, - state=state, - thread_unread_counts=thread_unread_counts, - member_custom_include=member_custom_include, - data=data, - members=members, - messages=messages, - watchers=watchers, - ) + def get_or_create(self, hide_for_creator: Optional[bool] = None, state: Optional[bool] = None, thread_unread_counts: Optional[bool] = None, member_custom_include: Optional[List[str]] = None, data: Optional[ChannelInput] = None, members: Optional[PaginationParams] = None, messages: Optional[MessagePaginationParams] = None, watchers: Optional[PaginationParams] = None) -> StreamResponse[ChannelStateResponse]: + response = self.client.get_or_create_channel(type=self.channel_type, id=self.channel_id, hide_for_creator=hide_for_creator, state=state, thread_unread_counts=thread_unread_counts, member_custom_include=member_custom_include, data=data, members=members, messages=messages, watchers=watchers) self._sync_from_response(response.data) return response @attach_channel_cid - def mark_read( - self, - message_id: Optional[str] = None, - thread_id: Optional[str] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[MarkReadResponse]: - response = self.client.mark_read( - type=self.channel_type, - id=self.channel_id, - message_id=message_id, - thread_id=thread_id, - user_id=user_id, - user=user, - ) + def mark_read(self, message_id: Optional[str] = None, thread_id: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[MarkReadResponse]: + response = self.client.mark_read(type=self.channel_type, id=self.channel_id, message_id=message_id, thread_id=thread_id, user_id=user_id, user=user) self._sync_from_response(response.data) return response @attach_channel_cid - def show( - self, user_id: Optional[str] = None, user: Optional[UserRequest] = None - ) -> StreamResponse[ShowChannelResponse]: - response = self.client.show_channel( - type=self.channel_type, id=self.channel_id, user_id=user_id, user=user - ) + def show(self, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[ShowChannelResponse]: + response = self.client.show_channel(type=self.channel_type, id=self.channel_id, user_id=user_id, user=user) self._sync_from_response(response.data) return response @attach_channel_cid - def truncate( - self, - hard_delete: Optional[bool] = None, - skip_push: Optional[bool] = None, - truncated_at: Optional[datetime] = None, - user_id: Optional[str] = None, - member_ids: Optional[List[str]] = None, - message: Optional[MessageRequest] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[TruncateChannelResponse]: - response = self.client.truncate_channel( - type=self.channel_type, - id=self.channel_id, - hard_delete=hard_delete, - skip_push=skip_push, - truncated_at=truncated_at, - user_id=user_id, - member_ids=member_ids, - message=message, - user=user, - ) + def truncate(self, hard_delete: Optional[bool] = None, skip_push: Optional[bool] = None, truncated_at: Optional[datetime] = None, user_id: Optional[str] = None, member_ids: Optional[List[str]] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[TruncateChannelResponse]: + response = self.client.truncate_channel(type=self.channel_type, id=self.channel_id, hard_delete=hard_delete, skip_push=skip_push, truncated_at=truncated_at, user_id=user_id, member_ids=member_ids, message=message, user=user) self._sync_from_response(response.data) return response @attach_channel_cid - def mark_unread( - self, - message_id: Optional[str] = None, - message_timestamp: Optional[datetime] = None, - thread_id: Optional[str] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[Response]: - response = self.client.mark_unread( - type=self.channel_type, - id=self.channel_id, - message_id=message_id, - message_timestamp=message_timestamp, - thread_id=thread_id, - user_id=user_id, - user=user, - ) + def mark_unread(self, message_id: Optional[str] = None, message_timestamp: Optional[datetime] = None, thread_id: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[Response]: + response = self.client.mark_unread(type=self.channel_type, id=self.channel_id, message_id=message_id, message_timestamp=message_timestamp, thread_id=thread_id, user_id=user_id, user=user) self._sync_from_response(response.data) return response - create = get_or_create + + create = get_or_create \ No newline at end of file diff --git a/getstream/chat/client.py b/getstream/chat/client.py index 7fb451b0..ebc305dd 100644 --- a/getstream/chat/client.py +++ b/getstream/chat/client.py @@ -1,5 +1,4 @@ import json -from typing import List, Optional from getstream.chat.channel import Channel from getstream.chat.rest_client import ChatRestClient @@ -33,7 +32,7 @@ def upload_channel_file( type: str, id: str, file: str, - user: Optional[OnlyUserID] = None, + user: OnlyUserID | None = None, ) -> StreamResponse[UploadChannelFileResponse]: form_fields = [] if user is not None: @@ -49,11 +48,11 @@ def upload_channel_file( @telemetry.operation_name("getstream.api.chat.upload_channel_image") def upload_channel_image( self, - channel_type: Optional[str] = None, - id: Optional[str] = None, - file: Optional[str] = None, - upload_sizes: Optional[List[ImageSize]] = None, - user: Optional[OnlyUserID] = None, + channel_type: str | None = None, + id: str | None = None, + file: str | None = None, + upload_sizes: list[ImageSize] | None = None, + user: OnlyUserID | None = None, **kwargs, ) -> StreamResponse[UploadChannelResponse]: # Backward compatibility for generated wrappers passing `type=...`. diff --git a/getstream/chat/rest_client.py b/getstream/chat/rest_client.py index 79cdee20..c1998dd5 100644 --- a/getstream/chat/rest_client.py +++ b/getstream/chat/rest_client.py @@ -1,3 +1,4 @@ + # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import BaseClient from getstream.common import telemetry @@ -7,14 +8,8 @@ class ChatRestClient(BaseClient): - def __init__( - self, - api_key: str, - base_url: str, - timeout: float, - token: str, - user_agent: str | None = None, - ): + + def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): """ Initializes ChatClient with BaseClient instance :param api_key: A string representing the client's API key @@ -31,2074 +26,688 @@ def __init__( user_agent=user_agent, ) + @telemetry.operation_name("getstream.api.chat.create_campaign") - def create_campaign( - self, - sender_id: str, - message_template: CampaignMessageTemplate, - create_channels: Optional[bool] = None, - description: Optional[str] = None, - id: Optional[str] = None, - name: Optional[str] = None, - sender_mode: Optional[str] = None, - sender_visibility: Optional[str] = None, - show_channels: Optional[bool] = None, - skip_push: Optional[bool] = None, - skip_webhook: Optional[bool] = None, - segment_ids: Optional[List[str]] = None, - user_ids: Optional[List[str]] = None, - channel_template: Optional[CampaignChannelTemplate] = None, - ) -> StreamResponse[CreateCampaignResponse]: - json = CreateCampaignRequest( - sender_id=sender_id, - message_template=message_template, - create_channels=create_channels, - description=description, - id=id, - name=name, - sender_mode=sender_mode, - sender_visibility=sender_visibility, - show_channels=show_channels, - skip_push=skip_push, - skip_webhook=skip_webhook, - segment_ids=segment_ids, - user_ids=user_ids, - channel_template=channel_template, - ).to_dict() + def create_campaign(self, sender_id: str, message_template: CampaignMessageTemplate, create_channels: Optional[bool] = None, description: Optional[str] = None, id: Optional[str] = None, name: Optional[str] = None, sender_mode: Optional[str] = None, sender_visibility: Optional[str] = None, show_channels: Optional[bool] = None, skip_push: Optional[bool] = None, skip_webhook: Optional[bool] = None, segment_ids: Optional[List[str]] = None, user_ids: Optional[List[str]] = None, channel_template: Optional[CampaignChannelTemplate] = None) -> StreamResponse[CreateCampaignResponse]: + json = CreateCampaignRequest(sender_id=sender_id, message_template=message_template, create_channels=create_channels, description=description, id=id, name=name, sender_mode=sender_mode, sender_visibility=sender_visibility, show_channels=show_channels, skip_push=skip_push, skip_webhook=skip_webhook, segment_ids=segment_ids, user_ids=user_ids, channel_template=channel_template).to_dict() return self.post("/api/v2/chat/campaigns", CreateCampaignResponse, json=json) - + @telemetry.operation_name("getstream.api.chat.query_campaigns") - def query_campaigns( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_limit: Optional[int] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCampaignsResponse]: - json = QueryCampaignsRequest( - limit=limit, - next=next, - prev=prev, - user_limit=user_limit, - sort=sort, - filter=filter, - ).to_dict() - return self.post( - "/api/v2/chat/campaigns/query", QueryCampaignsResponse, json=json - ) - + def query_campaigns(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_limit: Optional[int] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCampaignsResponse]: + json = QueryCampaignsRequest(limit=limit, next=next, prev=prev, user_limit=user_limit, sort=sort, filter=filter).to_dict() + return self.post("/api/v2/chat/campaigns/query", QueryCampaignsResponse, json=json) + @telemetry.operation_name("getstream.api.chat.delete_campaign") def delete_campaign(self, id: str) -> StreamResponse[DeleteCampaignResponse]: path_params = { - "id": id, + "id": id, } - return self.delete( - "/api/v2/chat/campaigns/{id}", - DeleteCampaignResponse, - path_params=path_params, - ) - + return self.delete("/api/v2/chat/campaigns/{id}", DeleteCampaignResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_campaign") - def get_campaign( - self, - id: str, - prev: Optional[str] = None, - next: Optional[str] = None, - limit: Optional[int] = None, - ) -> StreamResponse[GetCampaignResponse]: + def get_campaign(self, id: str, prev: Optional[str] = None, next: Optional[str] = None, limit: Optional[int] = None) -> StreamResponse[GetCampaignResponse]: query_params = build_query_param(prev=prev, next=next, limit=limit) path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/chat/campaigns/{id}", - GetCampaignResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/chat/campaigns/{id}", GetCampaignResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_campaign") - def update_campaign( - self, - id: str, - sender_id: str, - message_template: CampaignMessageTemplate, - create_channels: Optional[bool] = None, - description: Optional[str] = None, - id_: Optional[str] = None, - name: Optional[str] = None, - sender_mode: Optional[str] = None, - sender_visibility: Optional[str] = None, - show_channels: Optional[bool] = None, - skip_push: Optional[bool] = None, - skip_webhook: Optional[bool] = None, - segment_ids: Optional[List[str]] = None, - user_ids: Optional[List[str]] = None, - channel_template: Optional[CampaignChannelTemplate] = None, - ) -> StreamResponse[CampaignResponse]: - path_params = { - "id": id, - } - json = UpdateCampaignRequest( - sender_id=sender_id, - message_template=message_template, - create_channels=create_channels, - description=description, - id=id_, - name=name, - sender_mode=sender_mode, - sender_visibility=sender_visibility, - show_channels=show_channels, - skip_push=skip_push, - skip_webhook=skip_webhook, - segment_ids=segment_ids, - user_ids=user_ids, - channel_template=channel_template, - ).to_dict() - return self.put( - "/api/v2/chat/campaigns/{id}", - CampaignResponse, - path_params=path_params, - json=json, - ) - + def update_campaign(self, id: str, sender_id: str, message_template: CampaignMessageTemplate, create_channels: Optional[bool] = None, description: Optional[str] = None, id_: Optional[str] = None, name: Optional[str] = None, sender_mode: Optional[str] = None, sender_visibility: Optional[str] = None, show_channels: Optional[bool] = None, skip_push: Optional[bool] = None, skip_webhook: Optional[bool] = None, segment_ids: Optional[List[str]] = None, user_ids: Optional[List[str]] = None, channel_template: Optional[CampaignChannelTemplate] = None) -> StreamResponse[CampaignResponse]: + path_params = { + "id": id, + } + json = UpdateCampaignRequest(sender_id=sender_id, message_template=message_template, create_channels=create_channels, description=description, id=id_, name=name, sender_mode=sender_mode, sender_visibility=sender_visibility, show_channels=show_channels, skip_push=skip_push, skip_webhook=skip_webhook, segment_ids=segment_ids, user_ids=user_ids, channel_template=channel_template).to_dict() + return self.put("/api/v2/chat/campaigns/{id}", CampaignResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.start_campaign") - def start_campaign( - self, - id: str, - scheduled_for: Optional[datetime] = None, - stop_at: Optional[datetime] = None, - ) -> StreamResponse[StartCampaignResponse]: - path_params = { - "id": id, - } - json = StartCampaignRequest( - scheduled_for=scheduled_for, stop_at=stop_at - ).to_dict() - return self.post( - "/api/v2/chat/campaigns/{id}/start", - StartCampaignResponse, - path_params=path_params, - json=json, - ) - + def start_campaign(self, id: str, scheduled_for: Optional[datetime] = None, stop_at: Optional[datetime] = None) -> StreamResponse[StartCampaignResponse]: + path_params = { + "id": id, + } + json = StartCampaignRequest(scheduled_for=scheduled_for, stop_at=stop_at).to_dict() + return self.post("/api/v2/chat/campaigns/{id}/start", StartCampaignResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.stop_campaign") - def stop_campaign( - self, - id: str, - ) -> StreamResponse[CampaignResponse]: + def stop_campaign(self, id: str, ) -> StreamResponse[CampaignResponse]: path_params = { - "id": id, + "id": id, } json = StopCampaignRequest().to_dict() - return self.post( - "/api/v2/chat/campaigns/{id}/stop", - CampaignResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/chat/campaigns/{id}/stop", CampaignResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.query_channels") - def query_channels( - self, - limit: Optional[int] = None, - member_limit: Optional[int] = None, - message_limit: Optional[int] = None, - offset: Optional[int] = None, - predefined_filter: Optional[str] = None, - state: Optional[bool] = None, - user_id: Optional[str] = None, - member_custom_include: Optional[List[str]] = None, - sort: Optional[List[SortParamRequest]] = None, - filter_conditions: Optional[Dict[str, object]] = None, - filter_values: Optional[Dict[str, object]] = None, - sort_values: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryChannelsResponse]: - json = QueryChannelsRequest( - limit=limit, - member_limit=member_limit, - message_limit=message_limit, - offset=offset, - predefined_filter=predefined_filter, - state=state, - user_id=user_id, - member_custom_include=member_custom_include, - sort=sort, - filter_conditions=filter_conditions, - filter_values=filter_values, - sort_values=sort_values, - user=user, - ).to_dict() + def query_channels(self, limit: Optional[int] = None, member_limit: Optional[int] = None, message_limit: Optional[int] = None, offset: Optional[int] = None, predefined_filter: Optional[str] = None, state: Optional[bool] = None, user_id: Optional[str] = None, member_custom_include: Optional[List[str]] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None, filter_values: Optional[Dict[str, object]] = None, sort_values: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryChannelsResponse]: + json = QueryChannelsRequest(limit=limit, member_limit=member_limit, message_limit=message_limit, offset=offset, predefined_filter=predefined_filter, state=state, user_id=user_id, member_custom_include=member_custom_include, sort=sort, filter_conditions=filter_conditions, filter_values=filter_values, sort_values=sort_values, user=user).to_dict() return self.post("/api/v2/chat/channels", QueryChannelsResponse, json=json) - + @telemetry.operation_name("getstream.api.chat.channel_batch_update") - def channel_batch_update( - self, - operation: str, - filter: Dict[str, object], - members: Optional[List[ChannelBatchMemberRequest]] = None, - data: Optional[ChannelDataUpdate] = None, - ) -> StreamResponse[ChannelBatchUpdateResponse]: - json = ChannelBatchUpdateRequest( - operation=operation, filter=filter, members=members, data=data - ).to_dict() - return self.put( - "/api/v2/chat/channels/batch", ChannelBatchUpdateResponse, json=json - ) - + def channel_batch_update(self, operation: str, filter: Dict[str, object], custom_unset: Optional[List[str]] = None, members: Optional[List[ChannelBatchMemberRequest]] = None, custom_set: Optional[Dict[str, object]] = None, data: Optional[ChannelDataUpdate] = None) -> StreamResponse[ChannelBatchUpdateResponse]: + json = ChannelBatchUpdateRequest(operation=operation, filter=filter, custom_unset=custom_unset, members=members, custom_set=custom_set, data=data).to_dict() + return self.put("/api/v2/chat/channels/batch", ChannelBatchUpdateResponse, json=json) + @telemetry.operation_name("getstream.api.chat.delete_channels") - def delete_channels( - self, cids: List[str], hard_delete: Optional[bool] = None - ) -> StreamResponse[DeleteChannelsResponse]: + def delete_channels(self, cids: List[str], hard_delete: Optional[bool] = None) -> StreamResponse[DeleteChannelsResponse]: json = DeleteChannelsRequest(cids=cids, hard_delete=hard_delete).to_dict() - return self.post( - "/api/v2/chat/channels/delete", DeleteChannelsResponse, json=json - ) - + return self.post("/api/v2/chat/channels/delete", DeleteChannelsResponse, json=json) + @telemetry.operation_name("getstream.api.chat.mark_delivered") - def mark_delivered( - self, - user_id: Optional[str] = None, - latest_delivered_messages: Optional[List[DeliveredMessagePayload]] = None, - ) -> StreamResponse[MarkDeliveredResponse]: + def mark_delivered(self, user_id: Optional[str] = None, latest_delivered_messages: Optional[List[DeliveredMessagePayload]] = None) -> StreamResponse[MarkDeliveredResponse]: query_params = build_query_param(user_id=user_id) - json = MarkDeliveredRequest( - latest_delivered_messages=latest_delivered_messages - ).to_dict() - return self.post( - "/api/v2/chat/channels/delivered", - MarkDeliveredResponse, - query_params=query_params, - json=json, - ) - + json = MarkDeliveredRequest(latest_delivered_messages=latest_delivered_messages).to_dict() + return self.post("/api/v2/chat/channels/delivered", MarkDeliveredResponse, query_params=query_params, json=json) + @telemetry.operation_name("getstream.api.chat.grouped_query_channels") - def grouped_query_channels( - self, - limit: Optional[int] = None, - user_id: Optional[str] = None, - groups: Optional[Dict[str, GroupedChannelsGroupRequest]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[GroupedQueryChannelsResponse]: - json = GroupedQueryChannelsRequest( - limit=limit, user_id=user_id, groups=groups, user=user - ).to_dict() - return self.post( - "/api/v2/chat/channels/grouped", GroupedQueryChannelsResponse, json=json - ) - + def grouped_query_channels(self, limit: Optional[int] = None, user_id: Optional[str] = None, groups: Optional[Dict[str, GroupedChannelsGroupRequest]] = None, user: Optional[UserRequest] = None) -> StreamResponse[GroupedQueryChannelsResponse]: + json = GroupedQueryChannelsRequest(limit=limit, user_id=user_id, groups=groups, user=user).to_dict() + return self.post("/api/v2/chat/channels/grouped", GroupedQueryChannelsResponse, json=json) + @telemetry.operation_name("getstream.api.chat.mark_channels_read") - def mark_channels_read( - self, - user_id: Optional[str] = None, - read_by_channel: Optional[Dict[str, str]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[MarkReadResponse]: - json = MarkChannelsReadRequest( - user_id=user_id, read_by_channel=read_by_channel, user=user - ).to_dict() + def mark_channels_read(self, user_id: Optional[str] = None, read_by_channel: Optional[Dict[str, str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[MarkReadResponse]: + json = MarkChannelsReadRequest(user_id=user_id, read_by_channel=read_by_channel, user=user).to_dict() return self.post("/api/v2/chat/channels/read", MarkReadResponse, json=json) - + @telemetry.operation_name("getstream.api.chat.get_or_create_distinct_channel") - def get_or_create_distinct_channel( - self, - type: str, - hide_for_creator: Optional[bool] = None, - state: Optional[bool] = None, - thread_unread_counts: Optional[bool] = None, - member_custom_include: Optional[List[str]] = None, - data: Optional[ChannelInput] = None, - members: Optional[PaginationParams] = None, - messages: Optional[MessagePaginationParams] = None, - watchers: Optional[PaginationParams] = None, - ) -> StreamResponse[ChannelStateResponse]: - path_params = { - "type": type, - } - json = ChannelGetOrCreateRequest( - hide_for_creator=hide_for_creator, - state=state, - thread_unread_counts=thread_unread_counts, - member_custom_include=member_custom_include, - data=data, - members=members, - messages=messages, - watchers=watchers, - ).to_dict() - return self.post( - "/api/v2/chat/channels/{type}/query", - ChannelStateResponse, - path_params=path_params, - json=json, - ) - + def get_or_create_distinct_channel(self, type: str, hide_for_creator: Optional[bool] = None, state: Optional[bool] = None, thread_unread_counts: Optional[bool] = None, member_custom_include: Optional[List[str]] = None, data: Optional[ChannelInput] = None, members: Optional[PaginationParams] = None, messages: Optional[MessagePaginationParams] = None, watchers: Optional[PaginationParams] = None) -> StreamResponse[ChannelStateResponse]: + path_params = { + "type": type, + } + json = ChannelGetOrCreateRequest(hide_for_creator=hide_for_creator, state=state, thread_unread_counts=thread_unread_counts, member_custom_include=member_custom_include, data=data, members=members, messages=messages, watchers=watchers).to_dict() + return self.post("/api/v2/chat/channels/{type}/query", ChannelStateResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.delete_channel") - def delete_channel( - self, type: str, id: str, hard_delete: Optional[bool] = None - ) -> StreamResponse[DeleteChannelResponse]: + def delete_channel(self, type: str, id: str, hard_delete: Optional[bool] = None) -> StreamResponse[DeleteChannelResponse]: query_params = build_query_param(hard_delete=hard_delete) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return self.delete( - "/api/v2/chat/channels/{type}/{id}", - DeleteChannelResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/chat/channels/{type}/{id}", DeleteChannelResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_channel") - def get_channel( - self, - type: str, - id: str, - state: Optional[bool] = None, - messages_limit: Optional[int] = None, - members_limit: Optional[int] = None, - watchers_limit: Optional[int] = None, - messages_id_lt: Optional[str] = None, - messages_id_lte: Optional[str] = None, - messages_id_gt: Optional[str] = None, - messages_id_gte: Optional[str] = None, - messages_id_around: Optional[str] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[ChannelStateResponse]: - query_params = build_query_param( - state=state, - messages_limit=messages_limit, - members_limit=members_limit, - watchers_limit=watchers_limit, - messages_id_lt=messages_id_lt, - messages_id_lte=messages_id_lte, - messages_id_gt=messages_id_gt, - messages_id_gte=messages_id_gte, - messages_id_around=messages_id_around, - user_id=user_id, - ) + def get_channel(self, type: str, id: str, state: Optional[bool] = None, messages_limit: Optional[int] = None, members_limit: Optional[int] = None, watchers_limit: Optional[int] = None, messages_id_lt: Optional[str] = None, messages_id_lte: Optional[str] = None, messages_id_gt: Optional[str] = None, messages_id_gte: Optional[str] = None, messages_id_around: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[ChannelStateResponse]: + query_params = build_query_param(state=state, messages_limit=messages_limit, members_limit=members_limit, watchers_limit=watchers_limit, messages_id_lt=messages_id_lt, messages_id_lte=messages_id_lte, messages_id_gt=messages_id_gt, messages_id_gte=messages_id_gte, messages_id_around=messages_id_around, user_id=user_id) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return self.get( - "/api/v2/chat/channels/{type}/{id}", - ChannelStateResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/chat/channels/{type}/{id}", ChannelStateResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_channel_partial") - def update_channel_partial( - self, - type: str, - id: str, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateChannelPartialResponse]: - path_params = { - "type": type, - "id": id, - } - json = UpdateChannelPartialRequest( - user_id=user_id, unset=unset, set=set, user=user - ).to_dict() - return self.patch( - "/api/v2/chat/channels/{type}/{id}", - UpdateChannelPartialResponse, - path_params=path_params, - json=json, - ) - + def update_channel_partial(self, type: str, id: str, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateChannelPartialResponse]: + path_params = { + "type": type, "id": id, + } + json = UpdateChannelPartialRequest(user_id=user_id, unset=unset, set=set, user=user).to_dict() + return self.patch("/api/v2/chat/channels/{type}/{id}", UpdateChannelPartialResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.update_channel") - def update_channel( - self, - type: str, - id: str, - accept_invite: Optional[bool] = None, - cooldown: Optional[int] = None, - hide_history: Optional[bool] = None, - hide_history_before: Optional[datetime] = None, - reject_invite: Optional[bool] = None, - skip_push: Optional[bool] = None, - user_id: Optional[str] = None, - add_filter_tags: Optional[List[str]] = None, - add_members: Optional[List[ChannelMemberRequest]] = None, - add_moderators: Optional[List[str]] = None, - assign_roles: Optional[List[ChannelMemberRequest]] = None, - demote_moderators: Optional[List[str]] = None, - invites: Optional[List[ChannelMemberRequest]] = None, - remove_filter_tags: Optional[List[str]] = None, - remove_members: Optional[List[str]] = None, - data: Optional[ChannelInputRequest] = None, - message: Optional[MessageRequest] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateChannelResponse]: - path_params = { - "type": type, - "id": id, - } - json = UpdateChannelRequest( - accept_invite=accept_invite, - cooldown=cooldown, - hide_history=hide_history, - hide_history_before=hide_history_before, - reject_invite=reject_invite, - skip_push=skip_push, - user_id=user_id, - add_filter_tags=add_filter_tags, - add_members=add_members, - add_moderators=add_moderators, - assign_roles=assign_roles, - demote_moderators=demote_moderators, - invites=invites, - remove_filter_tags=remove_filter_tags, - remove_members=remove_members, - data=data, - message=message, - user=user, - ).to_dict() - return self.post( - "/api/v2/chat/channels/{type}/{id}", - UpdateChannelResponse, - path_params=path_params, - json=json, - ) - + def update_channel(self, type: str, id: str, accept_invite: Optional[bool] = None, cooldown: Optional[int] = None, hide_history: Optional[bool] = None, hide_history_before: Optional[datetime] = None, reject_invite: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, add_filter_tags: Optional[List[str]] = None, add_members: Optional[List[ChannelMemberRequest]] = None, add_moderators: Optional[List[str]] = None, assign_roles: Optional[List[ChannelMemberRequest]] = None, demote_moderators: Optional[List[str]] = None, invites: Optional[List[ChannelMemberRequest]] = None, remove_filter_tags: Optional[List[str]] = None, remove_members: Optional[List[str]] = None, data: Optional[ChannelInputRequest] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateChannelResponse]: + path_params = { + "type": type, "id": id, + } + json = UpdateChannelRequest(accept_invite=accept_invite, cooldown=cooldown, hide_history=hide_history, hide_history_before=hide_history_before, reject_invite=reject_invite, skip_push=skip_push, user_id=user_id, add_filter_tags=add_filter_tags, add_members=add_members, add_moderators=add_moderators, assign_roles=assign_roles, demote_moderators=demote_moderators, invites=invites, remove_filter_tags=remove_filter_tags, remove_members=remove_members, data=data, message=message, user=user).to_dict() + return self.post("/api/v2/chat/channels/{type}/{id}", UpdateChannelResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.delete_draft") - def delete_draft( - self, - type: str, - id: str, - parent_id: Optional[str] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[Response]: + def delete_draft(self, type: str, id: str, parent_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(parent_id=parent_id, user_id=user_id) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return self.delete( - "/api/v2/chat/channels/{type}/{id}/draft", - Response, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/chat/channels/{type}/{id}/draft", Response, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_draft") - def get_draft( - self, - type: str, - id: str, - parent_id: Optional[str] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[GetDraftResponse]: + def get_draft(self, type: str, id: str, parent_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[GetDraftResponse]: query_params = build_query_param(parent_id=parent_id, user_id=user_id) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return self.get( - "/api/v2/chat/channels/{type}/{id}/draft", - GetDraftResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/chat/channels/{type}/{id}/draft", GetDraftResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.send_event") - def send_event( - self, type: str, id: str, event: EventRequest - ) -> StreamResponse[EventResponse]: + def send_event(self, type: str, id: str, event: EventRequest) -> StreamResponse[EventResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = SendEventRequest(event=event).to_dict() - return self.post( - "/api/v2/chat/channels/{type}/{id}/event", - EventResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/chat/channels/{type}/{id}/event", EventResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.delete_channel_file") - def delete_channel_file( - self, type: str, id: str, url: Optional[str] = None - ) -> StreamResponse[Response]: + def delete_channel_file(self, type: str, id: str, url: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(url=url) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return self.delete( - "/api/v2/chat/channels/{type}/{id}/file", - Response, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/chat/channels/{type}/{id}/file", Response, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.upload_channel_file") - def upload_channel_file( - self, - type: str, - id: str, - file: Optional[str] = None, - user: Optional[OnlyUserID] = None, - ) -> StreamResponse[UploadChannelFileResponse]: + def upload_channel_file(self, type: str, id: str, file: Optional[str] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[UploadChannelFileResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = UploadChannelFileRequest(file=file, user=user).to_dict() - return self.post( - "/api/v2/chat/channels/{type}/{id}/file", - UploadChannelFileResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/chat/channels/{type}/{id}/file", UploadChannelFileResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.hide_channel") - def hide_channel( - self, - type: str, - id: str, - clear_history: Optional[bool] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[HideChannelResponse]: - path_params = { - "type": type, - "id": id, - } - json = HideChannelRequest( - clear_history=clear_history, user_id=user_id, user=user - ).to_dict() - return self.post( - "/api/v2/chat/channels/{type}/{id}/hide", - HideChannelResponse, - path_params=path_params, - json=json, - ) - + def hide_channel(self, type: str, id: str, clear_history: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[HideChannelResponse]: + path_params = { + "type": type, "id": id, + } + json = HideChannelRequest(clear_history=clear_history, user_id=user_id, user=user).to_dict() + return self.post("/api/v2/chat/channels/{type}/{id}/hide", HideChannelResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.delete_channel_image") - def delete_channel_image( - self, type: str, id: str, url: Optional[str] = None - ) -> StreamResponse[Response]: + def delete_channel_image(self, type: str, id: str, url: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(url=url) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return self.delete( - "/api/v2/chat/channels/{type}/{id}/image", - Response, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/chat/channels/{type}/{id}/image", Response, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.upload_channel_image") - def upload_channel_image( - self, - type: str, - id: str, - file: Optional[str] = None, - upload_sizes: Optional[List[ImageSize]] = None, - user: Optional[OnlyUserID] = None, - ) -> StreamResponse[UploadChannelResponse]: - path_params = { - "type": type, - "id": id, - } - json = UploadChannelRequest( - file=file, upload_sizes=upload_sizes, user=user - ).to_dict() - return self.post( - "/api/v2/chat/channels/{type}/{id}/image", - UploadChannelResponse, - path_params=path_params, - json=json, - ) - + def upload_channel_image(self, type: str, id: str, file: Optional[str] = None, upload_sizes: Optional[List[ImageSize]] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[UploadChannelResponse]: + path_params = { + "type": type, "id": id, + } + json = UploadChannelRequest(file=file, upload_sizes=upload_sizes, user=user).to_dict() + return self.post("/api/v2/chat/channels/{type}/{id}/image", UploadChannelResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.update_member_partial") - def update_member_partial( - self, - type: str, - id: str, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - ) -> StreamResponse[UpdateMemberPartialResponse]: + def update_member_partial(self, type: str, id: str, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None) -> StreamResponse[UpdateMemberPartialResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = UpdateMemberPartialRequest(unset=unset, set=set).to_dict() - return self.patch( - "/api/v2/chat/channels/{type}/{id}/member", - UpdateMemberPartialResponse, - query_params=query_params, - path_params=path_params, - json=json, - ) - + return self.patch("/api/v2/chat/channels/{type}/{id}/member", UpdateMemberPartialResponse, query_params=query_params, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.send_message") - def send_message( - self, - type: str, - id: str, - message: MessageRequest, - force_moderation: Optional[bool] = None, - include_channel_context: Optional[bool] = None, - include_mentioned_members: Optional[bool] = None, - keep_channel_hidden: Optional[bool] = None, - pending: Optional[bool] = None, - skip_enrich_url: Optional[bool] = None, - skip_push: Optional[bool] = None, - pending_message_metadata: Optional[Dict[str, str]] = None, - ) -> StreamResponse[SendMessageResponse]: - path_params = { - "type": type, - "id": id, - } - json = SendMessageRequest( - message=message, - force_moderation=force_moderation, - include_channel_context=include_channel_context, - include_mentioned_members=include_mentioned_members, - keep_channel_hidden=keep_channel_hidden, - pending=pending, - skip_enrich_url=skip_enrich_url, - skip_push=skip_push, - pending_message_metadata=pending_message_metadata, - ).to_dict() - return self.post( - "/api/v2/chat/channels/{type}/{id}/message", - SendMessageResponse, - path_params=path_params, - json=json, - ) - + def send_message(self, type: str, id: str, message: MessageRequest, force_moderation: Optional[bool] = None, include_channel_context: Optional[bool] = None, include_mentioned_members: Optional[bool] = None, keep_channel_hidden: Optional[bool] = None, pending: Optional[bool] = None, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, pending_message_metadata: Optional[Dict[str, str]] = None) -> StreamResponse[SendMessageResponse]: + path_params = { + "type": type, "id": id, + } + json = SendMessageRequest(message=message, force_moderation=force_moderation, include_channel_context=include_channel_context, include_mentioned_members=include_mentioned_members, keep_channel_hidden=keep_channel_hidden, pending=pending, skip_enrich_url=skip_enrich_url, skip_push=skip_push, pending_message_metadata=pending_message_metadata).to_dict() + return self.post("/api/v2/chat/channels/{type}/{id}/message", SendMessageResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.get_many_messages") - def get_many_messages( - self, - type: str, - id: str, - ids: List[str], - member_custom_include: Optional[List[str]] = None, - ) -> StreamResponse[GetManyMessagesResponse]: - query_params = build_query_param( - ids=ids, member_custom_include=member_custom_include - ) + def get_many_messages(self, type: str, id: str, ids: List[str], member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetManyMessagesResponse]: + query_params = build_query_param(ids=ids, member_custom_include=member_custom_include) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return self.get( - "/api/v2/chat/channels/{type}/{id}/messages", - GetManyMessagesResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/chat/channels/{type}/{id}/messages", GetManyMessagesResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_pinned_messages") - def get_pinned_messages( - self, - type: str, - id: str, - limit: Optional[int] = None, - offset: Optional[int] = None, - id_gte: Optional[str] = None, - id_gt: Optional[str] = None, - id_lte: Optional[str] = None, - id_lt: Optional[str] = None, - pinned_at_after_or_equal: Optional[datetime] = None, - pinned_at_after: Optional[datetime] = None, - pinned_at_before_or_equal: Optional[datetime] = None, - pinned_at_before: Optional[datetime] = None, - id_around: Optional[str] = None, - pinned_at_around: Optional[datetime] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - member_custom_include: Optional[List[str]] = None, - ) -> StreamResponse[GetPinnedMessagesResponse]: - query_params = build_query_param( - limit=limit, - offset=offset, - id_gte=id_gte, - id_gt=id_gt, - id_lte=id_lte, - id_lt=id_lt, - pinned_at_after_or_equal=pinned_at_after_or_equal, - pinned_at_after=pinned_at_after, - pinned_at_before_or_equal=pinned_at_before_or_equal, - pinned_at_before=pinned_at_before, - id_around=id_around, - pinned_at_around=pinned_at_around, - user_id=user_id, - sort=sort, - member_custom_include=member_custom_include, - ) + def get_pinned_messages(self, type: str, id: str, limit: Optional[int] = None, offset: Optional[int] = None, id_gte: Optional[str] = None, id_gt: Optional[str] = None, id_lte: Optional[str] = None, id_lt: Optional[str] = None, pinned_at_after_or_equal: Optional[datetime] = None, pinned_at_after: Optional[datetime] = None, pinned_at_before_or_equal: Optional[datetime] = None, pinned_at_before: Optional[datetime] = None, id_around: Optional[str] = None, pinned_at_around: Optional[datetime] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetPinnedMessagesResponse]: + query_params = build_query_param(limit=limit, offset=offset, id_gte=id_gte, id_gt=id_gt, id_lte=id_lte, id_lt=id_lt, pinned_at_after_or_equal=pinned_at_after_or_equal, pinned_at_after=pinned_at_after, pinned_at_before_or_equal=pinned_at_before_or_equal, pinned_at_before=pinned_at_before, id_around=id_around, pinned_at_around=pinned_at_around, user_id=user_id, sort=sort, member_custom_include=member_custom_include) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return self.get( - "/api/v2/chat/channels/{type}/{id}/pinned_messages", - GetPinnedMessagesResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/chat/channels/{type}/{id}/pinned_messages", GetPinnedMessagesResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_or_create_channel") - def get_or_create_channel( - self, - type: str, - id: str, - hide_for_creator: Optional[bool] = None, - state: Optional[bool] = None, - thread_unread_counts: Optional[bool] = None, - member_custom_include: Optional[List[str]] = None, - data: Optional[ChannelInput] = None, - members: Optional[PaginationParams] = None, - messages: Optional[MessagePaginationParams] = None, - watchers: Optional[PaginationParams] = None, - ) -> StreamResponse[ChannelStateResponse]: - path_params = { - "type": type, - "id": id, - } - json = ChannelGetOrCreateRequest( - hide_for_creator=hide_for_creator, - state=state, - thread_unread_counts=thread_unread_counts, - member_custom_include=member_custom_include, - data=data, - members=members, - messages=messages, - watchers=watchers, - ).to_dict() - return self.post( - "/api/v2/chat/channels/{type}/{id}/query", - ChannelStateResponse, - path_params=path_params, - json=json, - ) - + def get_or_create_channel(self, type: str, id: str, hide_for_creator: Optional[bool] = None, state: Optional[bool] = None, thread_unread_counts: Optional[bool] = None, member_custom_include: Optional[List[str]] = None, data: Optional[ChannelInput] = None, members: Optional[PaginationParams] = None, messages: Optional[MessagePaginationParams] = None, watchers: Optional[PaginationParams] = None) -> StreamResponse[ChannelStateResponse]: + path_params = { + "type": type, "id": id, + } + json = ChannelGetOrCreateRequest(hide_for_creator=hide_for_creator, state=state, thread_unread_counts=thread_unread_counts, member_custom_include=member_custom_include, data=data, members=members, messages=messages, watchers=watchers).to_dict() + return self.post("/api/v2/chat/channels/{type}/{id}/query", ChannelStateResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.mark_read") - def mark_read( - self, - type: str, - id: str, - message_id: Optional[str] = None, - thread_id: Optional[str] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[MarkReadResponse]: - path_params = { - "type": type, - "id": id, - } - json = MarkReadRequest( - message_id=message_id, thread_id=thread_id, user_id=user_id, user=user - ).to_dict() - return self.post( - "/api/v2/chat/channels/{type}/{id}/read", - MarkReadResponse, - path_params=path_params, - json=json, - ) - + def mark_read(self, type: str, id: str, message_id: Optional[str] = None, thread_id: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[MarkReadResponse]: + path_params = { + "type": type, "id": id, + } + json = MarkReadRequest(message_id=message_id, thread_id=thread_id, user_id=user_id, user=user).to_dict() + return self.post("/api/v2/chat/channels/{type}/{id}/read", MarkReadResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.show_channel") - def show_channel( - self, - type: str, - id: str, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[ShowChannelResponse]: + def show_channel(self, type: str, id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[ShowChannelResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = ShowChannelRequest(user_id=user_id, user=user).to_dict() - return self.post( - "/api/v2/chat/channels/{type}/{id}/show", - ShowChannelResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/chat/channels/{type}/{id}/show", ShowChannelResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.truncate_channel") - def truncate_channel( - self, - type: str, - id: str, - hard_delete: Optional[bool] = None, - skip_push: Optional[bool] = None, - truncated_at: Optional[datetime] = None, - user_id: Optional[str] = None, - member_ids: Optional[List[str]] = None, - message: Optional[MessageRequest] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[TruncateChannelResponse]: - path_params = { - "type": type, - "id": id, - } - json = TruncateChannelRequest( - hard_delete=hard_delete, - skip_push=skip_push, - truncated_at=truncated_at, - user_id=user_id, - member_ids=member_ids, - message=message, - user=user, - ).to_dict() - return self.post( - "/api/v2/chat/channels/{type}/{id}/truncate", - TruncateChannelResponse, - path_params=path_params, - json=json, - ) - + def truncate_channel(self, type: str, id: str, hard_delete: Optional[bool] = None, skip_push: Optional[bool] = None, truncated_at: Optional[datetime] = None, user_id: Optional[str] = None, member_ids: Optional[List[str]] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[TruncateChannelResponse]: + path_params = { + "type": type, "id": id, + } + json = TruncateChannelRequest(hard_delete=hard_delete, skip_push=skip_push, truncated_at=truncated_at, user_id=user_id, member_ids=member_ids, message=message, user=user).to_dict() + return self.post("/api/v2/chat/channels/{type}/{id}/truncate", TruncateChannelResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.mark_unread") - def mark_unread( - self, - type: str, - id: str, - message_id: Optional[str] = None, - message_timestamp: Optional[datetime] = None, - thread_id: Optional[str] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[Response]: - path_params = { - "type": type, - "id": id, - } - json = MarkUnreadRequest( - message_id=message_id, - message_timestamp=message_timestamp, - thread_id=thread_id, - user_id=user_id, - user=user, - ).to_dict() - return self.post( - "/api/v2/chat/channels/{type}/{id}/unread", - Response, - path_params=path_params, - json=json, - ) - + def mark_unread(self, type: str, id: str, message_id: Optional[str] = None, message_timestamp: Optional[datetime] = None, thread_id: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[Response]: + path_params = { + "type": type, "id": id, + } + json = MarkUnreadRequest(message_id=message_id, message_timestamp=message_timestamp, thread_id=thread_id, user_id=user_id, user=user).to_dict() + return self.post("/api/v2/chat/channels/{type}/{id}/unread", Response, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.list_channel_types") def list_channel_types(self) -> StreamResponse[ListChannelTypesResponse]: return self.get("/api/v2/chat/channeltypes", ListChannelTypesResponse) - + @telemetry.operation_name("getstream.api.chat.create_channel_type") - def create_channel_type( - self, - automod: str, - automod_behavior: str, - max_message_length: int, - name: str, - blocklist: Optional[str] = None, - blocklist_behavior: Optional[str] = None, - connect_events: Optional[bool] = None, - count_messages: Optional[bool] = None, - custom_events: Optional[bool] = None, - delivery_events: Optional[bool] = None, - mark_messages_pending: Optional[bool] = None, - message_retention: Optional[str] = None, - mutes: Optional[bool] = None, - partition_size: Optional[int] = None, - partition_ttl: Optional[str] = None, - polls: Optional[bool] = None, - push_level: Optional[str] = None, - push_notifications: Optional[bool] = None, - reactions: Optional[bool] = None, - read_events: Optional[bool] = None, - replies: Optional[bool] = None, - search: Optional[bool] = None, - shared_locations: Optional[bool] = None, - skip_last_msg_update_for_system_msgs: Optional[bool] = None, - typing_events: Optional[bool] = None, - uploads: Optional[bool] = None, - url_enrichment: Optional[bool] = None, - user_message_reminders: Optional[bool] = None, - blocklists: Optional[List[BlockListOptions]] = None, - commands: Optional[List[str]] = None, - permissions: Optional[List[PolicyRequest]] = None, - chat_preferences: Optional[ChatPreferences] = None, - grants: Optional[Dict[str, List[str]]] = None, - ) -> StreamResponse[CreateChannelTypeResponse]: - json = CreateChannelTypeRequest( - automod=automod, - automod_behavior=automod_behavior, - max_message_length=max_message_length, - name=name, - blocklist=blocklist, - blocklist_behavior=blocklist_behavior, - connect_events=connect_events, - count_messages=count_messages, - custom_events=custom_events, - delivery_events=delivery_events, - mark_messages_pending=mark_messages_pending, - message_retention=message_retention, - mutes=mutes, - partition_size=partition_size, - partition_ttl=partition_ttl, - polls=polls, - push_level=push_level, - push_notifications=push_notifications, - reactions=reactions, - read_events=read_events, - replies=replies, - search=search, - shared_locations=shared_locations, - skip_last_msg_update_for_system_msgs=skip_last_msg_update_for_system_msgs, - typing_events=typing_events, - uploads=uploads, - url_enrichment=url_enrichment, - user_message_reminders=user_message_reminders, - blocklists=blocklists, - commands=commands, - permissions=permissions, - chat_preferences=chat_preferences, - grants=grants, - ).to_dict() - return self.post( - "/api/v2/chat/channeltypes", CreateChannelTypeResponse, json=json - ) - + def create_channel_type(self, automod: str, automod_behavior: str, max_message_length: int, name: str, blocklist: Optional[str] = None, blocklist_behavior: Optional[str] = None, connect_events: Optional[bool] = None, count_messages: Optional[bool] = None, custom_events: Optional[bool] = None, delivery_events: Optional[bool] = None, mark_messages_pending: Optional[bool] = None, message_retention: Optional[str] = None, mutes: Optional[bool] = None, partition_size: Optional[int] = None, partition_ttl: Optional[str] = None, polls: Optional[bool] = None, push_level: Optional[str] = None, push_notifications: Optional[bool] = None, reactions: Optional[bool] = None, read_events: Optional[bool] = None, replies: Optional[bool] = None, search: Optional[bool] = None, shared_locations: Optional[bool] = None, skip_last_msg_update_for_system_msgs: Optional[bool] = None, typing_events: Optional[bool] = None, uploads: Optional[bool] = None, url_enrichment: Optional[bool] = None, user_message_reminders: Optional[bool] = None, blocklists: Optional[List[BlockListOptions]] = None, commands: Optional[List[str]] = None, permissions: Optional[List[PolicyRequest]] = None, chat_preferences: Optional[ChatPreferences] = None, grants: Optional[Dict[str, List[str]]] = None) -> StreamResponse[CreateChannelTypeResponse]: + json = CreateChannelTypeRequest(automod=automod, automod_behavior=automod_behavior, max_message_length=max_message_length, name=name, blocklist=blocklist, blocklist_behavior=blocklist_behavior, connect_events=connect_events, count_messages=count_messages, custom_events=custom_events, delivery_events=delivery_events, mark_messages_pending=mark_messages_pending, message_retention=message_retention, mutes=mutes, partition_size=partition_size, partition_ttl=partition_ttl, polls=polls, push_level=push_level, push_notifications=push_notifications, reactions=reactions, read_events=read_events, replies=replies, search=search, shared_locations=shared_locations, skip_last_msg_update_for_system_msgs=skip_last_msg_update_for_system_msgs, typing_events=typing_events, uploads=uploads, url_enrichment=url_enrichment, user_message_reminders=user_message_reminders, blocklists=blocklists, commands=commands, permissions=permissions, chat_preferences=chat_preferences, grants=grants).to_dict() + return self.post("/api/v2/chat/channeltypes", CreateChannelTypeResponse, json=json) + @telemetry.operation_name("getstream.api.chat.delete_channel_type") def delete_channel_type(self, name: str) -> StreamResponse[Response]: path_params = { - "name": name, + "name": name, } - return self.delete( - "/api/v2/chat/channeltypes/{name}", Response, path_params=path_params - ) - + return self.delete("/api/v2/chat/channeltypes/{name}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_channel_type") def get_channel_type(self, name: str) -> StreamResponse[GetChannelTypeResponse]: path_params = { - "name": name, + "name": name, } - return self.get( - "/api/v2/chat/channeltypes/{name}", - GetChannelTypeResponse, - path_params=path_params, - ) - + return self.get("/api/v2/chat/channeltypes/{name}", GetChannelTypeResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_channel_type") - def update_channel_type( - self, - name: str, - automod: str, - automod_behavior: str, - max_message_length: int, - blocklist: Optional[str] = None, - blocklist_behavior: Optional[str] = None, - connect_events: Optional[bool] = None, - count_messages: Optional[bool] = None, - custom_events: Optional[bool] = None, - delivery_events: Optional[bool] = None, - mark_messages_pending: Optional[bool] = None, - message_retention: Optional[str] = None, - mutes: Optional[bool] = None, - partition_size: Optional[int] = None, - partition_ttl: Optional[str] = None, - polls: Optional[bool] = None, - push_level: Optional[str] = None, - push_notifications: Optional[bool] = None, - quotes: Optional[bool] = None, - reactions: Optional[bool] = None, - read_events: Optional[bool] = None, - reminders: Optional[bool] = None, - replies: Optional[bool] = None, - search: Optional[bool] = None, - shared_locations: Optional[bool] = None, - skip_last_msg_update_for_system_msgs: Optional[bool] = None, - typing_events: Optional[bool] = None, - uploads: Optional[bool] = None, - url_enrichment: Optional[bool] = None, - user_message_reminders: Optional[bool] = None, - allowed_flag_reasons: Optional[List[str]] = None, - blocklists: Optional[List[BlockListOptions]] = None, - commands: Optional[List[str]] = None, - permissions: Optional[List[PolicyRequest]] = None, - automod_thresholds: Optional[Thresholds] = None, - chat_preferences: Optional[ChatPreferences] = None, - grants: Optional[Dict[str, List[str]]] = None, - ) -> StreamResponse[UpdateChannelTypeResponse]: - path_params = { - "name": name, - } - json = UpdateChannelTypeRequest( - automod=automod, - automod_behavior=automod_behavior, - max_message_length=max_message_length, - blocklist=blocklist, - blocklist_behavior=blocklist_behavior, - connect_events=connect_events, - count_messages=count_messages, - custom_events=custom_events, - delivery_events=delivery_events, - mark_messages_pending=mark_messages_pending, - message_retention=message_retention, - mutes=mutes, - partition_size=partition_size, - partition_ttl=partition_ttl, - polls=polls, - push_level=push_level, - push_notifications=push_notifications, - quotes=quotes, - reactions=reactions, - read_events=read_events, - reminders=reminders, - replies=replies, - search=search, - shared_locations=shared_locations, - skip_last_msg_update_for_system_msgs=skip_last_msg_update_for_system_msgs, - typing_events=typing_events, - uploads=uploads, - url_enrichment=url_enrichment, - user_message_reminders=user_message_reminders, - allowed_flag_reasons=allowed_flag_reasons, - blocklists=blocklists, - commands=commands, - permissions=permissions, - automod_thresholds=automod_thresholds, - chat_preferences=chat_preferences, - grants=grants, - ).to_dict() - return self.put( - "/api/v2/chat/channeltypes/{name}", - UpdateChannelTypeResponse, - path_params=path_params, - json=json, - ) - + def update_channel_type(self, name: str, automod: str, automod_behavior: str, max_message_length: int, blocklist: Optional[str] = None, blocklist_behavior: Optional[str] = None, connect_events: Optional[bool] = None, count_messages: Optional[bool] = None, custom_events: Optional[bool] = None, delivery_events: Optional[bool] = None, mark_messages_pending: Optional[bool] = None, message_retention: Optional[str] = None, mutes: Optional[bool] = None, partition_size: Optional[int] = None, partition_ttl: Optional[str] = None, polls: Optional[bool] = None, push_level: Optional[str] = None, push_notifications: Optional[bool] = None, quotes: Optional[bool] = None, reactions: Optional[bool] = None, read_events: Optional[bool] = None, reminders: Optional[bool] = None, replies: Optional[bool] = None, search: Optional[bool] = None, shared_locations: Optional[bool] = None, skip_last_msg_update_for_system_msgs: Optional[bool] = None, typing_events: Optional[bool] = None, uploads: Optional[bool] = None, url_enrichment: Optional[bool] = None, user_message_reminders: Optional[bool] = None, allowed_flag_reasons: Optional[List[str]] = None, blocklists: Optional[List[BlockListOptions]] = None, commands: Optional[List[str]] = None, permissions: Optional[List[PolicyRequest]] = None, automod_thresholds: Optional[Thresholds] = None, chat_preferences: Optional[ChatPreferences] = None, grants: Optional[Dict[str, List[str]]] = None) -> StreamResponse[UpdateChannelTypeResponse]: + path_params = { + "name": name, + } + json = UpdateChannelTypeRequest(automod=automod, automod_behavior=automod_behavior, max_message_length=max_message_length, blocklist=blocklist, blocklist_behavior=blocklist_behavior, connect_events=connect_events, count_messages=count_messages, custom_events=custom_events, delivery_events=delivery_events, mark_messages_pending=mark_messages_pending, message_retention=message_retention, mutes=mutes, partition_size=partition_size, partition_ttl=partition_ttl, polls=polls, push_level=push_level, push_notifications=push_notifications, quotes=quotes, reactions=reactions, read_events=read_events, reminders=reminders, replies=replies, search=search, shared_locations=shared_locations, skip_last_msg_update_for_system_msgs=skip_last_msg_update_for_system_msgs, typing_events=typing_events, uploads=uploads, url_enrichment=url_enrichment, user_message_reminders=user_message_reminders, allowed_flag_reasons=allowed_flag_reasons, blocklists=blocklists, commands=commands, permissions=permissions, automod_thresholds=automod_thresholds, chat_preferences=chat_preferences, grants=grants).to_dict() + return self.put("/api/v2/chat/channeltypes/{name}", UpdateChannelTypeResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.list_commands") def list_commands(self) -> StreamResponse[ListCommandsResponse]: return self.get("/api/v2/chat/commands", ListCommandsResponse) - + @telemetry.operation_name("getstream.api.chat.create_command") - def create_command( - self, - description: str, - name: str, - args: Optional[str] = None, - set: Optional[str] = None, - ) -> StreamResponse[CreateCommandResponse]: - json = CreateCommandRequest( - description=description, name=name, args=args, set=set - ).to_dict() + def create_command(self, description: str, name: str, args: Optional[str] = None, set: Optional[str] = None) -> StreamResponse[CreateCommandResponse]: + json = CreateCommandRequest(description=description, name=name, args=args, set=set).to_dict() return self.post("/api/v2/chat/commands", CreateCommandResponse, json=json) - + @telemetry.operation_name("getstream.api.chat.delete_command") def delete_command(self, name: str) -> StreamResponse[DeleteCommandResponse]: path_params = { - "name": name, + "name": name, } - return self.delete( - "/api/v2/chat/commands/{name}", - DeleteCommandResponse, - path_params=path_params, - ) - + return self.delete("/api/v2/chat/commands/{name}", DeleteCommandResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_command") def get_command(self, name: str) -> StreamResponse[GetCommandResponse]: path_params = { - "name": name, + "name": name, } - return self.get( - "/api/v2/chat/commands/{name}", GetCommandResponse, path_params=path_params - ) - + return self.get("/api/v2/chat/commands/{name}", GetCommandResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_command") - def update_command( - self, - name: str, - description: str, - args: Optional[str] = None, - set: Optional[str] = None, - ) -> StreamResponse[UpdateCommandResponse]: - path_params = { - "name": name, - } - json = UpdateCommandRequest( - description=description, args=args, set=set - ).to_dict() - return self.put( - "/api/v2/chat/commands/{name}", - UpdateCommandResponse, - path_params=path_params, - json=json, - ) - + def update_command(self, name: str, description: str, args: Optional[str] = None, set: Optional[str] = None) -> StreamResponse[UpdateCommandResponse]: + path_params = { + "name": name, + } + json = UpdateCommandRequest(description=description, args=args, set=set).to_dict() + return self.put("/api/v2/chat/commands/{name}", UpdateCommandResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.query_drafts") - def query_drafts( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryDraftsResponse]: - json = QueryDraftsRequest( - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() + def query_drafts(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryDraftsResponse]: + json = QueryDraftsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() return self.post("/api/v2/chat/drafts/query", QueryDraftsResponse, json=json) - + @telemetry.operation_name("getstream.api.chat.export_channels") - def export_channels( - self, - channels: List[ChannelExport], - clear_deleted_message_text: Optional[bool] = None, - export_users: Optional[bool] = None, - format: Optional[str] = None, - include_soft_deleted_channels: Optional[bool] = None, - include_truncated_messages: Optional[bool] = None, - version: Optional[str] = None, - include_fields: Optional[List[str]] = None, - ) -> StreamResponse[ExportChannelsResponse]: - json = ExportChannelsRequest( - channels=channels, - clear_deleted_message_text=clear_deleted_message_text, - export_users=export_users, - format=format, - include_soft_deleted_channels=include_soft_deleted_channels, - include_truncated_messages=include_truncated_messages, - version=version, - include_fields=include_fields, - ).to_dict() - return self.post( - "/api/v2/chat/export_channels", ExportChannelsResponse, json=json - ) - + def export_channels(self, channels: List[ChannelExport], clear_deleted_message_text: Optional[bool] = None, export_users: Optional[bool] = None, format: Optional[str] = None, include_soft_deleted_channels: Optional[bool] = None, include_truncated_messages: Optional[bool] = None, version: Optional[str] = None, include_fields: Optional[List[str]] = None) -> StreamResponse[ExportChannelsResponse]: + json = ExportChannelsRequest(channels=channels, clear_deleted_message_text=clear_deleted_message_text, export_users=export_users, format=format, include_soft_deleted_channels=include_soft_deleted_channels, include_truncated_messages=include_truncated_messages, version=version, include_fields=include_fields).to_dict() + return self.post("/api/v2/chat/export_channels", ExportChannelsResponse, json=json) + @telemetry.operation_name("getstream.api.chat.query_members") - def query_members( - self, payload: Optional[QueryMembersPayload] = None - ) -> StreamResponse[MembersResponse]: + def query_members(self, payload: Optional[QueryMembersPayload] = None) -> StreamResponse[MembersResponse]: query_params = build_query_param(payload=payload) - return self.get( - "/api/v2/chat/members", MembersResponse, query_params=query_params - ) - + return self.get("/api/v2/chat/members", MembersResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.chat.query_message_history") - def query_message_history( - self, - filter: Dict[str, object], - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - ) -> StreamResponse[QueryMessageHistoryResponse]: - json = QueryMessageHistoryRequest( - filter=filter, limit=limit, next=next, prev=prev, sort=sort - ).to_dict() - return self.post( - "/api/v2/chat/messages/history", QueryMessageHistoryResponse, json=json - ) - + def query_message_history(self, filter: Dict[str, object], limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None) -> StreamResponse[QueryMessageHistoryResponse]: + json = QueryMessageHistoryRequest(filter=filter, limit=limit, next=next, prev=prev, sort=sort).to_dict() + return self.post("/api/v2/chat/messages/history", QueryMessageHistoryResponse, json=json) + @telemetry.operation_name("getstream.api.chat.delete_message") - def delete_message( - self, - id: str, - hard: Optional[bool] = None, - deleted_by: Optional[str] = None, - delete_for_me: Optional[bool] = None, - ) -> StreamResponse[DeleteMessageResponse]: - query_params = build_query_param( - hard=hard, deleted_by=deleted_by, delete_for_me=delete_for_me - ) + def delete_message(self, id: str, hard: Optional[bool] = None, deleted_by: Optional[str] = None, delete_for_me: Optional[bool] = None) -> StreamResponse[DeleteMessageResponse]: + query_params = build_query_param(hard=hard, deleted_by=deleted_by, delete_for_me=delete_for_me) path_params = { - "id": id, + "id": id, } - return self.delete( - "/api/v2/chat/messages/{id}", - DeleteMessageResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/chat/messages/{id}", DeleteMessageResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_message") - def get_message( - self, id: str, show_deleted_message: Optional[bool] = None - ) -> StreamResponse[GetMessageResponse]: + def get_message(self, id: str, show_deleted_message: Optional[bool] = None) -> StreamResponse[GetMessageResponse]: query_params = build_query_param(show_deleted_message=show_deleted_message) path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/chat/messages/{id}", - GetMessageResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/chat/messages/{id}", GetMessageResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_message") - def update_message( - self, - id: str, - message: MessageRequest, - skip_enrich_url: Optional[bool] = None, - skip_push: Optional[bool] = None, - ) -> StreamResponse[UpdateMessageResponse]: - path_params = { - "id": id, - } - json = UpdateMessageRequest( - message=message, skip_enrich_url=skip_enrich_url, skip_push=skip_push - ).to_dict() - return self.post( - "/api/v2/chat/messages/{id}", - UpdateMessageResponse, - path_params=path_params, - json=json, - ) - + def update_message(self, id: str, message: MessageRequest, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None) -> StreamResponse[UpdateMessageResponse]: + path_params = { + "id": id, + } + json = UpdateMessageRequest(message=message, skip_enrich_url=skip_enrich_url, skip_push=skip_push).to_dict() + return self.post("/api/v2/chat/messages/{id}", UpdateMessageResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.update_message_partial") - def update_message_partial( - self, - id: str, - skip_enrich_url: Optional[bool] = None, - skip_push: Optional[bool] = None, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateMessagePartialResponse]: - path_params = { - "id": id, - } - json = UpdateMessagePartialRequest( - skip_enrich_url=skip_enrich_url, - skip_push=skip_push, - user_id=user_id, - unset=unset, - set=set, - user=user, - ).to_dict() - return self.put( - "/api/v2/chat/messages/{id}", - UpdateMessagePartialResponse, - path_params=path_params, - json=json, - ) - + def update_message_partial(self, id: str, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateMessagePartialResponse]: + path_params = { + "id": id, + } + json = UpdateMessagePartialRequest(skip_enrich_url=skip_enrich_url, skip_push=skip_push, user_id=user_id, unset=unset, set=set, user=user).to_dict() + return self.put("/api/v2/chat/messages/{id}", UpdateMessagePartialResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.run_message_action") - def run_message_action( - self, - id: str, - form_data: Dict[str, str], - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[MessageActionResponse]: - path_params = { - "id": id, - } - json = MessageActionRequest( - form_data=form_data, user_id=user_id, user=user - ).to_dict() - return self.post( - "/api/v2/chat/messages/{id}/action", - MessageActionResponse, - path_params=path_params, - json=json, - ) - + def run_message_action(self, id: str, form_data: Dict[str, str], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[MessageActionResponse]: + path_params = { + "id": id, + } + json = MessageActionRequest(form_data=form_data, user_id=user_id, user=user).to_dict() + return self.post("/api/v2/chat/messages/{id}/action", MessageActionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.commit_message") - def commit_message( - self, - id: str, - ) -> StreamResponse[MessageActionResponse]: + def commit_message(self, id: str, ) -> StreamResponse[MessageActionResponse]: path_params = { - "id": id, + "id": id, } json = CommitMessageRequest().to_dict() - return self.post( - "/api/v2/chat/messages/{id}/commit", - MessageActionResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/chat/messages/{id}/commit", MessageActionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.ephemeral_message_update") - def ephemeral_message_update( - self, - id: str, - skip_enrich_url: Optional[bool] = None, - skip_push: Optional[bool] = None, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateMessagePartialResponse]: - path_params = { - "id": id, - } - json = UpdateMessagePartialRequest( - skip_enrich_url=skip_enrich_url, - skip_push=skip_push, - user_id=user_id, - unset=unset, - set=set, - user=user, - ).to_dict() - return self.patch( - "/api/v2/chat/messages/{id}/ephemeral", - UpdateMessagePartialResponse, - path_params=path_params, - json=json, - ) - + def ephemeral_message_update(self, id: str, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateMessagePartialResponse]: + path_params = { + "id": id, + } + json = UpdateMessagePartialRequest(skip_enrich_url=skip_enrich_url, skip_push=skip_push, user_id=user_id, unset=unset, set=set, user=user).to_dict() + return self.patch("/api/v2/chat/messages/{id}/ephemeral", UpdateMessagePartialResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.send_reaction") - def send_reaction( - self, - id: str, - reaction: ReactionRequest, - enforce_unique: Optional[bool] = None, - skip_push: Optional[bool] = None, - ) -> StreamResponse[SendReactionResponse]: - path_params = { - "id": id, - } - json = SendReactionRequest( - reaction=reaction, enforce_unique=enforce_unique, skip_push=skip_push - ).to_dict() - return self.post( - "/api/v2/chat/messages/{id}/reaction", - SendReactionResponse, - path_params=path_params, - json=json, - ) - + def send_reaction(self, id: str, reaction: ReactionRequest, enforce_unique: Optional[bool] = None, skip_push: Optional[bool] = None) -> StreamResponse[SendReactionResponse]: + path_params = { + "id": id, + } + json = SendReactionRequest(reaction=reaction, enforce_unique=enforce_unique, skip_push=skip_push).to_dict() + return self.post("/api/v2/chat/messages/{id}/reaction", SendReactionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.delete_reaction") - def delete_reaction( - self, id: str, type: str, user_id: Optional[str] = None - ) -> StreamResponse[DeleteReactionResponse]: + def delete_reaction(self, id: str, type: str, user_id: Optional[str] = None) -> StreamResponse[DeleteReactionResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "id": id, - "type": type, + "id": id, "type": type, } - return self.delete( - "/api/v2/chat/messages/{id}/reaction/{type}", - DeleteReactionResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/chat/messages/{id}/reaction/{type}", DeleteReactionResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_reactions") - def get_reactions( - self, id: str, limit: Optional[int] = None, offset: Optional[int] = None - ) -> StreamResponse[GetReactionsResponse]: + def get_reactions(self, id: str, limit: Optional[int] = None, offset: Optional[int] = None) -> StreamResponse[GetReactionsResponse]: query_params = build_query_param(limit=limit, offset=offset) path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/chat/messages/{id}/reactions", - GetReactionsResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/chat/messages/{id}/reactions", GetReactionsResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.query_reactions") - def query_reactions( - self, - id: str, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryReactionsResponse]: - path_params = { - "id": id, - } - json = QueryReactionsRequest( - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return self.post( - "/api/v2/chat/messages/{id}/reactions", - QueryReactionsResponse, - path_params=path_params, - json=json, - ) - + def query_reactions(self, id: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryReactionsResponse]: + path_params = { + "id": id, + } + json = QueryReactionsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return self.post("/api/v2/chat/messages/{id}/reactions", QueryReactionsResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.translate_message") - def translate_message( - self, id: str, language: str - ) -> StreamResponse[MessageActionResponse]: + def translate_message(self, id: str, language: str) -> StreamResponse[TranslateMessageResponse]: path_params = { - "id": id, + "id": id, } json = TranslateMessageRequest(language=language).to_dict() - return self.post( - "/api/v2/chat/messages/{id}/translate", - MessageActionResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/chat/messages/{id}/translate", TranslateMessageResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.undelete_message") - def undelete_message( - self, id: str, undeleted_by: str - ) -> StreamResponse[UndeleteMessageResponse]: + def undelete_message(self, id: str, undeleted_by: str) -> StreamResponse[UndeleteMessageResponse]: path_params = { - "id": id, + "id": id, } json = UndeleteMessageRequest(undeleted_by=undeleted_by).to_dict() - return self.post( - "/api/v2/chat/messages/{id}/undelete", - UndeleteMessageResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/chat/messages/{id}/undelete", UndeleteMessageResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.cast_poll_vote") - def cast_poll_vote( - self, - message_id: str, - poll_id: str, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - vote: Optional[VoteData] = None, - ) -> StreamResponse[PollVoteResponse]: - path_params = { - "message_id": message_id, - "poll_id": poll_id, + def cast_poll_vote(self, message_id: str, poll_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None, vote: Optional[VoteData] = None) -> StreamResponse[PollVoteResponse]: + path_params = { + "message_id": message_id, "poll_id": poll_id, } json = CastPollVoteRequest(user_id=user_id, user=user, vote=vote).to_dict() - return self.post( - "/api/v2/chat/messages/{message_id}/polls/{poll_id}/vote", - PollVoteResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/chat/messages/{message_id}/polls/{poll_id}/vote", PollVoteResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.delete_poll_vote") - def delete_poll_vote( - self, message_id: str, poll_id: str, vote_id: str, user_id: Optional[str] = None - ) -> StreamResponse[PollVoteResponse]: + def delete_poll_vote(self, message_id: str, poll_id: str, vote_id: str, user_id: Optional[str] = None) -> StreamResponse[PollVoteResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "message_id": message_id, - "poll_id": poll_id, - "vote_id": vote_id, + "message_id": message_id, "poll_id": poll_id, "vote_id": vote_id, } - return self.delete( - "/api/v2/chat/messages/{message_id}/polls/{poll_id}/vote/{vote_id}", - PollVoteResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/chat/messages/{message_id}/polls/{poll_id}/vote/{vote_id}", PollVoteResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.delete_reminder") - def delete_reminder( - self, message_id: str, user_id: Optional[str] = None - ) -> StreamResponse[DeleteReminderResponse]: + def delete_reminder(self, message_id: str, user_id: Optional[str] = None) -> StreamResponse[DeleteReminderResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "message_id": message_id, + "message_id": message_id, } - return self.delete( - "/api/v2/chat/messages/{message_id}/reminders", - DeleteReminderResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/chat/messages/{message_id}/reminders", DeleteReminderResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_reminder") - def update_reminder( - self, - message_id: str, - remind_at: Optional[datetime] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateReminderResponse]: - path_params = { - "message_id": message_id, - } - json = UpdateReminderRequest( - remind_at=remind_at, user_id=user_id, user=user - ).to_dict() - return self.patch( - "/api/v2/chat/messages/{message_id}/reminders", - UpdateReminderResponse, - path_params=path_params, - json=json, - ) - + def update_reminder(self, message_id: str, remind_at: Optional[datetime] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateReminderResponse]: + path_params = { + "message_id": message_id, + } + json = UpdateReminderRequest(remind_at=remind_at, user_id=user_id, user=user).to_dict() + return self.patch("/api/v2/chat/messages/{message_id}/reminders", UpdateReminderResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.create_reminder") - def create_reminder( - self, - message_id: str, - remind_at: Optional[datetime] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[ReminderResponseData]: - path_params = { - "message_id": message_id, - } - json = CreateReminderRequest( - remind_at=remind_at, user_id=user_id, user=user - ).to_dict() - return self.post( - "/api/v2/chat/messages/{message_id}/reminders", - ReminderResponseData, - path_params=path_params, - json=json, - ) - + def create_reminder(self, message_id: str, remind_at: Optional[datetime] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CreateReminderResponse]: + path_params = { + "message_id": message_id, + } + json = CreateReminderRequest(remind_at=remind_at, user_id=user_id, user=user).to_dict() + return self.post("/api/v2/chat/messages/{message_id}/reminders", CreateReminderResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.get_replies") - def get_replies( - self, - parent_id: str, - limit: Optional[int] = None, - id_gte: Optional[str] = None, - id_gt: Optional[str] = None, - id_lte: Optional[str] = None, - id_lt: Optional[str] = None, - id_around: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - member_custom_include: Optional[List[str]] = None, - ) -> StreamResponse[GetRepliesResponse]: - query_params = build_query_param( - limit=limit, - id_gte=id_gte, - id_gt=id_gt, - id_lte=id_lte, - id_lt=id_lt, - id_around=id_around, - sort=sort, - member_custom_include=member_custom_include, - ) + def get_replies(self, parent_id: str, limit: Optional[int] = None, id_gte: Optional[str] = None, id_gt: Optional[str] = None, id_lte: Optional[str] = None, id_lt: Optional[str] = None, id_around: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetRepliesResponse]: + query_params = build_query_param(limit=limit, id_gte=id_gte, id_gt=id_gt, id_lte=id_lte, id_lt=id_lt, id_around=id_around, sort=sort, member_custom_include=member_custom_include) path_params = { - "parent_id": parent_id, + "parent_id": parent_id, } - return self.get( - "/api/v2/chat/messages/{parent_id}/replies", - GetRepliesResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/chat/messages/{parent_id}/replies", GetRepliesResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.query_message_flags") - def query_message_flags( - self, payload: Optional[QueryMessageFlagsPayload] = None - ) -> StreamResponse[QueryMessageFlagsResponse]: + def query_message_flags(self, payload: Optional[QueryMessageFlagsPayload] = None) -> StreamResponse[QueryMessageFlagsResponse]: query_params = build_query_param(payload=payload) - return self.get( - "/api/v2/chat/moderation/flags/message", - QueryMessageFlagsResponse, - query_params=query_params, - ) - + return self.get("/api/v2/chat/moderation/flags/message", QueryMessageFlagsResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.chat.mute_channel") - def mute_channel( - self, - expiration: Optional[int] = None, - user_id: Optional[str] = None, - channel_cids: Optional[List[str]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[MuteChannelResponse]: - json = MuteChannelRequest( - expiration=expiration, user_id=user_id, channel_cids=channel_cids, user=user - ).to_dict() - return self.post( - "/api/v2/chat/moderation/mute/channel", MuteChannelResponse, json=json - ) - + def mute_channel(self, expiration: Optional[int] = None, user_id: Optional[str] = None, channel_cids: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[MuteChannelResponse]: + json = MuteChannelRequest(expiration=expiration, user_id=user_id, channel_cids=channel_cids, user=user).to_dict() + return self.post("/api/v2/chat/moderation/mute/channel", MuteChannelResponse, json=json) + @telemetry.operation_name("getstream.api.chat.unmute_channel") - def unmute_channel( - self, - expiration: Optional[int] = None, - user_id: Optional[str] = None, - channel_cids: Optional[List[str]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UnmuteResponse]: - json = UnmuteChannelRequest( - expiration=expiration, user_id=user_id, channel_cids=channel_cids, user=user - ).to_dict() - return self.post( - "/api/v2/chat/moderation/unmute/channel", UnmuteResponse, json=json - ) - + def unmute_channel(self, expiration: Optional[int] = None, user_id: Optional[str] = None, channel_cids: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UnmuteResponse]: + json = UnmuteChannelRequest(expiration=expiration, user_id=user_id, channel_cids=channel_cids, user=user).to_dict() + return self.post("/api/v2/chat/moderation/unmute/channel", UnmuteResponse, json=json) + @telemetry.operation_name("getstream.api.chat.get_predefined_filters") - def get_predefined_filters( - self, - include_stats: Optional[bool] = None, - sort: Optional[List[SortParamRequest]] = None, - ) -> StreamResponse[QueryPredefinedFiltersResponse]: + def get_predefined_filters(self, include_stats: Optional[bool] = None, sort: Optional[List[SortParamRequest]] = None) -> StreamResponse[QueryPredefinedFiltersResponse]: query_params = build_query_param(include_stats=include_stats, sort=sort) - return self.get( - "/api/v2/chat/predefined_filters", - QueryPredefinedFiltersResponse, - query_params=query_params, - ) - + return self.get("/api/v2/chat/predefined_filters", QueryPredefinedFiltersResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.chat.create_predefined_filter") - def create_predefined_filter( - self, - name: str, - operation: str, - filter: Dict[str, object], - description: Optional[str] = None, - sort: Optional[List[Dict[str, object]]] = None, - ) -> StreamResponse[CreatePredefinedFilterResponse]: - json = CreatePredefinedFilterRequest( - name=name, - operation=operation, - filter=filter, - description=description, - sort=sort, - ).to_dict() - return self.post( - "/api/v2/chat/predefined_filters", CreatePredefinedFilterResponse, json=json - ) - + def create_predefined_filter(self, name: str, operation: str, filter: Dict[str, object], description: Optional[str] = None, sort: Optional[List[Dict[str, object]]] = None) -> StreamResponse[CreatePredefinedFilterResponse]: + json = CreatePredefinedFilterRequest(name=name, operation=operation, filter=filter, description=description, sort=sort).to_dict() + return self.post("/api/v2/chat/predefined_filters", CreatePredefinedFilterResponse, json=json) + @telemetry.operation_name("getstream.api.chat.delete_predefined_filter") def delete_predefined_filter(self, name: str) -> StreamResponse[Response]: path_params = { - "name": name, + "name": name, } - return self.delete( - "/api/v2/chat/predefined_filters/{name}", Response, path_params=path_params - ) - + return self.delete("/api/v2/chat/predefined_filters/{name}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_predefined_filter") - def get_predefined_filter( - self, name: str - ) -> StreamResponse[GetPredefinedFilterResponse]: + def get_predefined_filter(self, name: str) -> StreamResponse[GetPredefinedFilterResponse]: path_params = { - "name": name, + "name": name, } - return self.get( - "/api/v2/chat/predefined_filters/{name}", - GetPredefinedFilterResponse, - path_params=path_params, - ) - + return self.get("/api/v2/chat/predefined_filters/{name}", GetPredefinedFilterResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_predefined_filter") - def update_predefined_filter( - self, - name: str, - operation: str, - filter: Dict[str, object], - description: Optional[str] = None, - sort: Optional[List[Dict[str, object]]] = None, - ) -> StreamResponse[UpdatePredefinedFilterResponse]: - path_params = { - "name": name, - } - json = UpdatePredefinedFilterRequest( - operation=operation, filter=filter, description=description, sort=sort - ).to_dict() - return self.put( - "/api/v2/chat/predefined_filters/{name}", - UpdatePredefinedFilterResponse, - path_params=path_params, - json=json, - ) - + def update_predefined_filter(self, name: str, operation: str, filter: Dict[str, object], description: Optional[str] = None, sort: Optional[List[Dict[str, object]]] = None) -> StreamResponse[UpdatePredefinedFilterResponse]: + path_params = { + "name": name, + } + json = UpdatePredefinedFilterRequest(operation=operation, filter=filter, description=description, sort=sort).to_dict() + return self.put("/api/v2/chat/predefined_filters/{name}", UpdatePredefinedFilterResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.query_banned_users") - def query_banned_users( - self, payload: Optional[QueryBannedUsersPayload] = None - ) -> StreamResponse[QueryBannedUsersResponse]: + def query_banned_users(self, payload: Optional[QueryBannedUsersPayload] = None) -> StreamResponse[QueryBannedUsersResponse]: query_params = build_query_param(payload=payload) - return self.get( - "/api/v2/chat/query_banned_users", - QueryBannedUsersResponse, - query_params=query_params, - ) - + return self.get("/api/v2/chat/query_banned_users", QueryBannedUsersResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.chat.query_future_channel_bans") - def query_future_channel_bans( - self, payload: Optional[QueryFutureChannelBansPayload] = None - ) -> StreamResponse[QueryFutureChannelBansResponse]: + def query_future_channel_bans(self, payload: Optional[QueryFutureChannelBansPayload] = None) -> StreamResponse[QueryFutureChannelBansResponse]: query_params = build_query_param(payload=payload) - return self.get( - "/api/v2/chat/query_future_channel_bans", - QueryFutureChannelBansResponse, - query_params=query_params, - ) - + return self.get("/api/v2/chat/query_future_channel_bans", QueryFutureChannelBansResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.chat.query_reminders") - def query_reminders( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryRemindersResponse]: - json = QueryRemindersRequest( - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return self.post( - "/api/v2/chat/reminders/query", QueryRemindersResponse, json=json - ) - + def query_reminders(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryRemindersResponse]: + json = QueryRemindersRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return self.post("/api/v2/chat/reminders/query", QueryRemindersResponse, json=json) + @telemetry.operation_name("getstream.api.chat.get_retention_policy") def get_retention_policy(self) -> StreamResponse[GetRetentionPolicyResponse]: return self.get("/api/v2/chat/retention_policy", GetRetentionPolicyResponse) - + @telemetry.operation_name("getstream.api.chat.set_retention_policy") - def set_retention_policy( - self, max_age_hours: int, policy: str - ) -> StreamResponse[SetRetentionPolicyResponse]: - json = SetRetentionPolicyRequest( - max_age_hours=max_age_hours, policy=policy - ).to_dict() - return self.post( - "/api/v2/chat/retention_policy", SetRetentionPolicyResponse, json=json - ) - + def set_retention_policy(self, max_age_hours: int, policy: str) -> StreamResponse[SetRetentionPolicyResponse]: + json = SetRetentionPolicyRequest(max_age_hours=max_age_hours, policy=policy).to_dict() + return self.post("/api/v2/chat/retention_policy", SetRetentionPolicyResponse, json=json) + @telemetry.operation_name("getstream.api.chat.delete_retention_policy") - def delete_retention_policy( - self, policy: str - ) -> StreamResponse[DeleteRetentionPolicyResponse]: + def delete_retention_policy(self, policy: str) -> StreamResponse[DeleteRetentionPolicyResponse]: json = DeleteRetentionPolicyRequest(policy=policy).to_dict() - return self.post( - "/api/v2/chat/retention_policy/delete", - DeleteRetentionPolicyResponse, - json=json, - ) - + return self.post("/api/v2/chat/retention_policy/delete", DeleteRetentionPolicyResponse, json=json) + @telemetry.operation_name("getstream.api.chat.get_retention_policy_runs") - def get_retention_policy_runs( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[GetRetentionPolicyRunsResponse]: - json = GetRetentionPolicyRunsRequest( - limit=limit, - next=next, - prev=prev, - sort=sort, - filter_conditions=filter_conditions, - ).to_dict() - return self.post( - "/api/v2/chat/retention_policy/runs", - GetRetentionPolicyRunsResponse, - json=json, - ) - + def get_retention_policy_runs(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[GetRetentionPolicyRunsResponse]: + json = GetRetentionPolicyRunsRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() + return self.post("/api/v2/chat/retention_policy/runs", GetRetentionPolicyRunsResponse, json=json) + @telemetry.operation_name("getstream.api.chat.search") - def search( - self, payload: Optional[SearchPayload] = None - ) -> StreamResponse[SearchResponse]: + def search(self, payload: Optional[SearchPayload] = None) -> StreamResponse[SearchResponse]: query_params = build_query_param(payload=payload) - return self.get( - "/api/v2/chat/search", SearchResponse, query_params=query_params - ) - + return self.get("/api/v2/chat/search", SearchResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.chat.create_segment") - def create_segment( - self, - type: str, - all_sender_channels: Optional[bool] = None, - all_users: Optional[bool] = None, - description: Optional[str] = None, - id: Optional[str] = None, - name: Optional[str] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[CreateSegmentResponse]: - json = CreateSegmentRequest( - type=type, - all_sender_channels=all_sender_channels, - all_users=all_users, - description=description, - id=id, - name=name, - filter=filter, - ).to_dict() + def create_segment(self, type: str, all_sender_channels: Optional[bool] = None, all_users: Optional[bool] = None, description: Optional[str] = None, id: Optional[str] = None, name: Optional[str] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[CreateSegmentResponse]: + json = CreateSegmentRequest(type=type, all_sender_channels=all_sender_channels, all_users=all_users, description=description, id=id, name=name, filter=filter).to_dict() return self.post("/api/v2/chat/segments", CreateSegmentResponse, json=json) - + @telemetry.operation_name("getstream.api.chat.query_segments") - def query_segments( - self, - filter: Dict[str, object], - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - ) -> StreamResponse[QuerySegmentsResponse]: - json = QuerySegmentsRequest( - filter=filter, limit=limit, next=next, prev=prev, sort=sort - ).to_dict() - return self.post( - "/api/v2/chat/segments/query", QuerySegmentsResponse, json=json - ) - + def query_segments(self, filter: Dict[str, object], limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None) -> StreamResponse[QuerySegmentsResponse]: + json = QuerySegmentsRequest(filter=filter, limit=limit, next=next, prev=prev, sort=sort).to_dict() + return self.post("/api/v2/chat/segments/query", QuerySegmentsResponse, json=json) + @telemetry.operation_name("getstream.api.chat.delete_segment") def delete_segment(self, id: str) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - return self.delete( - "/api/v2/chat/segments/{id}", Response, path_params=path_params - ) - + return self.delete("/api/v2/chat/segments/{id}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.get_segment") def get_segment(self, id: str) -> StreamResponse[GetSegmentResponse]: path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/chat/segments/{id}", GetSegmentResponse, path_params=path_params - ) - + return self.get("/api/v2/chat/segments/{id}", GetSegmentResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_segment") - def update_segment( - self, - id: str, - description: Optional[str] = None, - name: Optional[str] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[UpdateSegmentResponse]: - path_params = { - "id": id, - } - json = UpdateSegmentRequest( - description=description, name=name, filter=filter - ).to_dict() - return self.put( - "/api/v2/chat/segments/{id}", - UpdateSegmentResponse, - path_params=path_params, - json=json, - ) - + def update_segment(self, id: str, description: Optional[str] = None, name: Optional[str] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[UpdateSegmentResponse]: + path_params = { + "id": id, + } + json = UpdateSegmentRequest(description=description, name=name, filter=filter).to_dict() + return self.put("/api/v2/chat/segments/{id}", UpdateSegmentResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.add_segment_targets") - def add_segment_targets( - self, id: str, target_ids: List[str] - ) -> StreamResponse[Response]: + def add_segment_targets(self, id: str, target_ids: List[str]) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } json = AddSegmentTargetsRequest(target_ids=target_ids).to_dict() - return self.post( - "/api/v2/chat/segments/{id}/addtargets", - Response, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/chat/segments/{id}/addtargets", Response, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.delete_segment_targets") - def delete_segment_targets( - self, id: str, target_ids: List[str] - ) -> StreamResponse[Response]: + def delete_segment_targets(self, id: str, target_ids: List[str]) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } json = DeleteSegmentTargetsRequest(target_ids=target_ids).to_dict() - return self.post( - "/api/v2/chat/segments/{id}/deletetargets", - Response, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/chat/segments/{id}/deletetargets", Response, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.segment_target_exists") - def segment_target_exists( - self, id: str, target_id: str - ) -> StreamResponse[Response]: + def segment_target_exists(self, id: str, target_id: str) -> StreamResponse[Response]: path_params = { - "id": id, - "target_id": target_id, + "id": id, "target_id": target_id, } - return self.get( - "/api/v2/chat/segments/{id}/target/{target_id}", - Response, - path_params=path_params, - ) - + return self.get("/api/v2/chat/segments/{id}/target/{target_id}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.query_segment_targets") - def query_segment_targets( - self, - id: str, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QuerySegmentTargetsResponse]: - path_params = { - "id": id, - } - json = QuerySegmentTargetsRequest( - limit=limit, next=next, prev=prev, sort=sort, filter=filter - ).to_dict() - return self.post( - "/api/v2/chat/segments/{id}/targets/query", - QuerySegmentTargetsResponse, - path_params=path_params, - json=json, - ) - + def query_segment_targets(self, id: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QuerySegmentTargetsResponse]: + path_params = { + "id": id, + } + json = QuerySegmentTargetsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() + return self.post("/api/v2/chat/segments/{id}/targets/query", QuerySegmentTargetsResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.query_team_usage_stats") - def query_team_usage_stats( - self, - end_date: Optional[str] = None, - limit: Optional[int] = None, - month: Optional[str] = None, - next: Optional[str] = None, - start_date: Optional[str] = None, - team: Optional[str] = None, - ) -> StreamResponse[QueryTeamUsageStatsResponse]: - json = QueryTeamUsageStatsRequest( - end_date=end_date, - limit=limit, - month=month, - next=next, - start_date=start_date, - team=team, - ).to_dict() - return self.post( - "/api/v2/chat/stats/team_usage", QueryTeamUsageStatsResponse, json=json - ) - + def query_team_usage_stats(self, end_date: Optional[str] = None, limit: Optional[int] = None, month: Optional[str] = None, next: Optional[str] = None, start_date: Optional[str] = None, team: Optional[str] = None) -> StreamResponse[QueryTeamUsageStatsResponse]: + json = QueryTeamUsageStatsRequest(end_date=end_date, limit=limit, month=month, next=next, start_date=start_date, team=team).to_dict() + return self.post("/api/v2/chat/stats/team_usage", QueryTeamUsageStatsResponse, json=json) + @telemetry.operation_name("getstream.api.chat.query_threads") - def query_threads( - self, - limit: Optional[int] = None, - member_limit: Optional[int] = None, - next: Optional[str] = None, - participant_limit: Optional[int] = None, - prev: Optional[str] = None, - reply_limit: Optional[int] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryThreadsResponse]: - json = QueryThreadsRequest( - limit=limit, - member_limit=member_limit, - next=next, - participant_limit=participant_limit, - prev=prev, - reply_limit=reply_limit, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() + def query_threads(self, limit: Optional[int] = None, member_limit: Optional[int] = None, next: Optional[str] = None, participant_limit: Optional[int] = None, prev: Optional[str] = None, reply_limit: Optional[int] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryThreadsResponse]: + json = QueryThreadsRequest(limit=limit, member_limit=member_limit, next=next, participant_limit=participant_limit, prev=prev, reply_limit=reply_limit, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() return self.post("/api/v2/chat/threads", QueryThreadsResponse, json=json) - + @telemetry.operation_name("getstream.api.chat.get_thread") - def get_thread( - self, - message_id: str, - reply_limit: Optional[int] = None, - participant_limit: Optional[int] = None, - member_limit: Optional[int] = None, - ) -> StreamResponse[GetThreadResponse]: - query_params = build_query_param( - reply_limit=reply_limit, - participant_limit=participant_limit, - member_limit=member_limit, - ) + def get_thread(self, message_id: str, reply_limit: Optional[int] = None, participant_limit: Optional[int] = None, member_limit: Optional[int] = None) -> StreamResponse[GetThreadResponse]: + query_params = build_query_param(reply_limit=reply_limit, participant_limit=participant_limit, member_limit=member_limit) path_params = { - "message_id": message_id, + "message_id": message_id, } - return self.get( - "/api/v2/chat/threads/{message_id}", - GetThreadResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/chat/threads/{message_id}", GetThreadResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.chat.update_thread_partial") - def update_thread_partial( - self, - message_id: str, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateThreadPartialResponse]: - path_params = { - "message_id": message_id, - } - json = UpdateThreadPartialRequest( - user_id=user_id, unset=unset, set=set, user=user - ).to_dict() - return self.patch( - "/api/v2/chat/threads/{message_id}", - UpdateThreadPartialResponse, - path_params=path_params, - json=json, - ) - + def update_thread_partial(self, message_id: str, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateThreadPartialResponse]: + path_params = { + "message_id": message_id, + } + json = UpdateThreadPartialRequest(user_id=user_id, unset=unset, set=set, user=user).to_dict() + return self.patch("/api/v2/chat/threads/{message_id}", UpdateThreadPartialResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.chat.unread_counts") - def unread_counts( - self, user_id: Optional[str] = None - ) -> StreamResponse[WrappedUnreadCountsResponse]: + def unread_counts(self, user_id: Optional[str] = None) -> StreamResponse[WrappedUnreadCountsResponse]: query_params = build_query_param(user_id=user_id) - return self.get( - "/api/v2/chat/unread", - WrappedUnreadCountsResponse, - query_params=query_params, - ) - + return self.get("/api/v2/chat/unread", WrappedUnreadCountsResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.chat.unread_counts_batch") - def unread_counts_batch( - self, user_ids: List[str] - ) -> StreamResponse[UnreadCountsBatchResponse]: + def unread_counts_batch(self, user_ids: List[str]) -> StreamResponse[UnreadCountsBatchResponse]: json = UnreadCountsBatchRequest(user_ids=user_ids).to_dict() - return self.post( - "/api/v2/chat/unread_batch", UnreadCountsBatchResponse, json=json - ) - + return self.post("/api/v2/chat/unread_batch", UnreadCountsBatchResponse, json=json) + @telemetry.operation_name("getstream.api.chat.send_user_custom_event") - def send_user_custom_event( - self, user_id: str, event: UserCustomEventRequest - ) -> StreamResponse[Response]: + def send_user_custom_event(self, user_id: str, event: UserCustomEventRequest) -> StreamResponse[Response]: path_params = { - "user_id": user_id, + "user_id": user_id, } json = SendUserCustomEventRequest(event=event).to_dict() - return self.post( - "/api/v2/chat/users/{user_id}/event", - Response, - path_params=path_params, - json=json, - ) + return self.post("/api/v2/chat/users/{user_id}/event", Response, path_params=path_params, json=json) + \ No newline at end of file diff --git a/getstream/common/async_client.py b/getstream/common/async_client.py index ef9294f4..93ab8a7f 100644 --- a/getstream/common/async_client.py +++ b/getstream/common/async_client.py @@ -1,5 +1,4 @@ import json -from typing import List, Optional from getstream.common import telemetry from getstream.common.async_rest_client import CommonRestClient @@ -24,7 +23,7 @@ def __init__(self, api_key: str, base_url, token, timeout, user_agent=None): @telemetry.operation_name("getstream.api.common.upload_file") async def upload_file( - self, file: str, user: Optional[OnlyUserID] = None + self, file: str, user: OnlyUserID | None = None ) -> StreamResponse[FileUploadResponse]: form_fields = [] if user is not None: @@ -40,8 +39,8 @@ async def upload_file( async def upload_image( self, file: str, - upload_sizes: Optional[List[ImageSize]] = None, - user: Optional[OnlyUserID] = None, + upload_sizes: list[ImageSize] | None = None, + user: OnlyUserID | None = None, ) -> StreamResponse[ImageUploadResponse]: form_fields = [] if user is not None: diff --git a/getstream/common/async_rest_client.py b/getstream/common/async_rest_client.py index d5348240..1caa810a 100644 --- a/getstream/common/async_rest_client.py +++ b/getstream/common/async_rest_client.py @@ -1,3 +1,4 @@ + # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import AsyncBaseClient from getstream.common import telemetry @@ -7,14 +8,8 @@ class CommonRestClient(AsyncBaseClient): - def __init__( - self, - api_key: str, - base_url: str, - timeout: float, - token: str, - user_agent: str | None = None, - ): + + def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): """ Initializes CommonClient with BaseClient instance :param api_key: A string representing the client's API key @@ -31,1403 +26,534 @@ def __init__( user_agent=user_agent, ) + @telemetry.operation_name("getstream.api.common.get_app") async def get_app(self) -> StreamResponse[GetApplicationResponse]: return await self.get("/api/v2/app", GetApplicationResponse) - + @telemetry.operation_name("getstream.api.common.update_app") - async def update_app( - self, - async_url_enrich_enabled: Optional[bool] = None, - auto_translation_enabled: Optional[bool] = None, - before_message_send_hook_attempt_timeout_ms: Optional[int] = None, - before_message_send_hook_url: Optional[str] = None, - cdn_expiration_seconds: Optional[int] = None, - channel_hide_members_only: Optional[bool] = None, - chat_primary_use_case: Optional[str] = None, - custom_action_handler_url: Optional[str] = None, - disable_auth_checks: Optional[bool] = None, - disable_permissions_checks: Optional[bool] = None, - enable_hook_payload_compression: Optional[bool] = None, - enforce_unique_usernames: Optional[str] = None, - feed_audit_logs_enabled: Optional[bool] = None, - feeds_moderation_enabled: Optional[bool] = None, - feeds_v2_region: Optional[str] = None, - guest_user_creation_disabled: Optional[bool] = None, - image_moderation_enabled: Optional[bool] = None, - max_aggregated_activities_length: Optional[int] = None, - member_custom_on_messages_enabled: Optional[bool] = None, - migrate_permissions_to_v2: Optional[bool] = None, - moderation_analytics_enabled: Optional[bool] = None, - moderation_enabled: Optional[bool] = None, - moderation_onboarding_complete: Optional[bool] = None, - moderation_s3_image_access_role_arn: Optional[str] = None, - moderation_webhook_url: Optional[str] = None, - multi_tenant_enabled: Optional[bool] = None, - permission_version: Optional[str] = None, - reminders_interval: Optional[int] = None, - reminders_max_members: Optional[int] = None, - reminders_max_per_user: Optional[int] = None, - revoke_tokens_issued_before: Optional[datetime] = None, - sns_key: Optional[str] = None, - sns_secret: Optional[str] = None, - sns_topic_arn: Optional[str] = None, - sqs_key: Optional[str] = None, - sqs_secret: Optional[str] = None, - sqs_url: Optional[str] = None, - user_response_time_enabled: Optional[bool] = None, - video_primary_use_case: Optional[str] = None, - webhook_url: Optional[str] = None, - allowed_flag_reasons: Optional[List[str]] = None, - event_hooks: Optional[List[EventHook]] = None, - image_moderation_block_labels: Optional[List[str]] = None, - image_moderation_labels: Optional[List[str]] = None, - user_search_disallowed_roles: Optional[List[str]] = None, - webhook_events: Optional[List[str]] = None, - activity_metrics_config: Optional[Dict[str, int]] = None, - apn_config: Optional[APNConfig] = None, - async_moderation_config: Optional[AsyncModerationConfiguration] = None, - datadog_info: Optional[DataDogInfo] = None, - file_upload_config: Optional[FileUploadConfig] = None, - firebase_config: Optional[FirebaseConfig] = None, - grants: Optional[Dict[str, List[str]]] = None, - huawei_config: Optional[HuaweiConfig] = None, - image_upload_config: Optional[FileUploadConfig] = None, - moderation_dashboard_preferences: Optional[ - ModerationDashboardPreferences - ] = None, - push_config: Optional[PushConfig] = None, - xiaomi_config: Optional[XiaomiConfig] = None, - ) -> StreamResponse[Response]: - json = UpdateAppRequest( - async_url_enrich_enabled=async_url_enrich_enabled, - auto_translation_enabled=auto_translation_enabled, - before_message_send_hook_attempt_timeout_ms=before_message_send_hook_attempt_timeout_ms, - before_message_send_hook_url=before_message_send_hook_url, - cdn_expiration_seconds=cdn_expiration_seconds, - channel_hide_members_only=channel_hide_members_only, - chat_primary_use_case=chat_primary_use_case, - custom_action_handler_url=custom_action_handler_url, - disable_auth_checks=disable_auth_checks, - disable_permissions_checks=disable_permissions_checks, - enable_hook_payload_compression=enable_hook_payload_compression, - enforce_unique_usernames=enforce_unique_usernames, - feed_audit_logs_enabled=feed_audit_logs_enabled, - feeds_moderation_enabled=feeds_moderation_enabled, - feeds_v2_region=feeds_v2_region, - guest_user_creation_disabled=guest_user_creation_disabled, - image_moderation_enabled=image_moderation_enabled, - max_aggregated_activities_length=max_aggregated_activities_length, - member_custom_on_messages_enabled=member_custom_on_messages_enabled, - migrate_permissions_to_v2=migrate_permissions_to_v2, - moderation_analytics_enabled=moderation_analytics_enabled, - moderation_enabled=moderation_enabled, - moderation_onboarding_complete=moderation_onboarding_complete, - moderation_s3_image_access_role_arn=moderation_s3_image_access_role_arn, - moderation_webhook_url=moderation_webhook_url, - multi_tenant_enabled=multi_tenant_enabled, - permission_version=permission_version, - reminders_interval=reminders_interval, - reminders_max_members=reminders_max_members, - reminders_max_per_user=reminders_max_per_user, - revoke_tokens_issued_before=revoke_tokens_issued_before, - sns_key=sns_key, - sns_secret=sns_secret, - sns_topic_arn=sns_topic_arn, - sqs_key=sqs_key, - sqs_secret=sqs_secret, - sqs_url=sqs_url, - user_response_time_enabled=user_response_time_enabled, - video_primary_use_case=video_primary_use_case, - webhook_url=webhook_url, - allowed_flag_reasons=allowed_flag_reasons, - event_hooks=event_hooks, - image_moderation_block_labels=image_moderation_block_labels, - image_moderation_labels=image_moderation_labels, - user_search_disallowed_roles=user_search_disallowed_roles, - webhook_events=webhook_events, - activity_metrics_config=activity_metrics_config, - apn_config=apn_config, - async_moderation_config=async_moderation_config, - datadog_info=datadog_info, - file_upload_config=file_upload_config, - firebase_config=firebase_config, - grants=grants, - huawei_config=huawei_config, - image_upload_config=image_upload_config, - moderation_dashboard_preferences=moderation_dashboard_preferences, - push_config=push_config, - xiaomi_config=xiaomi_config, - ).to_dict() + async def update_app(self, async_url_enrich_enabled: Optional[bool] = None, auto_translation_enabled: Optional[bool] = None, before_message_send_hook_attempt_timeout_ms: Optional[int] = None, before_message_send_hook_url: Optional[str] = None, cdn_expiration_seconds: Optional[int] = None, channel_hide_members_only: Optional[bool] = None, chat_primary_use_case: Optional[str] = None, custom_action_handler_url: Optional[str] = None, disable_auth_checks: Optional[bool] = None, disable_permissions_checks: Optional[bool] = None, enable_hook_payload_compression: Optional[bool] = None, enforce_unique_usernames: Optional[str] = None, feed_audit_logs_enabled: Optional[bool] = None, feeds_moderation_enabled: Optional[bool] = None, feeds_v2_region: Optional[str] = None, guest_user_creation_disabled: Optional[bool] = None, image_moderation_enabled: Optional[bool] = None, max_aggregated_activities_length: Optional[int] = None, member_custom_on_mentioned_users_enabled: Optional[bool] = None, member_custom_on_messages_enabled: Optional[bool] = None, member_custom_on_typing_events_enabled: Optional[bool] = None, migrate_permissions_to_v2: Optional[bool] = None, moderation_analytics_enabled: Optional[bool] = None, moderation_enabled: Optional[bool] = None, moderation_onboarding_complete: Optional[bool] = None, moderation_s3_image_access_role_arn: Optional[str] = None, moderation_webhook_url: Optional[str] = None, multi_tenant_enabled: Optional[bool] = None, permission_version: Optional[str] = None, reminders_interval: Optional[int] = None, reminders_max_members: Optional[int] = None, reminders_max_per_user: Optional[int] = None, revoke_tokens_issued_before: Optional[datetime] = None, sns_key: Optional[str] = None, sns_secret: Optional[str] = None, sns_topic_arn: Optional[str] = None, sqs_key: Optional[str] = None, sqs_secret: Optional[str] = None, sqs_url: Optional[str] = None, user_response_time_enabled: Optional[bool] = None, video_primary_use_case: Optional[str] = None, webhook_url: Optional[str] = None, allowed_flag_reasons: Optional[List[str]] = None, event_hooks: Optional[List[EventHook]] = None, image_moderation_block_labels: Optional[List[str]] = None, image_moderation_labels: Optional[List[str]] = None, user_search_disallowed_roles: Optional[List[str]] = None, webhook_events: Optional[List[str]] = None, activity_metrics_config: Optional[Dict[str, int]] = None, apn_config: Optional[APNConfig] = None, async_moderation_config: Optional[AsyncModerationConfiguration] = None, datadog_info: Optional[DataDogInfo] = None, file_upload_config: Optional[FileUploadConfig] = None, firebase_config: Optional[FirebaseConfig] = None, grants: Optional[Dict[str, List[str]]] = None, huawei_config: Optional[HuaweiConfig] = None, image_upload_config: Optional[FileUploadConfig] = None, moderation_dashboard_preferences: Optional[ModerationDashboardPreferences] = None, push_config: Optional[PushConfig] = None, xiaomi_config: Optional[XiaomiConfig] = None) -> StreamResponse[Response]: + json = UpdateAppRequest(async_url_enrich_enabled=async_url_enrich_enabled, auto_translation_enabled=auto_translation_enabled, before_message_send_hook_attempt_timeout_ms=before_message_send_hook_attempt_timeout_ms, before_message_send_hook_url=before_message_send_hook_url, cdn_expiration_seconds=cdn_expiration_seconds, channel_hide_members_only=channel_hide_members_only, chat_primary_use_case=chat_primary_use_case, custom_action_handler_url=custom_action_handler_url, disable_auth_checks=disable_auth_checks, disable_permissions_checks=disable_permissions_checks, enable_hook_payload_compression=enable_hook_payload_compression, enforce_unique_usernames=enforce_unique_usernames, feed_audit_logs_enabled=feed_audit_logs_enabled, feeds_moderation_enabled=feeds_moderation_enabled, feeds_v2_region=feeds_v2_region, guest_user_creation_disabled=guest_user_creation_disabled, image_moderation_enabled=image_moderation_enabled, max_aggregated_activities_length=max_aggregated_activities_length, member_custom_on_mentioned_users_enabled=member_custom_on_mentioned_users_enabled, member_custom_on_messages_enabled=member_custom_on_messages_enabled, member_custom_on_typing_events_enabled=member_custom_on_typing_events_enabled, migrate_permissions_to_v2=migrate_permissions_to_v2, moderation_analytics_enabled=moderation_analytics_enabled, moderation_enabled=moderation_enabled, moderation_onboarding_complete=moderation_onboarding_complete, moderation_s3_image_access_role_arn=moderation_s3_image_access_role_arn, moderation_webhook_url=moderation_webhook_url, multi_tenant_enabled=multi_tenant_enabled, permission_version=permission_version, reminders_interval=reminders_interval, reminders_max_members=reminders_max_members, reminders_max_per_user=reminders_max_per_user, revoke_tokens_issued_before=revoke_tokens_issued_before, sns_key=sns_key, sns_secret=sns_secret, sns_topic_arn=sns_topic_arn, sqs_key=sqs_key, sqs_secret=sqs_secret, sqs_url=sqs_url, user_response_time_enabled=user_response_time_enabled, video_primary_use_case=video_primary_use_case, webhook_url=webhook_url, allowed_flag_reasons=allowed_flag_reasons, event_hooks=event_hooks, image_moderation_block_labels=image_moderation_block_labels, image_moderation_labels=image_moderation_labels, user_search_disallowed_roles=user_search_disallowed_roles, webhook_events=webhook_events, activity_metrics_config=activity_metrics_config, apn_config=apn_config, async_moderation_config=async_moderation_config, datadog_info=datadog_info, file_upload_config=file_upload_config, firebase_config=firebase_config, grants=grants, huawei_config=huawei_config, image_upload_config=image_upload_config, moderation_dashboard_preferences=moderation_dashboard_preferences, push_config=push_config, xiaomi_config=xiaomi_config).to_dict() return await self.patch("/api/v2/app", Response, json=json) - + @telemetry.operation_name("getstream.api.common.list_block_lists") - async def list_block_lists( - self, - team: Optional[str] = None, - cursor: Optional[str] = None, - limit: Optional[int] = None, - ) -> StreamResponse[ListBlockListResponse]: + async def list_block_lists(self, team: Optional[str] = None, cursor: Optional[str] = None, limit: Optional[int] = None) -> StreamResponse[ListBlockListResponse]: query_params = build_query_param(team=team, cursor=cursor, limit=limit) - return await self.get( - "/api/v2/blocklists", ListBlockListResponse, query_params=query_params - ) - + return await self.get("/api/v2/blocklists", ListBlockListResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.create_block_list") - async def create_block_list( - self, - name: str, - words: List[str], - is_confusable_folding_enabled: Optional[bool] = None, - is_leet_check_enabled: Optional[bool] = None, - is_plural_check_enabled: Optional[bool] = None, - is_substring_matching_enabled: Optional[bool] = None, - team: Optional[str] = None, - type: Optional[str] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[CreateBlockListResponse]: - json = CreateBlockListRequest( - name=name, - words=words, - is_confusable_folding_enabled=is_confusable_folding_enabled, - is_leet_check_enabled=is_leet_check_enabled, - is_plural_check_enabled=is_plural_check_enabled, - is_substring_matching_enabled=is_substring_matching_enabled, - team=team, - type=type, - user_id=user_id, - user=user, - ).to_dict() + async def create_block_list(self, name: str, words: List[str], is_confusable_folding_enabled: Optional[bool] = None, is_leet_check_enabled: Optional[bool] = None, is_plural_check_enabled: Optional[bool] = None, is_substring_matching_enabled: Optional[bool] = None, team: Optional[str] = None, type: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CreateBlockListResponse]: + json = CreateBlockListRequest(name=name, words=words, is_confusable_folding_enabled=is_confusable_folding_enabled, is_leet_check_enabled=is_leet_check_enabled, is_plural_check_enabled=is_plural_check_enabled, is_substring_matching_enabled=is_substring_matching_enabled, team=team, type=type, user_id=user_id, user=user).to_dict() return await self.post("/api/v2/blocklists", CreateBlockListResponse, json=json) - + @telemetry.operation_name("getstream.api.common.import_block_list") - async def import_block_list( - self, id: str, items: List[str], chunk_size: Optional[int] = None - ) -> StreamResponse[ImportBlockListResponse]: + async def import_block_list(self, id: str, items: List[str], chunk_size: Optional[int] = None) -> StreamResponse[ImportBlockListResponse]: path_params = { - "id": id, + "id": id, } json = ImportBlockListRequest(items=items, chunk_size=chunk_size).to_dict() - return await self.post( - "/api/v2/blocklists/{id}/import", - ImportBlockListResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/blocklists/{id}/import", ImportBlockListResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.delete_block_list") - async def delete_block_list( - self, name: str, team: Optional[str] = None, user_id: Optional[str] = None - ) -> StreamResponse[Response]: + async def delete_block_list(self, name: str, team: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(team=team, user_id=user_id) path_params = { - "name": name, + "name": name, } - return await self.delete( - "/api/v2/blocklists/{name}", - Response, - query_params=query_params, - path_params=path_params, - ) - + return await self.delete("/api/v2/blocklists/{name}", Response, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_block_list") - async def get_block_list( - self, name: str, team: Optional[str] = None - ) -> StreamResponse[GetBlockListResponse]: + async def get_block_list(self, name: str, team: Optional[str] = None) -> StreamResponse[GetBlockListResponse]: query_params = build_query_param(team=team) path_params = { - "name": name, + "name": name, } - return await self.get( - "/api/v2/blocklists/{name}", - GetBlockListResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/blocklists/{name}", GetBlockListResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.common.update_block_list") - async def update_block_list( - self, - name: str, - is_confusable_folding_enabled: Optional[bool] = None, - is_leet_check_enabled: Optional[bool] = None, - is_plural_check_enabled: Optional[bool] = None, - is_substring_matching_enabled: Optional[bool] = None, - team: Optional[str] = None, - user_id: Optional[str] = None, - words: Optional[List[str]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateBlockListResponse]: + async def update_block_list(self, name: str, is_confusable_folding_enabled: Optional[bool] = None, is_leet_check_enabled: Optional[bool] = None, is_plural_check_enabled: Optional[bool] = None, is_substring_matching_enabled: Optional[bool] = None, team: Optional[str] = None, user_id: Optional[str] = None, words: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateBlockListResponse]: path_params = { - "name": name, + "name": name, } - json = UpdateBlockListRequest( - is_confusable_folding_enabled=is_confusable_folding_enabled, - is_leet_check_enabled=is_leet_check_enabled, - is_plural_check_enabled=is_plural_check_enabled, - is_substring_matching_enabled=is_substring_matching_enabled, - team=team, - user_id=user_id, - words=words, - user=user, - ).to_dict() - return await self.put( - "/api/v2/blocklists/{name}", - UpdateBlockListResponse, - path_params=path_params, - json=json, - ) - + json = UpdateBlockListRequest(is_confusable_folding_enabled=is_confusable_folding_enabled, is_leet_check_enabled=is_leet_check_enabled, is_plural_check_enabled=is_plural_check_enabled, is_substring_matching_enabled=is_substring_matching_enabled, team=team, user_id=user_id, words=words, user=user).to_dict() + return await self.put("/api/v2/blocklists/{name}", UpdateBlockListResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.check_push") - async def check_push( - self, - apn_template: Optional[str] = None, - event_type: Optional[str] = None, - firebase_data_template: Optional[str] = None, - firebase_template: Optional[str] = None, - message_id: Optional[str] = None, - push_provider_name: Optional[str] = None, - push_provider_type: Optional[str] = None, - skip_devices: Optional[bool] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[CheckPushResponse]: - json = CheckPushRequest( - apn_template=apn_template, - event_type=event_type, - firebase_data_template=firebase_data_template, - firebase_template=firebase_template, - message_id=message_id, - push_provider_name=push_provider_name, - push_provider_type=push_provider_type, - skip_devices=skip_devices, - user_id=user_id, - user=user, - ).to_dict() + async def check_push(self, apn_template: Optional[str] = None, event_type: Optional[str] = None, firebase_data_template: Optional[str] = None, firebase_template: Optional[str] = None, message_id: Optional[str] = None, push_provider_name: Optional[str] = None, push_provider_type: Optional[str] = None, skip_devices: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CheckPushResponse]: + json = CheckPushRequest(apn_template=apn_template, event_type=event_type, firebase_data_template=firebase_data_template, firebase_template=firebase_template, message_id=message_id, push_provider_name=push_provider_name, push_provider_type=push_provider_type, skip_devices=skip_devices, user_id=user_id, user=user).to_dict() return await self.post("/api/v2/check_push", CheckPushResponse, json=json) - + @telemetry.operation_name("getstream.api.common.check_sns") - async def check_sns( - self, - sns_key: Optional[str] = None, - sns_secret: Optional[str] = None, - sns_topic_arn: Optional[str] = None, - ) -> StreamResponse[CheckSNSResponse]: - json = CheckSNSRequest( - sns_key=sns_key, sns_secret=sns_secret, sns_topic_arn=sns_topic_arn - ).to_dict() + async def check_sns(self, sns_key: Optional[str] = None, sns_secret: Optional[str] = None, sns_topic_arn: Optional[str] = None) -> StreamResponse[CheckSNSResponse]: + json = CheckSNSRequest(sns_key=sns_key, sns_secret=sns_secret, sns_topic_arn=sns_topic_arn).to_dict() return await self.post("/api/v2/check_sns", CheckSNSResponse, json=json) - + @telemetry.operation_name("getstream.api.common.check_sqs") - async def check_sqs( - self, - sqs_key: Optional[str] = None, - sqs_secret: Optional[str] = None, - sqs_url: Optional[str] = None, - ) -> StreamResponse[CheckSQSResponse]: - json = CheckSQSRequest( - sqs_key=sqs_key, sqs_secret=sqs_secret, sqs_url=sqs_url - ).to_dict() + async def check_sqs(self, sqs_key: Optional[str] = None, sqs_secret: Optional[str] = None, sqs_url: Optional[str] = None) -> StreamResponse[CheckSQSResponse]: + json = CheckSQSRequest(sqs_key=sqs_key, sqs_secret=sqs_secret, sqs_url=sqs_url).to_dict() return await self.post("/api/v2/check_sqs", CheckSQSResponse, json=json) - + @telemetry.operation_name("getstream.api.common.delete_device") - async def delete_device( - self, id: str, user_id: Optional[str] = None - ) -> StreamResponse[Response]: + async def delete_device(self, id: str, user_id: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(id=id, user_id=user_id) return await self.delete("/api/v2/devices", Response, query_params=query_params) - + @telemetry.operation_name("getstream.api.common.list_devices") - async def list_devices( - self, user_id: Optional[str] = None - ) -> StreamResponse[ListDevicesResponse]: + async def list_devices(self, user_id: Optional[str] = None) -> StreamResponse[ListDevicesResponse]: query_params = build_query_param(user_id=user_id) - return await self.get( - "/api/v2/devices", ListDevicesResponse, query_params=query_params - ) - + return await self.get("/api/v2/devices", ListDevicesResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.create_device") - async def create_device( - self, - id: str, - push_provider: str, - hardware_id: Optional[str] = None, - push_provider_name: Optional[str] = None, - user_id: Optional[str] = None, - voip_token: Optional[bool] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[Response]: - json = CreateDeviceRequest( - id=id, - push_provider=push_provider, - hardware_id=hardware_id, - push_provider_name=push_provider_name, - user_id=user_id, - voip_token=voip_token, - user=user, - ).to_dict() + async def create_device(self, id: str, push_provider: str, hardware_id: Optional[str] = None, push_provider_name: Optional[str] = None, user_id: Optional[str] = None, voip_token: Optional[bool] = None, user: Optional[UserRequest] = None) -> StreamResponse[Response]: + json = CreateDeviceRequest(id=id, push_provider=push_provider, hardware_id=hardware_id, push_provider_name=push_provider_name, user_id=user_id, voip_token=voip_token, user=user).to_dict() return await self.post("/api/v2/devices", Response, json=json) - + @telemetry.operation_name("getstream.api.common.export_users") - async def export_users( - self, user_ids: List[str] - ) -> StreamResponse[ExportUsersResponse]: + async def export_users(self, user_ids: List[str]) -> StreamResponse[ExportUsersResponse]: json = ExportUsersRequest(user_ids=user_ids).to_dict() return await self.post("/api/v2/export/users", ExportUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.list_external_storage") - async def list_external_storage( - self, - ) -> StreamResponse[ListExternalStorageResponse]: + async def list_external_storage(self) -> StreamResponse[ListExternalStorageResponse]: return await self.get("/api/v2/external_storage", ListExternalStorageResponse) - + @telemetry.operation_name("getstream.api.common.create_external_storage") - async def create_external_storage( - self, - bucket: str, - name: str, - storage_type: str, - gcs_credentials: Optional[str] = None, - path: Optional[str] = None, - aws_s3: Optional[S3Request] = None, - azure_blob: Optional[AzureRequest] = None, - ) -> StreamResponse[CreateExternalStorageResponse]: - json = CreateExternalStorageRequest( - bucket=bucket, - name=name, - storage_type=storage_type, - gcs_credentials=gcs_credentials, - path=path, - aws_s3=aws_s3, - azure_blob=azure_blob, - ).to_dict() - return await self.post( - "/api/v2/external_storage", CreateExternalStorageResponse, json=json - ) - + async def create_external_storage(self, bucket: str, name: str, storage_type: str, gcs_credentials: Optional[str] = None, path: Optional[str] = None, aws_s3: Optional[S3Request] = None, azure_blob: Optional[AzureRequest] = None) -> StreamResponse[CreateExternalStorageResponse]: + json = CreateExternalStorageRequest(bucket=bucket, name=name, storage_type=storage_type, gcs_credentials=gcs_credentials, path=path, aws_s3=aws_s3, azure_blob=azure_blob).to_dict() + return await self.post("/api/v2/external_storage", CreateExternalStorageResponse, json=json) + @telemetry.operation_name("getstream.api.common.delete_external_storage") - async def delete_external_storage( - self, name: str - ) -> StreamResponse[DeleteExternalStorageResponse]: + async def delete_external_storage(self, name: str) -> StreamResponse[DeleteExternalStorageResponse]: path_params = { - "name": name, + "name": name, } - return await self.delete( - "/api/v2/external_storage/{name}", - DeleteExternalStorageResponse, - path_params=path_params, - ) - + return await self.delete("/api/v2/external_storage/{name}", DeleteExternalStorageResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.update_external_storage") - async def update_external_storage( - self, - name: str, - bucket: str, - storage_type: str, - gcs_credentials: Optional[str] = None, - path: Optional[str] = None, - aws_s3: Optional[S3Request] = None, - azure_blob: Optional[AzureRequest] = None, - ) -> StreamResponse[UpdateExternalStorageResponse]: + async def update_external_storage(self, name: str, bucket: str, storage_type: str, gcs_credentials: Optional[str] = None, path: Optional[str] = None, aws_s3: Optional[S3Request] = None, azure_blob: Optional[AzureRequest] = None) -> StreamResponse[UpdateExternalStorageResponse]: path_params = { - "name": name, + "name": name, } - json = UpdateExternalStorageRequest( - bucket=bucket, - storage_type=storage_type, - gcs_credentials=gcs_credentials, - path=path, - aws_s3=aws_s3, - azure_blob=azure_blob, - ).to_dict() - return await self.put( - "/api/v2/external_storage/{name}", - UpdateExternalStorageResponse, - path_params=path_params, - json=json, - ) - + json = UpdateExternalStorageRequest(bucket=bucket, storage_type=storage_type, gcs_credentials=gcs_credentials, path=path, aws_s3=aws_s3, azure_blob=azure_blob).to_dict() + return await self.put("/api/v2/external_storage/{name}", UpdateExternalStorageResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.check_external_storage") - async def check_external_storage( - self, name: str - ) -> StreamResponse[CheckExternalStorageResponse]: + async def check_external_storage(self, name: str) -> StreamResponse[CheckExternalStorageResponse]: path_params = { - "name": name, + "name": name, } - return await self.get( - "/api/v2/external_storage/{name}/check", - CheckExternalStorageResponse, - path_params=path_params, - ) - + return await self.get("/api/v2/external_storage/{name}/check", CheckExternalStorageResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.create_guest") - async def create_guest( - self, user: UserRequest - ) -> StreamResponse[CreateGuestResponse]: + async def create_guest(self, user: UserRequest) -> StreamResponse[CreateGuestResponse]: json = CreateGuestRequest(user=user).to_dict() return await self.post("/api/v2/guest", CreateGuestResponse, json=json) - + @telemetry.operation_name("getstream.api.common.create_import_url") - async def create_import_url( - self, filename: Optional[str] = None - ) -> StreamResponse[CreateImportURLResponse]: + async def create_import_url(self, filename: Optional[str] = None) -> StreamResponse[CreateImportURLResponse]: json = CreateImportURLRequest(filename=filename).to_dict() - return await self.post( - "/api/v2/import_urls", CreateImportURLResponse, json=json - ) - + return await self.post("/api/v2/import_urls", CreateImportURLResponse, json=json) + @telemetry.operation_name("getstream.api.common.list_imports") async def list_imports(self) -> StreamResponse[ListImportsResponse]: return await self.get("/api/v2/imports", ListImportsResponse) - + @telemetry.operation_name("getstream.api.common.create_import") - async def create_import( - self, mode: str, path: str, merge_custom: Optional[bool] = None - ) -> StreamResponse[CreateImportResponse]: - json = CreateImportRequest( - mode=mode, path=path, merge_custom=merge_custom - ).to_dict() + async def create_import(self, mode: str, path: str, merge_custom: Optional[bool] = None) -> StreamResponse[CreateImportResponse]: + json = CreateImportRequest(mode=mode, path=path, merge_custom=merge_custom).to_dict() return await self.post("/api/v2/imports", CreateImportResponse, json=json) - + @telemetry.operation_name("getstream.api.common.list_import_v2_tasks") - async def list_import_v2_tasks( - self, state: Optional[int] = None - ) -> StreamResponse[ListImportV2TasksResponse]: + async def list_import_v2_tasks(self, state: Optional[int] = None) -> StreamResponse[ListImportV2TasksResponse]: query_params = build_query_param(state=state) - return await self.get( - "/api/v2/imports/v2", ListImportV2TasksResponse, query_params=query_params - ) - + return await self.get("/api/v2/imports/v2", ListImportV2TasksResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.create_import_v2_task") - async def create_import_v2_task( - self, - product: str, - settings: ImportV2TaskSettings, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[CreateImportV2TaskResponse]: - json = CreateImportV2TaskRequest( - product=product, settings=settings, user_id=user_id, user=user - ).to_dict() - return await self.post( - "/api/v2/imports/v2", CreateImportV2TaskResponse, json=json - ) - + async def create_import_v2_task(self, product: str, settings: ImportV2TaskSettings, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CreateImportV2TaskResponse]: + json = CreateImportV2TaskRequest(product=product, settings=settings, user_id=user_id, user=user).to_dict() + return await self.post("/api/v2/imports/v2", CreateImportV2TaskResponse, json=json) + @telemetry.operation_name("getstream.api.common.delete_importer_external_storage") - async def delete_importer_external_storage( - self, - ) -> StreamResponse[DeleteExternalStorageResponse]: - return await self.delete( - "/api/v2/imports/v2/external-storage", DeleteExternalStorageResponse - ) - + async def delete_importer_external_storage(self) -> StreamResponse[DeleteExternalStorageResponse]: + return await self.delete("/api/v2/imports/v2/external-storage", DeleteExternalStorageResponse) + @telemetry.operation_name("getstream.api.common.get_importer_external_storage") - async def get_importer_external_storage( - self, - ) -> StreamResponse[GetExternalStorageResponse]: - return await self.get( - "/api/v2/imports/v2/external-storage", GetExternalStorageResponse - ) - + async def get_importer_external_storage(self) -> StreamResponse[GetExternalStorageResponse]: + return await self.get("/api/v2/imports/v2/external-storage", GetExternalStorageResponse) + @telemetry.operation_name("getstream.api.common.upsert_importer_external_storage") - async def upsert_importer_external_storage( - self, - type: str, - aws_s3: Optional[UpsertExternalStorageAWSS3Request] = None, - gcs: Optional[UpsertExternalStorageGCSRequest] = None, - ) -> StreamResponse[UpsertExternalStorageResponse]: + async def upsert_importer_external_storage(self, type: str, aws_s3: Optional[UpsertExternalStorageAWSS3Request] = None, gcs: Optional[UpsertExternalStorageGCSRequest] = None) -> StreamResponse[UpsertExternalStorageResponse]: json = UpsertExternalStorageRequest(type=type, aws_s3=aws_s3, gcs=gcs).to_dict() - return await self.put( - "/api/v2/imports/v2/external-storage", - UpsertExternalStorageResponse, - json=json, - ) - + return await self.put("/api/v2/imports/v2/external-storage", UpsertExternalStorageResponse, json=json) + @telemetry.operation_name("getstream.api.common.validate_importer_external_storage") - async def validate_importer_external_storage( - self, - ) -> StreamResponse[ValidateExternalStorageResponse]: - return await self.post( - "/api/v2/imports/v2/external-storage/validate", - ValidateExternalStorageResponse, - ) - + async def validate_importer_external_storage(self) -> StreamResponse[ValidateExternalStorageResponse]: + return await self.post("/api/v2/imports/v2/external-storage/validate", ValidateExternalStorageResponse) + @telemetry.operation_name("getstream.api.common.delete_import_v2_task") - async def delete_import_v2_task( - self, id: str - ) -> StreamResponse[DeleteImportV2TaskResponse]: + async def delete_import_v2_task(self, id: str) -> StreamResponse[DeleteImportV2TaskResponse]: path_params = { - "id": id, + "id": id, } - return await self.delete( - "/api/v2/imports/v2/{id}", - DeleteImportV2TaskResponse, - path_params=path_params, - ) - + return await self.delete("/api/v2/imports/v2/{id}", DeleteImportV2TaskResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_import_v2_task") - async def get_import_v2_task( - self, id: str - ) -> StreamResponse[GetImportV2TaskResponse]: + async def get_import_v2_task(self, id: str) -> StreamResponse[GetImportV2TaskResponse]: path_params = { - "id": id, + "id": id, } - return await self.get( - "/api/v2/imports/v2/{id}", GetImportV2TaskResponse, path_params=path_params - ) - + return await self.get("/api/v2/imports/v2/{id}", GetImportV2TaskResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.cancel_import_v2_task") - async def cancel_import_v2_task( - self, id: str - ) -> StreamResponse[CancelImportV2TaskResponse]: + async def cancel_import_v2_task(self, id: str) -> StreamResponse[CancelImportV2TaskResponse]: path_params = { - "id": id, + "id": id, } - return await self.post( - "/api/v2/imports/v2/{id}/cancel", - CancelImportV2TaskResponse, - path_params=path_params, - ) - + return await self.post("/api/v2/imports/v2/{id}/cancel", CancelImportV2TaskResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_import") async def get_import(self, id: str) -> StreamResponse[GetImportResponse]: path_params = { - "id": id, + "id": id, } - return await self.get( - "/api/v2/imports/{id}", GetImportResponse, path_params=path_params - ) - + return await self.get("/api/v2/imports/{id}", GetImportResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_og") async def get_og(self, url: str) -> StreamResponse[GetOGResponse]: query_params = build_query_param(url=url) return await self.get("/api/v2/og", GetOGResponse, query_params=query_params) - + @telemetry.operation_name("getstream.api.common.list_permissions") async def list_permissions(self) -> StreamResponse[ListPermissionsResponse]: return await self.get("/api/v2/permissions", ListPermissionsResponse) - + @telemetry.operation_name("getstream.api.common.create_permission") - async def create_permission( - self, - action: str, - id: str, - name: str, - condition: Dict[str, object], - description: Optional[str] = None, - owner: Optional[bool] = None, - same_team: Optional[bool] = None, - ) -> StreamResponse[Response]: - json = CreatePermissionRequest( - action=action, - id=id, - name=name, - condition=condition, - description=description, - owner=owner, - same_team=same_team, - ).to_dict() + async def create_permission(self, action: str, id: str, name: str, condition: Dict[str, object], description: Optional[str] = None, owner: Optional[bool] = None, same_team: Optional[bool] = None) -> StreamResponse[Response]: + json = CreatePermissionRequest(action=action, id=id, name=name, condition=condition, description=description, owner=owner, same_team=same_team).to_dict() return await self.post("/api/v2/permissions", Response, json=json) - + @telemetry.operation_name("getstream.api.common.delete_permission") async def delete_permission(self, id: str) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - return await self.delete( - "/api/v2/permissions/{id}", Response, path_params=path_params - ) - + return await self.delete("/api/v2/permissions/{id}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_permission") - async def get_permission( - self, id: str - ) -> StreamResponse[GetCustomPermissionResponse]: + async def get_permission(self, id: str) -> StreamResponse[GetCustomPermissionResponse]: path_params = { - "id": id, + "id": id, } - return await self.get( - "/api/v2/permissions/{id}", - GetCustomPermissionResponse, - path_params=path_params, - ) - + return await self.get("/api/v2/permissions/{id}", GetCustomPermissionResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.update_permission") - async def update_permission( - self, - id: str, - action: str, - name: str, - condition: Dict[str, object], - description: Optional[str] = None, - owner: Optional[bool] = None, - same_team: Optional[bool] = None, - ) -> StreamResponse[Response]: + async def update_permission(self, id: str, action: str, name: str, condition: Dict[str, object], description: Optional[str] = None, owner: Optional[bool] = None, same_team: Optional[bool] = None) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - json = PermissionRequest( - action=action, - name=name, - condition=condition, - description=description, - owner=owner, - same_team=same_team, - ).to_dict() - return await self.put( - "/api/v2/permissions/{id}", Response, path_params=path_params, json=json - ) - + json = PermissionRequest(action=action, name=name, condition=condition, description=description, owner=owner, same_team=same_team).to_dict() + return await self.put("/api/v2/permissions/{id}", Response, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.create_poll") - async def create_poll( - self, - name: str, - allow_answers: Optional[bool] = None, - allow_user_suggested_options: Optional[bool] = None, - description: Optional[str] = None, - enforce_unique_vote: Optional[bool] = None, - id: Optional[str] = None, - is_closed: Optional[bool] = None, - max_votes_allowed: Optional[int] = None, - user_id: Optional[str] = None, - voting_visibility: Optional[str] = None, - options: Optional[List[PollOptionInput]] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[PollResponse]: - json = CreatePollRequest( - name=name, - allow_answers=allow_answers, - allow_user_suggested_options=allow_user_suggested_options, - description=description, - enforce_unique_vote=enforce_unique_vote, - id=id, - is_closed=is_closed, - max_votes_allowed=max_votes_allowed, - user_id=user_id, - voting_visibility=voting_visibility, - options=options, - custom=custom, - user=user, - ).to_dict() + async def create_poll(self, name: str, allow_answers: Optional[bool] = None, allow_user_suggested_options: Optional[bool] = None, description: Optional[str] = None, enforce_unique_vote: Optional[bool] = None, id: Optional[str] = None, is_closed: Optional[bool] = None, max_votes_allowed: Optional[int] = None, user_id: Optional[str] = None, voting_visibility: Optional[str] = None, options: Optional[List[PollOptionInput]] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollResponse]: + json = CreatePollRequest(name=name, allow_answers=allow_answers, allow_user_suggested_options=allow_user_suggested_options, description=description, enforce_unique_vote=enforce_unique_vote, id=id, is_closed=is_closed, max_votes_allowed=max_votes_allowed, user_id=user_id, voting_visibility=voting_visibility, options=options, custom=custom, user=user).to_dict() return await self.post("/api/v2/polls", PollResponse, json=json) - + @telemetry.operation_name("getstream.api.common.update_poll") - async def update_poll( - self, - id: str, - name: str, - allow_answers: Optional[bool] = None, - allow_user_suggested_options: Optional[bool] = None, - description: Optional[str] = None, - enforce_unique_vote: Optional[bool] = None, - is_closed: Optional[bool] = None, - max_votes_allowed: Optional[int] = None, - user_id: Optional[str] = None, - voting_visibility: Optional[str] = None, - options: Optional[List[PollOptionRequest]] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[PollResponse]: - json = UpdatePollRequest( - id=id, - name=name, - allow_answers=allow_answers, - allow_user_suggested_options=allow_user_suggested_options, - description=description, - enforce_unique_vote=enforce_unique_vote, - is_closed=is_closed, - max_votes_allowed=max_votes_allowed, - user_id=user_id, - voting_visibility=voting_visibility, - options=options, - custom=custom, - user=user, - ).to_dict() + async def update_poll(self, id: str, name: str, allow_answers: Optional[bool] = None, allow_user_suggested_options: Optional[bool] = None, description: Optional[str] = None, enforce_unique_vote: Optional[bool] = None, is_closed: Optional[bool] = None, max_votes_allowed: Optional[int] = None, user_id: Optional[str] = None, voting_visibility: Optional[str] = None, options: Optional[List[PollOptionRequest]] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollResponse]: + json = UpdatePollRequest(id=id, name=name, allow_answers=allow_answers, allow_user_suggested_options=allow_user_suggested_options, description=description, enforce_unique_vote=enforce_unique_vote, is_closed=is_closed, max_votes_allowed=max_votes_allowed, user_id=user_id, voting_visibility=voting_visibility, options=options, custom=custom, user=user).to_dict() return await self.put("/api/v2/polls", PollResponse, json=json) - + @telemetry.operation_name("getstream.api.common.query_polls") - async def query_polls( - self, - user_id: Optional[str] = None, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryPollsResponse]: + async def query_polls(self, user_id: Optional[str] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryPollsResponse]: query_params = build_query_param(user_id=user_id) - json = QueryPollsRequest( - limit=limit, next=next, prev=prev, sort=sort, filter=filter - ).to_dict() - return await self.post( - "/api/v2/polls/query", - QueryPollsResponse, - query_params=query_params, - json=json, - ) - + json = QueryPollsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() + return await self.post("/api/v2/polls/query", QueryPollsResponse, query_params=query_params, json=json) + @telemetry.operation_name("getstream.api.common.delete_poll") - async def delete_poll( - self, poll_id: str, user_id: Optional[str] = None - ) -> StreamResponse[Response]: + async def delete_poll(self, poll_id: str, user_id: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(user_id=user_id) path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - return await self.delete( - "/api/v2/polls/{poll_id}", - Response, - query_params=query_params, - path_params=path_params, - ) - + return await self.delete("/api/v2/polls/{poll_id}", Response, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_poll") - async def get_poll( - self, poll_id: str, user_id: Optional[str] = None - ) -> StreamResponse[PollResponse]: + async def get_poll(self, poll_id: str, user_id: Optional[str] = None) -> StreamResponse[PollResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - return await self.get( - "/api/v2/polls/{poll_id}", - PollResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/polls/{poll_id}", PollResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.common.update_poll_partial") - async def update_poll_partial( - self, - poll_id: str, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[PollResponse]: + async def update_poll_partial(self, poll_id: str, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollResponse]: path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - json = UpdatePollPartialRequest( - user_id=user_id, unset=unset, set=set, user=user - ).to_dict() - return await self.patch( - "/api/v2/polls/{poll_id}", PollResponse, path_params=path_params, json=json - ) - + json = UpdatePollPartialRequest(user_id=user_id, unset=unset, set=set, user=user).to_dict() + return await self.patch("/api/v2/polls/{poll_id}", PollResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.create_poll_option") - async def create_poll_option( - self, - poll_id: str, - text: str, - user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[PollOptionResponse]: + async def create_poll_option(self, poll_id: str, text: str, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollOptionResponse]: path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - json = CreatePollOptionRequest( - text=text, user_id=user_id, custom=custom, user=user - ).to_dict() - return await self.post( - "/api/v2/polls/{poll_id}/options", - PollOptionResponse, - path_params=path_params, - json=json, - ) - + json = CreatePollOptionRequest(text=text, user_id=user_id, custom=custom, user=user).to_dict() + return await self.post("/api/v2/polls/{poll_id}/options", PollOptionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.update_poll_option") - async def update_poll_option( - self, - poll_id: str, - id: str, - text: str, - user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[PollOptionResponse]: + async def update_poll_option(self, poll_id: str, id: str, text: str, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollOptionResponse]: path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - json = UpdatePollOptionRequest( - id=id, text=text, user_id=user_id, custom=custom, user=user - ).to_dict() - return await self.put( - "/api/v2/polls/{poll_id}/options", - PollOptionResponse, - path_params=path_params, - json=json, - ) - + json = UpdatePollOptionRequest(id=id, text=text, user_id=user_id, custom=custom, user=user).to_dict() + return await self.put("/api/v2/polls/{poll_id}/options", PollOptionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.delete_poll_option") - async def delete_poll_option( - self, poll_id: str, option_id: str, user_id: Optional[str] = None - ) -> StreamResponse[Response]: + async def delete_poll_option(self, poll_id: str, option_id: str, user_id: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(user_id=user_id) path_params = { - "poll_id": poll_id, - "option_id": option_id, + "poll_id": poll_id, "option_id": option_id, } - return await self.delete( - "/api/v2/polls/{poll_id}/options/{option_id}", - Response, - query_params=query_params, - path_params=path_params, - ) - + return await self.delete("/api/v2/polls/{poll_id}/options/{option_id}", Response, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_poll_option") - async def get_poll_option( - self, poll_id: str, option_id: str - ) -> StreamResponse[PollOptionResponse]: + async def get_poll_option(self, poll_id: str, option_id: str) -> StreamResponse[PollOptionResponse]: path_params = { - "poll_id": poll_id, - "option_id": option_id, + "poll_id": poll_id, "option_id": option_id, } - return await self.get( - "/api/v2/polls/{poll_id}/options/{option_id}", - PollOptionResponse, - path_params=path_params, - ) - + return await self.get("/api/v2/polls/{poll_id}/options/{option_id}", PollOptionResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.query_poll_votes") - async def query_poll_votes( - self, - poll_id: str, - user_id: Optional[str] = None, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[PollVotesResponse]: + async def query_poll_votes(self, poll_id: str, user_id: Optional[str] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[PollVotesResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - json = QueryPollVotesRequest( - limit=limit, next=next, prev=prev, sort=sort, filter=filter - ).to_dict() - return await self.post( - "/api/v2/polls/{poll_id}/votes", - PollVotesResponse, - query_params=query_params, - path_params=path_params, - json=json, - ) - - @telemetry.operation_name( - "getstream.api.common.update_push_notification_preferences" - ) - async def update_push_notification_preferences( - self, preferences: List[PushPreferenceInput] - ) -> StreamResponse[UpsertPushPreferencesResponse]: + json = QueryPollVotesRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() + return await self.post("/api/v2/polls/{poll_id}/votes", PollVotesResponse, query_params=query_params, path_params=path_params, json=json) + + @telemetry.operation_name("getstream.api.common.update_push_notification_preferences") + async def update_push_notification_preferences(self, preferences: List[PushPreferenceInput]) -> StreamResponse[UpsertPushPreferencesResponse]: json = UpsertPushPreferencesRequest(preferences=preferences).to_dict() - return await self.post( - "/api/v2/push_preferences", UpsertPushPreferencesResponse, json=json - ) - + return await self.post("/api/v2/push_preferences", UpsertPushPreferencesResponse, json=json) + @telemetry.operation_name("getstream.api.common.list_push_providers") async def list_push_providers(self) -> StreamResponse[ListPushProvidersResponse]: return await self.get("/api/v2/push_providers", ListPushProvidersResponse) - + @telemetry.operation_name("getstream.api.common.upsert_push_provider") - async def upsert_push_provider( - self, push_provider: Optional[PushProviderRequest] = None - ) -> StreamResponse[UpsertPushProviderResponse]: + async def upsert_push_provider(self, push_provider: Optional[PushProviderRequest] = None) -> StreamResponse[UpsertPushProviderResponse]: json = UpsertPushProviderRequest(push_provider=push_provider).to_dict() - return await self.post( - "/api/v2/push_providers", UpsertPushProviderResponse, json=json - ) - + return await self.post("/api/v2/push_providers", UpsertPushProviderResponse, json=json) + @telemetry.operation_name("getstream.api.common.delete_push_provider") - async def delete_push_provider( - self, type: str, name: str - ) -> StreamResponse[Response]: + async def delete_push_provider(self, type: str, name: str) -> StreamResponse[Response]: path_params = { - "type": type, - "name": name, + "type": type, "name": name, } - return await self.delete( - "/api/v2/push_providers/{type}/{name}", Response, path_params=path_params - ) - + return await self.delete("/api/v2/push_providers/{type}/{name}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_push_templates") - async def get_push_templates( - self, push_provider_type: str, push_provider_name: Optional[str] = None - ) -> StreamResponse[GetPushTemplatesResponse]: - query_params = build_query_param( - push_provider_type=push_provider_type, push_provider_name=push_provider_name - ) - return await self.get( - "/api/v2/push_templates", - GetPushTemplatesResponse, - query_params=query_params, - ) - + async def get_push_templates(self, push_provider_type: str, push_provider_name: Optional[str] = None) -> StreamResponse[GetPushTemplatesResponse]: + query_params = build_query_param(push_provider_type=push_provider_type, push_provider_name=push_provider_name) + return await self.get("/api/v2/push_templates", GetPushTemplatesResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.upsert_push_template") - async def upsert_push_template( - self, - event_type: str, - push_provider_type: str, - enable_push: Optional[bool] = None, - push_provider_name: Optional[str] = None, - template: Optional[str] = None, - ) -> StreamResponse[UpsertPushTemplateResponse]: - json = UpsertPushTemplateRequest( - event_type=event_type, - push_provider_type=push_provider_type, - enable_push=enable_push, - push_provider_name=push_provider_name, - template=template, - ).to_dict() - return await self.post( - "/api/v2/push_templates", UpsertPushTemplateResponse, json=json - ) - + async def upsert_push_template(self, event_type: str, push_provider_type: str, enable_push: Optional[bool] = None, push_provider_name: Optional[str] = None, template: Optional[str] = None) -> StreamResponse[UpsertPushTemplateResponse]: + json = UpsertPushTemplateRequest(event_type=event_type, push_provider_type=push_provider_type, enable_push=enable_push, push_provider_name=push_provider_name, template=template).to_dict() + return await self.post("/api/v2/push_templates", UpsertPushTemplateResponse, json=json) + @telemetry.operation_name("getstream.api.common.get_rate_limits") - async def get_rate_limits( - self, - server_side: Optional[bool] = None, - android: Optional[bool] = None, - ios: Optional[bool] = None, - web: Optional[bool] = None, - unity: Optional[bool] = None, - endpoints: Optional[str] = None, - ) -> StreamResponse[GetRateLimitsResponse]: - query_params = build_query_param( - server_side=server_side, - android=android, - ios=ios, - web=web, - unity=unity, - endpoints=endpoints, - ) - return await self.get( - "/api/v2/rate_limits", GetRateLimitsResponse, query_params=query_params - ) - + async def get_rate_limits(self, server_side: Optional[bool] = None, android: Optional[bool] = None, ios: Optional[bool] = None, web: Optional[bool] = None, unity: Optional[bool] = None, endpoints: Optional[str] = None) -> StreamResponse[GetRateLimitsResponse]: + query_params = build_query_param(server_side=server_side, android=android, ios=ios, web=web, unity=unity, endpoints=endpoints) + return await self.get("/api/v2/rate_limits", GetRateLimitsResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.list_roles") async def list_roles(self) -> StreamResponse[ListRolesResponse]: return await self.get("/api/v2/roles", ListRolesResponse) - + @telemetry.operation_name("getstream.api.common.create_role") async def create_role(self, name: str) -> StreamResponse[CreateRoleResponse]: json = CreateRoleRequest(name=name).to_dict() return await self.post("/api/v2/roles", CreateRoleResponse, json=json) - + @telemetry.operation_name("getstream.api.common.search_roles") - async def search_roles( - self, - query: str, - limit: Optional[int] = None, - name_gt: Optional[str] = None, - role_type: Optional[str] = None, - include_global_roles: Optional[bool] = None, - ) -> StreamResponse[SearchRolesResponse]: - query_params = build_query_param( - query=query, - limit=limit, - name_gt=name_gt, - role_type=role_type, - include_global_roles=include_global_roles, - ) - return await self.get( - "/api/v2/roles/search", SearchRolesResponse, query_params=query_params - ) - + async def search_roles(self, query: str, limit: Optional[int] = None, name_gt: Optional[str] = None, role_type: Optional[str] = None, include_global_roles: Optional[bool] = None) -> StreamResponse[SearchRolesResponse]: + query_params = build_query_param(query=query, limit=limit, name_gt=name_gt, role_type=role_type, include_global_roles=include_global_roles) + return await self.get("/api/v2/roles/search", SearchRolesResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.delete_role") async def delete_role(self, name: str) -> StreamResponse[Response]: path_params = { - "name": name, + "name": name, } - return await self.delete( - "/api/v2/roles/{name}", Response, path_params=path_params - ) - + return await self.delete("/api/v2/roles/{name}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_task") async def get_task(self, id: str) -> StreamResponse[GetTaskResponse]: path_params = { - "id": id, + "id": id, } - return await self.get( - "/api/v2/tasks/{id}", GetTaskResponse, path_params=path_params - ) - + return await self.get("/api/v2/tasks/{id}", GetTaskResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.delete_file") async def delete_file(self, url: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(url=url) - return await self.delete( - "/api/v2/uploads/file", Response, query_params=query_params - ) - + return await self.delete("/api/v2/uploads/file", Response, query_params=query_params) + @telemetry.operation_name("getstream.api.common.upload_file") - async def upload_file( - self, file: Optional[str] = None, user: Optional[OnlyUserID] = None - ) -> StreamResponse[FileUploadResponse]: + async def upload_file(self, file: Optional[str] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[FileUploadResponse]: json = FileUploadRequest(file=file, user=user).to_dict() return await self.post("/api/v2/uploads/file", FileUploadResponse, json=json) - + @telemetry.operation_name("getstream.api.common.delete_image") async def delete_image(self, url: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(url=url) - return await self.delete( - "/api/v2/uploads/image", Response, query_params=query_params - ) - + return await self.delete("/api/v2/uploads/image", Response, query_params=query_params) + @telemetry.operation_name("getstream.api.common.upload_image") - async def upload_image( - self, - file: Optional[str] = None, - upload_sizes: Optional[List[ImageSize]] = None, - user: Optional[OnlyUserID] = None, - ) -> StreamResponse[ImageUploadResponse]: - json = ImageUploadRequest( - file=file, upload_sizes=upload_sizes, user=user - ).to_dict() + async def upload_image(self, file: Optional[str] = None, upload_sizes: Optional[List[ImageSize]] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[ImageUploadResponse]: + json = ImageUploadRequest(file=file, upload_sizes=upload_sizes, user=user).to_dict() return await self.post("/api/v2/uploads/image", ImageUploadResponse, json=json) - + @telemetry.operation_name("getstream.api.common.list_user_groups") - async def list_user_groups( - self, - limit: Optional[int] = None, - id_gt: Optional[str] = None, - created_at_gt: Optional[str] = None, - team_id: Optional[str] = None, - ) -> StreamResponse[ListUserGroupsResponse]: - query_params = build_query_param( - limit=limit, id_gt=id_gt, created_at_gt=created_at_gt, team_id=team_id - ) - return await self.get( - "/api/v2/usergroups", ListUserGroupsResponse, query_params=query_params - ) - + async def list_user_groups(self, limit: Optional[int] = None, id_gt: Optional[str] = None, created_at_gt: Optional[str] = None, team_id: Optional[str] = None) -> StreamResponse[ListUserGroupsResponse]: + query_params = build_query_param(limit=limit, id_gt=id_gt, created_at_gt=created_at_gt, team_id=team_id) + return await self.get("/api/v2/usergroups", ListUserGroupsResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.create_user_group") - async def create_user_group( - self, - name: str, - description: Optional[str] = None, - id: Optional[str] = None, - team_id: Optional[str] = None, - member_ids: Optional[List[str]] = None, - ) -> StreamResponse[CreateUserGroupResponse]: - json = CreateUserGroupRequest( - name=name, - description=description, - id=id, - team_id=team_id, - member_ids=member_ids, - ).to_dict() + async def create_user_group(self, name: str, description: Optional[str] = None, id: Optional[str] = None, team_id: Optional[str] = None, member_ids: Optional[List[str]] = None) -> StreamResponse[CreateUserGroupResponse]: + json = CreateUserGroupRequest(name=name, description=description, id=id, team_id=team_id, member_ids=member_ids).to_dict() return await self.post("/api/v2/usergroups", CreateUserGroupResponse, json=json) - + @telemetry.operation_name("getstream.api.common.search_user_groups") - async def search_user_groups( - self, - query: str, - limit: Optional[int] = None, - name_gt: Optional[str] = None, - id_gt: Optional[str] = None, - team_id: Optional[str] = None, - ) -> StreamResponse[SearchUserGroupsResponse]: - query_params = build_query_param( - query=query, limit=limit, name_gt=name_gt, id_gt=id_gt, team_id=team_id - ) - return await self.get( - "/api/v2/usergroups/search", - SearchUserGroupsResponse, - query_params=query_params, - ) - + async def search_user_groups(self, query: str, limit: Optional[int] = None, name_gt: Optional[str] = None, id_gt: Optional[str] = None, team_id: Optional[str] = None) -> StreamResponse[SearchUserGroupsResponse]: + query_params = build_query_param(query=query, limit=limit, name_gt=name_gt, id_gt=id_gt, team_id=team_id) + return await self.get("/api/v2/usergroups/search", SearchUserGroupsResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.delete_user_group") - async def delete_user_group( - self, id: str, team_id: Optional[str] = None - ) -> StreamResponse[Response]: + async def delete_user_group(self, id: str, team_id: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(team_id=team_id) path_params = { - "id": id, + "id": id, } - return await self.delete( - "/api/v2/usergroups/{id}", - Response, - query_params=query_params, - path_params=path_params, - ) - + return await self.delete("/api/v2/usergroups/{id}", Response, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_user_group") - async def get_user_group( - self, id: str, team_id: Optional[str] = None - ) -> StreamResponse[GetUserGroupResponse]: + async def get_user_group(self, id: str, team_id: Optional[str] = None) -> StreamResponse[GetUserGroupResponse]: query_params = build_query_param(team_id=team_id) path_params = { - "id": id, + "id": id, } - return await self.get( - "/api/v2/usergroups/{id}", - GetUserGroupResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/usergroups/{id}", GetUserGroupResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.common.update_user_group") - async def update_user_group( - self, - id: str, - description: Optional[str] = None, - name: Optional[str] = None, - team_id: Optional[str] = None, - ) -> StreamResponse[UpdateUserGroupResponse]: + async def update_user_group(self, id: str, description: Optional[str] = None, name: Optional[str] = None, team_id: Optional[str] = None) -> StreamResponse[UpdateUserGroupResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateUserGroupRequest( - description=description, name=name, team_id=team_id - ).to_dict() - return await self.put( - "/api/v2/usergroups/{id}", - UpdateUserGroupResponse, - path_params=path_params, - json=json, - ) - + json = UpdateUserGroupRequest(description=description, name=name, team_id=team_id).to_dict() + return await self.put("/api/v2/usergroups/{id}", UpdateUserGroupResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.add_user_group_members") - async def add_user_group_members( - self, - id: str, - member_ids: List[str], - as_admin: Optional[bool] = None, - team_id: Optional[str] = None, - ) -> StreamResponse[AddUserGroupMembersResponse]: + async def add_user_group_members(self, id: str, member_ids: List[str], as_admin: Optional[bool] = None, team_id: Optional[str] = None) -> StreamResponse[AddUserGroupMembersResponse]: path_params = { - "id": id, + "id": id, } - json = AddUserGroupMembersRequest( - member_ids=member_ids, as_admin=as_admin, team_id=team_id - ).to_dict() - return await self.post( - "/api/v2/usergroups/{id}/members", - AddUserGroupMembersResponse, - path_params=path_params, - json=json, - ) - + json = AddUserGroupMembersRequest(member_ids=member_ids, as_admin=as_admin, team_id=team_id).to_dict() + return await self.post("/api/v2/usergroups/{id}/members", AddUserGroupMembersResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.remove_user_group_members") - async def remove_user_group_members( - self, id: str, member_ids: List[str], team_id: Optional[str] = None - ) -> StreamResponse[RemoveUserGroupMembersResponse]: + async def remove_user_group_members(self, id: str, member_ids: List[str], team_id: Optional[str] = None) -> StreamResponse[RemoveUserGroupMembersResponse]: path_params = { - "id": id, + "id": id, } - json = RemoveUserGroupMembersRequest( - member_ids=member_ids, team_id=team_id - ).to_dict() - return await self.post( - "/api/v2/usergroups/{id}/members/delete", - RemoveUserGroupMembersResponse, - path_params=path_params, - json=json, - ) - + json = RemoveUserGroupMembersRequest(member_ids=member_ids, team_id=team_id).to_dict() + return await self.post("/api/v2/usergroups/{id}/members/delete", RemoveUserGroupMembersResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.query_users") - async def query_users( - self, payload: Optional[QueryUsersPayload] = None - ) -> StreamResponse[QueryUsersResponse]: + async def query_users(self, payload: Optional[QueryUsersPayload] = None) -> StreamResponse[QueryUsersResponse]: query_params = build_query_param(payload=payload) - return await self.get( - "/api/v2/users", QueryUsersResponse, query_params=query_params - ) - + return await self.get("/api/v2/users", QueryUsersResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.update_users_partial") - async def update_users_partial( - self, users: List[UpdateUserPartialRequest] - ) -> StreamResponse[UpdateUsersResponse]: + async def update_users_partial(self, users: List[UpdateUserPartialRequest]) -> StreamResponse[UpdateUsersResponse]: json = UpdateUsersPartialRequest(users=users).to_dict() return await self.patch("/api/v2/users", UpdateUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.update_users") - async def update_users( - self, users: Dict[str, UserRequest] - ) -> StreamResponse[UpdateUsersResponse]: + async def update_users(self, users: Dict[str, UserRequest]) -> StreamResponse[UpdateUsersResponse]: json = UpdateUsersRequest(users=users).to_dict() return await self.post("/api/v2/users", UpdateUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.get_blocked_users") - async def get_blocked_users( - self, user_id: Optional[str] = None - ) -> StreamResponse[GetBlockedUsersResponse]: + async def get_blocked_users(self, user_id: Optional[str] = None) -> StreamResponse[GetBlockedUsersResponse]: query_params = build_query_param(user_id=user_id) - return await self.get( - "/api/v2/users/block", GetBlockedUsersResponse, query_params=query_params - ) - + return await self.get("/api/v2/users/block", GetBlockedUsersResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.block_users") - async def block_users( - self, - blocked_user_id: str, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[BlockUsersResponse]: - json = BlockUsersRequest( - blocked_user_id=blocked_user_id, user_id=user_id, user=user - ).to_dict() + async def block_users(self, blocked_user_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[BlockUsersResponse]: + json = BlockUsersRequest(blocked_user_id=blocked_user_id, user_id=user_id, user=user).to_dict() return await self.post("/api/v2/users/block", BlockUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.deactivate_users") - async def deactivate_users( - self, - user_ids: List[str], - created_by_id: Optional[str] = None, - mark_channels_deleted: Optional[bool] = None, - mark_messages_deleted: Optional[bool] = None, - ) -> StreamResponse[DeactivateUsersResponse]: - json = DeactivateUsersRequest( - user_ids=user_ids, - created_by_id=created_by_id, - mark_channels_deleted=mark_channels_deleted, - mark_messages_deleted=mark_messages_deleted, - ).to_dict() - return await self.post( - "/api/v2/users/deactivate", DeactivateUsersResponse, json=json - ) - + async def deactivate_users(self, user_ids: List[str], created_by_id: Optional[str] = None, mark_channels_deleted: Optional[bool] = None, mark_messages_deleted: Optional[bool] = None) -> StreamResponse[DeactivateUsersResponse]: + json = DeactivateUsersRequest(user_ids=user_ids, created_by_id=created_by_id, mark_channels_deleted=mark_channels_deleted, mark_messages_deleted=mark_messages_deleted).to_dict() + return await self.post("/api/v2/users/deactivate", DeactivateUsersResponse, json=json) + @telemetry.operation_name("getstream.api.common.delete_users") - async def delete_users( - self, - user_ids: List[str], - calls: Optional[str] = None, - conversations: Optional[str] = None, - files: Optional[bool] = None, - messages: Optional[str] = None, - new_call_owner_id: Optional[str] = None, - new_channel_owner_id: Optional[str] = None, - user: Optional[str] = None, - ) -> StreamResponse[DeleteUsersResponse]: - json = DeleteUsersRequest( - user_ids=user_ids, - calls=calls, - conversations=conversations, - files=files, - messages=messages, - new_call_owner_id=new_call_owner_id, - new_channel_owner_id=new_channel_owner_id, - user=user, - ).to_dict() + async def delete_users(self, user_ids: List[str], calls: Optional[str] = None, conversations: Optional[str] = None, files: Optional[bool] = None, messages: Optional[str] = None, new_call_owner_id: Optional[str] = None, new_channel_owner_id: Optional[str] = None, user: Optional[str] = None) -> StreamResponse[DeleteUsersResponse]: + json = DeleteUsersRequest(user_ids=user_ids, calls=calls, conversations=conversations, files=files, messages=messages, new_call_owner_id=new_call_owner_id, new_channel_owner_id=new_channel_owner_id, user=user).to_dict() return await self.post("/api/v2/users/delete", DeleteUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.get_user_live_locations") - async def get_user_live_locations( - self, user_id: Optional[str] = None - ) -> StreamResponse[SharedLocationsResponse]: + async def get_user_live_locations(self, user_id: Optional[str] = None) -> StreamResponse[SharedLocationsResponse]: query_params = build_query_param(user_id=user_id) - return await self.get( - "/api/v2/users/live_locations", - SharedLocationsResponse, - query_params=query_params, - ) - + return await self.get("/api/v2/users/live_locations", SharedLocationsResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.update_live_location") - async def update_live_location( - self, - message_id: str, - end_at: Optional[datetime] = None, - latitude: Optional[float] = None, - longitude: Optional[float] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[SharedLocationResponse]: + async def update_live_location(self, message_id: str, end_at: Optional[datetime] = None, latitude: Optional[float] = None, longitude: Optional[float] = None, user_id: Optional[str] = None) -> StreamResponse[SharedLocationResponse]: query_params = build_query_param(user_id=user_id) - json = UpdateLiveLocationRequest( - message_id=message_id, end_at=end_at, latitude=latitude, longitude=longitude - ).to_dict() - return await self.put( - "/api/v2/users/live_locations", - SharedLocationResponse, - query_params=query_params, - json=json, - ) - + json = UpdateLiveLocationRequest(message_id=message_id, end_at=end_at, latitude=latitude, longitude=longitude).to_dict() + return await self.put("/api/v2/users/live_locations", SharedLocationResponse, query_params=query_params, json=json) + @telemetry.operation_name("getstream.api.common.reactivate_users") - async def reactivate_users( - self, - user_ids: List[str], - created_by_id: Optional[str] = None, - restore_channels: Optional[bool] = None, - restore_messages: Optional[bool] = None, - ) -> StreamResponse[ReactivateUsersResponse]: - json = ReactivateUsersRequest( - user_ids=user_ids, - created_by_id=created_by_id, - restore_channels=restore_channels, - restore_messages=restore_messages, - ).to_dict() - return await self.post( - "/api/v2/users/reactivate", ReactivateUsersResponse, json=json - ) - + async def reactivate_users(self, user_ids: List[str], created_by_id: Optional[str] = None, restore_channels: Optional[bool] = None, restore_messages: Optional[bool] = None) -> StreamResponse[ReactivateUsersResponse]: + json = ReactivateUsersRequest(user_ids=user_ids, created_by_id=created_by_id, restore_channels=restore_channels, restore_messages=restore_messages).to_dict() + return await self.post("/api/v2/users/reactivate", ReactivateUsersResponse, json=json) + @telemetry.operation_name("getstream.api.common.restore_users") async def restore_users(self, user_ids: List[str]) -> StreamResponse[Response]: json = RestoreUsersRequest(user_ids=user_ids).to_dict() return await self.post("/api/v2/users/restore", Response, json=json) - + @telemetry.operation_name("getstream.api.common.unblock_users") - async def unblock_users( - self, - blocked_user_id: str, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UnblockUsersResponse]: - json = UnblockUsersRequest( - blocked_user_id=blocked_user_id, user_id=user_id, user=user - ).to_dict() + async def unblock_users(self, blocked_user_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[UnblockUsersResponse]: + json = UnblockUsersRequest(blocked_user_id=blocked_user_id, user_id=user_id, user=user).to_dict() return await self.post("/api/v2/users/unblock", UnblockUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.deactivate_user") - async def deactivate_user( - self, - user_id: str, - created_by_id: Optional[str] = None, - mark_messages_deleted: Optional[bool] = None, - ) -> StreamResponse[DeactivateUserResponse]: + async def deactivate_user(self, user_id: str, created_by_id: Optional[str] = None, mark_messages_deleted: Optional[bool] = None) -> StreamResponse[DeactivateUserResponse]: path_params = { - "user_id": user_id, + "user_id": user_id, } - json = DeactivateUserRequest( - created_by_id=created_by_id, mark_messages_deleted=mark_messages_deleted - ).to_dict() - return await self.post( - "/api/v2/users/{user_id}/deactivate", - DeactivateUserResponse, - path_params=path_params, - json=json, - ) - + json = DeactivateUserRequest(created_by_id=created_by_id, mark_messages_deleted=mark_messages_deleted).to_dict() + return await self.post("/api/v2/users/{user_id}/deactivate", DeactivateUserResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.export_user") async def export_user(self, user_id: str) -> StreamResponse[ExportUserResponse]: path_params = { - "user_id": user_id, + "user_id": user_id, } - return await self.get( - "/api/v2/users/{user_id}/export", - ExportUserResponse, - path_params=path_params, - ) - + return await self.get("/api/v2/users/{user_id}/export", ExportUserResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.reactivate_user") - async def reactivate_user( - self, - user_id: str, - created_by_id: Optional[str] = None, - name: Optional[str] = None, - restore_messages: Optional[bool] = None, - ) -> StreamResponse[ReactivateUserResponse]: + async def reactivate_user(self, user_id: str, created_by_id: Optional[str] = None, name: Optional[str] = None, restore_messages: Optional[bool] = None) -> StreamResponse[ReactivateUserResponse]: path_params = { - "user_id": user_id, + "user_id": user_id, } - json = ReactivateUserRequest( - created_by_id=created_by_id, name=name, restore_messages=restore_messages - ).to_dict() - return await self.post( - "/api/v2/users/{user_id}/reactivate", - ReactivateUserResponse, - path_params=path_params, - json=json, - ) + json = ReactivateUserRequest(created_by_id=created_by_id, name=name, restore_messages=restore_messages).to_dict() + return await self.post("/api/v2/users/{user_id}/reactivate", ReactivateUserResponse, path_params=path_params, json=json) + \ No newline at end of file diff --git a/getstream/common/client.py b/getstream/common/client.py index 748b0b17..5d76f675 100644 --- a/getstream/common/client.py +++ b/getstream/common/client.py @@ -1,5 +1,4 @@ import json -from typing import List, Optional from getstream.common import telemetry from getstream.common.rest_client import CommonRestClient @@ -24,7 +23,7 @@ def __init__(self, api_key: str, base_url, token, timeout, user_agent=None): @telemetry.operation_name("getstream.api.common.upload_file") def upload_file( - self, file: str, user: Optional[OnlyUserID] = None + self, file: str, user: OnlyUserID | None = None ) -> StreamResponse[FileUploadResponse]: form_fields = [] if user is not None: @@ -40,8 +39,8 @@ def upload_file( def upload_image( self, file: str, - upload_sizes: Optional[List[ImageSize]] = None, - user: Optional[OnlyUserID] = None, + upload_sizes: list[ImageSize] | None = None, + user: OnlyUserID | None = None, ) -> StreamResponse[ImageUploadResponse]: form_fields = [] if user is not None: diff --git a/getstream/common/rest_client.py b/getstream/common/rest_client.py index 50e94f91..d0423ef5 100644 --- a/getstream/common/rest_client.py +++ b/getstream/common/rest_client.py @@ -1,3 +1,4 @@ + # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import BaseClient from getstream.common import telemetry @@ -7,14 +8,8 @@ class CommonRestClient(BaseClient): - def __init__( - self, - api_key: str, - base_url: str, - timeout: float, - token: str, - user_agent: str | None = None, - ): + + def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): """ Initializes CommonClient with BaseClient instance :param api_key: A string representing the client's API key @@ -31,1373 +26,534 @@ def __init__( user_agent=user_agent, ) + @telemetry.operation_name("getstream.api.common.get_app") def get_app(self) -> StreamResponse[GetApplicationResponse]: return self.get("/api/v2/app", GetApplicationResponse) - + @telemetry.operation_name("getstream.api.common.update_app") - def update_app( - self, - async_url_enrich_enabled: Optional[bool] = None, - auto_translation_enabled: Optional[bool] = None, - before_message_send_hook_attempt_timeout_ms: Optional[int] = None, - before_message_send_hook_url: Optional[str] = None, - cdn_expiration_seconds: Optional[int] = None, - channel_hide_members_only: Optional[bool] = None, - chat_primary_use_case: Optional[str] = None, - custom_action_handler_url: Optional[str] = None, - disable_auth_checks: Optional[bool] = None, - disable_permissions_checks: Optional[bool] = None, - enable_hook_payload_compression: Optional[bool] = None, - enforce_unique_usernames: Optional[str] = None, - feed_audit_logs_enabled: Optional[bool] = None, - feeds_moderation_enabled: Optional[bool] = None, - feeds_v2_region: Optional[str] = None, - guest_user_creation_disabled: Optional[bool] = None, - image_moderation_enabled: Optional[bool] = None, - max_aggregated_activities_length: Optional[int] = None, - member_custom_on_messages_enabled: Optional[bool] = None, - migrate_permissions_to_v2: Optional[bool] = None, - moderation_analytics_enabled: Optional[bool] = None, - moderation_enabled: Optional[bool] = None, - moderation_onboarding_complete: Optional[bool] = None, - moderation_s3_image_access_role_arn: Optional[str] = None, - moderation_webhook_url: Optional[str] = None, - multi_tenant_enabled: Optional[bool] = None, - permission_version: Optional[str] = None, - reminders_interval: Optional[int] = None, - reminders_max_members: Optional[int] = None, - reminders_max_per_user: Optional[int] = None, - revoke_tokens_issued_before: Optional[datetime] = None, - sns_key: Optional[str] = None, - sns_secret: Optional[str] = None, - sns_topic_arn: Optional[str] = None, - sqs_key: Optional[str] = None, - sqs_secret: Optional[str] = None, - sqs_url: Optional[str] = None, - user_response_time_enabled: Optional[bool] = None, - video_primary_use_case: Optional[str] = None, - webhook_url: Optional[str] = None, - allowed_flag_reasons: Optional[List[str]] = None, - event_hooks: Optional[List[EventHook]] = None, - image_moderation_block_labels: Optional[List[str]] = None, - image_moderation_labels: Optional[List[str]] = None, - user_search_disallowed_roles: Optional[List[str]] = None, - webhook_events: Optional[List[str]] = None, - activity_metrics_config: Optional[Dict[str, int]] = None, - apn_config: Optional[APNConfig] = None, - async_moderation_config: Optional[AsyncModerationConfiguration] = None, - datadog_info: Optional[DataDogInfo] = None, - file_upload_config: Optional[FileUploadConfig] = None, - firebase_config: Optional[FirebaseConfig] = None, - grants: Optional[Dict[str, List[str]]] = None, - huawei_config: Optional[HuaweiConfig] = None, - image_upload_config: Optional[FileUploadConfig] = None, - moderation_dashboard_preferences: Optional[ - ModerationDashboardPreferences - ] = None, - push_config: Optional[PushConfig] = None, - xiaomi_config: Optional[XiaomiConfig] = None, - ) -> StreamResponse[Response]: - json = UpdateAppRequest( - async_url_enrich_enabled=async_url_enrich_enabled, - auto_translation_enabled=auto_translation_enabled, - before_message_send_hook_attempt_timeout_ms=before_message_send_hook_attempt_timeout_ms, - before_message_send_hook_url=before_message_send_hook_url, - cdn_expiration_seconds=cdn_expiration_seconds, - channel_hide_members_only=channel_hide_members_only, - chat_primary_use_case=chat_primary_use_case, - custom_action_handler_url=custom_action_handler_url, - disable_auth_checks=disable_auth_checks, - disable_permissions_checks=disable_permissions_checks, - enable_hook_payload_compression=enable_hook_payload_compression, - enforce_unique_usernames=enforce_unique_usernames, - feed_audit_logs_enabled=feed_audit_logs_enabled, - feeds_moderation_enabled=feeds_moderation_enabled, - feeds_v2_region=feeds_v2_region, - guest_user_creation_disabled=guest_user_creation_disabled, - image_moderation_enabled=image_moderation_enabled, - max_aggregated_activities_length=max_aggregated_activities_length, - member_custom_on_messages_enabled=member_custom_on_messages_enabled, - migrate_permissions_to_v2=migrate_permissions_to_v2, - moderation_analytics_enabled=moderation_analytics_enabled, - moderation_enabled=moderation_enabled, - moderation_onboarding_complete=moderation_onboarding_complete, - moderation_s3_image_access_role_arn=moderation_s3_image_access_role_arn, - moderation_webhook_url=moderation_webhook_url, - multi_tenant_enabled=multi_tenant_enabled, - permission_version=permission_version, - reminders_interval=reminders_interval, - reminders_max_members=reminders_max_members, - reminders_max_per_user=reminders_max_per_user, - revoke_tokens_issued_before=revoke_tokens_issued_before, - sns_key=sns_key, - sns_secret=sns_secret, - sns_topic_arn=sns_topic_arn, - sqs_key=sqs_key, - sqs_secret=sqs_secret, - sqs_url=sqs_url, - user_response_time_enabled=user_response_time_enabled, - video_primary_use_case=video_primary_use_case, - webhook_url=webhook_url, - allowed_flag_reasons=allowed_flag_reasons, - event_hooks=event_hooks, - image_moderation_block_labels=image_moderation_block_labels, - image_moderation_labels=image_moderation_labels, - user_search_disallowed_roles=user_search_disallowed_roles, - webhook_events=webhook_events, - activity_metrics_config=activity_metrics_config, - apn_config=apn_config, - async_moderation_config=async_moderation_config, - datadog_info=datadog_info, - file_upload_config=file_upload_config, - firebase_config=firebase_config, - grants=grants, - huawei_config=huawei_config, - image_upload_config=image_upload_config, - moderation_dashboard_preferences=moderation_dashboard_preferences, - push_config=push_config, - xiaomi_config=xiaomi_config, - ).to_dict() + def update_app(self, async_url_enrich_enabled: Optional[bool] = None, auto_translation_enabled: Optional[bool] = None, before_message_send_hook_attempt_timeout_ms: Optional[int] = None, before_message_send_hook_url: Optional[str] = None, cdn_expiration_seconds: Optional[int] = None, channel_hide_members_only: Optional[bool] = None, chat_primary_use_case: Optional[str] = None, custom_action_handler_url: Optional[str] = None, disable_auth_checks: Optional[bool] = None, disable_permissions_checks: Optional[bool] = None, enable_hook_payload_compression: Optional[bool] = None, enforce_unique_usernames: Optional[str] = None, feed_audit_logs_enabled: Optional[bool] = None, feeds_moderation_enabled: Optional[bool] = None, feeds_v2_region: Optional[str] = None, guest_user_creation_disabled: Optional[bool] = None, image_moderation_enabled: Optional[bool] = None, max_aggregated_activities_length: Optional[int] = None, member_custom_on_mentioned_users_enabled: Optional[bool] = None, member_custom_on_messages_enabled: Optional[bool] = None, member_custom_on_typing_events_enabled: Optional[bool] = None, migrate_permissions_to_v2: Optional[bool] = None, moderation_analytics_enabled: Optional[bool] = None, moderation_enabled: Optional[bool] = None, moderation_onboarding_complete: Optional[bool] = None, moderation_s3_image_access_role_arn: Optional[str] = None, moderation_webhook_url: Optional[str] = None, multi_tenant_enabled: Optional[bool] = None, permission_version: Optional[str] = None, reminders_interval: Optional[int] = None, reminders_max_members: Optional[int] = None, reminders_max_per_user: Optional[int] = None, revoke_tokens_issued_before: Optional[datetime] = None, sns_key: Optional[str] = None, sns_secret: Optional[str] = None, sns_topic_arn: Optional[str] = None, sqs_key: Optional[str] = None, sqs_secret: Optional[str] = None, sqs_url: Optional[str] = None, user_response_time_enabled: Optional[bool] = None, video_primary_use_case: Optional[str] = None, webhook_url: Optional[str] = None, allowed_flag_reasons: Optional[List[str]] = None, event_hooks: Optional[List[EventHook]] = None, image_moderation_block_labels: Optional[List[str]] = None, image_moderation_labels: Optional[List[str]] = None, user_search_disallowed_roles: Optional[List[str]] = None, webhook_events: Optional[List[str]] = None, activity_metrics_config: Optional[Dict[str, int]] = None, apn_config: Optional[APNConfig] = None, async_moderation_config: Optional[AsyncModerationConfiguration] = None, datadog_info: Optional[DataDogInfo] = None, file_upload_config: Optional[FileUploadConfig] = None, firebase_config: Optional[FirebaseConfig] = None, grants: Optional[Dict[str, List[str]]] = None, huawei_config: Optional[HuaweiConfig] = None, image_upload_config: Optional[FileUploadConfig] = None, moderation_dashboard_preferences: Optional[ModerationDashboardPreferences] = None, push_config: Optional[PushConfig] = None, xiaomi_config: Optional[XiaomiConfig] = None) -> StreamResponse[Response]: + json = UpdateAppRequest(async_url_enrich_enabled=async_url_enrich_enabled, auto_translation_enabled=auto_translation_enabled, before_message_send_hook_attempt_timeout_ms=before_message_send_hook_attempt_timeout_ms, before_message_send_hook_url=before_message_send_hook_url, cdn_expiration_seconds=cdn_expiration_seconds, channel_hide_members_only=channel_hide_members_only, chat_primary_use_case=chat_primary_use_case, custom_action_handler_url=custom_action_handler_url, disable_auth_checks=disable_auth_checks, disable_permissions_checks=disable_permissions_checks, enable_hook_payload_compression=enable_hook_payload_compression, enforce_unique_usernames=enforce_unique_usernames, feed_audit_logs_enabled=feed_audit_logs_enabled, feeds_moderation_enabled=feeds_moderation_enabled, feeds_v2_region=feeds_v2_region, guest_user_creation_disabled=guest_user_creation_disabled, image_moderation_enabled=image_moderation_enabled, max_aggregated_activities_length=max_aggregated_activities_length, member_custom_on_mentioned_users_enabled=member_custom_on_mentioned_users_enabled, member_custom_on_messages_enabled=member_custom_on_messages_enabled, member_custom_on_typing_events_enabled=member_custom_on_typing_events_enabled, migrate_permissions_to_v2=migrate_permissions_to_v2, moderation_analytics_enabled=moderation_analytics_enabled, moderation_enabled=moderation_enabled, moderation_onboarding_complete=moderation_onboarding_complete, moderation_s3_image_access_role_arn=moderation_s3_image_access_role_arn, moderation_webhook_url=moderation_webhook_url, multi_tenant_enabled=multi_tenant_enabled, permission_version=permission_version, reminders_interval=reminders_interval, reminders_max_members=reminders_max_members, reminders_max_per_user=reminders_max_per_user, revoke_tokens_issued_before=revoke_tokens_issued_before, sns_key=sns_key, sns_secret=sns_secret, sns_topic_arn=sns_topic_arn, sqs_key=sqs_key, sqs_secret=sqs_secret, sqs_url=sqs_url, user_response_time_enabled=user_response_time_enabled, video_primary_use_case=video_primary_use_case, webhook_url=webhook_url, allowed_flag_reasons=allowed_flag_reasons, event_hooks=event_hooks, image_moderation_block_labels=image_moderation_block_labels, image_moderation_labels=image_moderation_labels, user_search_disallowed_roles=user_search_disallowed_roles, webhook_events=webhook_events, activity_metrics_config=activity_metrics_config, apn_config=apn_config, async_moderation_config=async_moderation_config, datadog_info=datadog_info, file_upload_config=file_upload_config, firebase_config=firebase_config, grants=grants, huawei_config=huawei_config, image_upload_config=image_upload_config, moderation_dashboard_preferences=moderation_dashboard_preferences, push_config=push_config, xiaomi_config=xiaomi_config).to_dict() return self.patch("/api/v2/app", Response, json=json) - + @telemetry.operation_name("getstream.api.common.list_block_lists") - def list_block_lists( - self, - team: Optional[str] = None, - cursor: Optional[str] = None, - limit: Optional[int] = None, - ) -> StreamResponse[ListBlockListResponse]: + def list_block_lists(self, team: Optional[str] = None, cursor: Optional[str] = None, limit: Optional[int] = None) -> StreamResponse[ListBlockListResponse]: query_params = build_query_param(team=team, cursor=cursor, limit=limit) - return self.get( - "/api/v2/blocklists", ListBlockListResponse, query_params=query_params - ) - + return self.get("/api/v2/blocklists", ListBlockListResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.create_block_list") - def create_block_list( - self, - name: str, - words: List[str], - is_confusable_folding_enabled: Optional[bool] = None, - is_leet_check_enabled: Optional[bool] = None, - is_plural_check_enabled: Optional[bool] = None, - is_substring_matching_enabled: Optional[bool] = None, - team: Optional[str] = None, - type: Optional[str] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[CreateBlockListResponse]: - json = CreateBlockListRequest( - name=name, - words=words, - is_confusable_folding_enabled=is_confusable_folding_enabled, - is_leet_check_enabled=is_leet_check_enabled, - is_plural_check_enabled=is_plural_check_enabled, - is_substring_matching_enabled=is_substring_matching_enabled, - team=team, - type=type, - user_id=user_id, - user=user, - ).to_dict() + def create_block_list(self, name: str, words: List[str], is_confusable_folding_enabled: Optional[bool] = None, is_leet_check_enabled: Optional[bool] = None, is_plural_check_enabled: Optional[bool] = None, is_substring_matching_enabled: Optional[bool] = None, team: Optional[str] = None, type: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CreateBlockListResponse]: + json = CreateBlockListRequest(name=name, words=words, is_confusable_folding_enabled=is_confusable_folding_enabled, is_leet_check_enabled=is_leet_check_enabled, is_plural_check_enabled=is_plural_check_enabled, is_substring_matching_enabled=is_substring_matching_enabled, team=team, type=type, user_id=user_id, user=user).to_dict() return self.post("/api/v2/blocklists", CreateBlockListResponse, json=json) - + @telemetry.operation_name("getstream.api.common.import_block_list") - def import_block_list( - self, id: str, items: List[str], chunk_size: Optional[int] = None - ) -> StreamResponse[ImportBlockListResponse]: + def import_block_list(self, id: str, items: List[str], chunk_size: Optional[int] = None) -> StreamResponse[ImportBlockListResponse]: path_params = { - "id": id, + "id": id, } json = ImportBlockListRequest(items=items, chunk_size=chunk_size).to_dict() - return self.post( - "/api/v2/blocklists/{id}/import", - ImportBlockListResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/blocklists/{id}/import", ImportBlockListResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.delete_block_list") - def delete_block_list( - self, name: str, team: Optional[str] = None, user_id: Optional[str] = None - ) -> StreamResponse[Response]: + def delete_block_list(self, name: str, team: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(team=team, user_id=user_id) path_params = { - "name": name, + "name": name, } - return self.delete( - "/api/v2/blocklists/{name}", - Response, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/blocklists/{name}", Response, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_block_list") - def get_block_list( - self, name: str, team: Optional[str] = None - ) -> StreamResponse[GetBlockListResponse]: + def get_block_list(self, name: str, team: Optional[str] = None) -> StreamResponse[GetBlockListResponse]: query_params = build_query_param(team=team) path_params = { - "name": name, + "name": name, } - return self.get( - "/api/v2/blocklists/{name}", - GetBlockListResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/blocklists/{name}", GetBlockListResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.common.update_block_list") - def update_block_list( - self, - name: str, - is_confusable_folding_enabled: Optional[bool] = None, - is_leet_check_enabled: Optional[bool] = None, - is_plural_check_enabled: Optional[bool] = None, - is_substring_matching_enabled: Optional[bool] = None, - team: Optional[str] = None, - user_id: Optional[str] = None, - words: Optional[List[str]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateBlockListResponse]: + def update_block_list(self, name: str, is_confusable_folding_enabled: Optional[bool] = None, is_leet_check_enabled: Optional[bool] = None, is_plural_check_enabled: Optional[bool] = None, is_substring_matching_enabled: Optional[bool] = None, team: Optional[str] = None, user_id: Optional[str] = None, words: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateBlockListResponse]: path_params = { - "name": name, + "name": name, } - json = UpdateBlockListRequest( - is_confusable_folding_enabled=is_confusable_folding_enabled, - is_leet_check_enabled=is_leet_check_enabled, - is_plural_check_enabled=is_plural_check_enabled, - is_substring_matching_enabled=is_substring_matching_enabled, - team=team, - user_id=user_id, - words=words, - user=user, - ).to_dict() - return self.put( - "/api/v2/blocklists/{name}", - UpdateBlockListResponse, - path_params=path_params, - json=json, - ) - + json = UpdateBlockListRequest(is_confusable_folding_enabled=is_confusable_folding_enabled, is_leet_check_enabled=is_leet_check_enabled, is_plural_check_enabled=is_plural_check_enabled, is_substring_matching_enabled=is_substring_matching_enabled, team=team, user_id=user_id, words=words, user=user).to_dict() + return self.put("/api/v2/blocklists/{name}", UpdateBlockListResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.check_push") - def check_push( - self, - apn_template: Optional[str] = None, - event_type: Optional[str] = None, - firebase_data_template: Optional[str] = None, - firebase_template: Optional[str] = None, - message_id: Optional[str] = None, - push_provider_name: Optional[str] = None, - push_provider_type: Optional[str] = None, - skip_devices: Optional[bool] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[CheckPushResponse]: - json = CheckPushRequest( - apn_template=apn_template, - event_type=event_type, - firebase_data_template=firebase_data_template, - firebase_template=firebase_template, - message_id=message_id, - push_provider_name=push_provider_name, - push_provider_type=push_provider_type, - skip_devices=skip_devices, - user_id=user_id, - user=user, - ).to_dict() + def check_push(self, apn_template: Optional[str] = None, event_type: Optional[str] = None, firebase_data_template: Optional[str] = None, firebase_template: Optional[str] = None, message_id: Optional[str] = None, push_provider_name: Optional[str] = None, push_provider_type: Optional[str] = None, skip_devices: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CheckPushResponse]: + json = CheckPushRequest(apn_template=apn_template, event_type=event_type, firebase_data_template=firebase_data_template, firebase_template=firebase_template, message_id=message_id, push_provider_name=push_provider_name, push_provider_type=push_provider_type, skip_devices=skip_devices, user_id=user_id, user=user).to_dict() return self.post("/api/v2/check_push", CheckPushResponse, json=json) - + @telemetry.operation_name("getstream.api.common.check_sns") - def check_sns( - self, - sns_key: Optional[str] = None, - sns_secret: Optional[str] = None, - sns_topic_arn: Optional[str] = None, - ) -> StreamResponse[CheckSNSResponse]: - json = CheckSNSRequest( - sns_key=sns_key, sns_secret=sns_secret, sns_topic_arn=sns_topic_arn - ).to_dict() + def check_sns(self, sns_key: Optional[str] = None, sns_secret: Optional[str] = None, sns_topic_arn: Optional[str] = None) -> StreamResponse[CheckSNSResponse]: + json = CheckSNSRequest(sns_key=sns_key, sns_secret=sns_secret, sns_topic_arn=sns_topic_arn).to_dict() return self.post("/api/v2/check_sns", CheckSNSResponse, json=json) - + @telemetry.operation_name("getstream.api.common.check_sqs") - def check_sqs( - self, - sqs_key: Optional[str] = None, - sqs_secret: Optional[str] = None, - sqs_url: Optional[str] = None, - ) -> StreamResponse[CheckSQSResponse]: - json = CheckSQSRequest( - sqs_key=sqs_key, sqs_secret=sqs_secret, sqs_url=sqs_url - ).to_dict() + def check_sqs(self, sqs_key: Optional[str] = None, sqs_secret: Optional[str] = None, sqs_url: Optional[str] = None) -> StreamResponse[CheckSQSResponse]: + json = CheckSQSRequest(sqs_key=sqs_key, sqs_secret=sqs_secret, sqs_url=sqs_url).to_dict() return self.post("/api/v2/check_sqs", CheckSQSResponse, json=json) - + @telemetry.operation_name("getstream.api.common.delete_device") - def delete_device( - self, id: str, user_id: Optional[str] = None - ) -> StreamResponse[Response]: + def delete_device(self, id: str, user_id: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(id=id, user_id=user_id) return self.delete("/api/v2/devices", Response, query_params=query_params) - + @telemetry.operation_name("getstream.api.common.list_devices") - def list_devices( - self, user_id: Optional[str] = None - ) -> StreamResponse[ListDevicesResponse]: + def list_devices(self, user_id: Optional[str] = None) -> StreamResponse[ListDevicesResponse]: query_params = build_query_param(user_id=user_id) - return self.get( - "/api/v2/devices", ListDevicesResponse, query_params=query_params - ) - + return self.get("/api/v2/devices", ListDevicesResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.create_device") - def create_device( - self, - id: str, - push_provider: str, - hardware_id: Optional[str] = None, - push_provider_name: Optional[str] = None, - user_id: Optional[str] = None, - voip_token: Optional[bool] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[Response]: - json = CreateDeviceRequest( - id=id, - push_provider=push_provider, - hardware_id=hardware_id, - push_provider_name=push_provider_name, - user_id=user_id, - voip_token=voip_token, - user=user, - ).to_dict() + def create_device(self, id: str, push_provider: str, hardware_id: Optional[str] = None, push_provider_name: Optional[str] = None, user_id: Optional[str] = None, voip_token: Optional[bool] = None, user: Optional[UserRequest] = None) -> StreamResponse[Response]: + json = CreateDeviceRequest(id=id, push_provider=push_provider, hardware_id=hardware_id, push_provider_name=push_provider_name, user_id=user_id, voip_token=voip_token, user=user).to_dict() return self.post("/api/v2/devices", Response, json=json) - + @telemetry.operation_name("getstream.api.common.export_users") def export_users(self, user_ids: List[str]) -> StreamResponse[ExportUsersResponse]: json = ExportUsersRequest(user_ids=user_ids).to_dict() return self.post("/api/v2/export/users", ExportUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.list_external_storage") def list_external_storage(self) -> StreamResponse[ListExternalStorageResponse]: return self.get("/api/v2/external_storage", ListExternalStorageResponse) - + @telemetry.operation_name("getstream.api.common.create_external_storage") - def create_external_storage( - self, - bucket: str, - name: str, - storage_type: str, - gcs_credentials: Optional[str] = None, - path: Optional[str] = None, - aws_s3: Optional[S3Request] = None, - azure_blob: Optional[AzureRequest] = None, - ) -> StreamResponse[CreateExternalStorageResponse]: - json = CreateExternalStorageRequest( - bucket=bucket, - name=name, - storage_type=storage_type, - gcs_credentials=gcs_credentials, - path=path, - aws_s3=aws_s3, - azure_blob=azure_blob, - ).to_dict() - return self.post( - "/api/v2/external_storage", CreateExternalStorageResponse, json=json - ) - + def create_external_storage(self, bucket: str, name: str, storage_type: str, gcs_credentials: Optional[str] = None, path: Optional[str] = None, aws_s3: Optional[S3Request] = None, azure_blob: Optional[AzureRequest] = None) -> StreamResponse[CreateExternalStorageResponse]: + json = CreateExternalStorageRequest(bucket=bucket, name=name, storage_type=storage_type, gcs_credentials=gcs_credentials, path=path, aws_s3=aws_s3, azure_blob=azure_blob).to_dict() + return self.post("/api/v2/external_storage", CreateExternalStorageResponse, json=json) + @telemetry.operation_name("getstream.api.common.delete_external_storage") - def delete_external_storage( - self, name: str - ) -> StreamResponse[DeleteExternalStorageResponse]: + def delete_external_storage(self, name: str) -> StreamResponse[DeleteExternalStorageResponse]: path_params = { - "name": name, + "name": name, } - return self.delete( - "/api/v2/external_storage/{name}", - DeleteExternalStorageResponse, - path_params=path_params, - ) - + return self.delete("/api/v2/external_storage/{name}", DeleteExternalStorageResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.update_external_storage") - def update_external_storage( - self, - name: str, - bucket: str, - storage_type: str, - gcs_credentials: Optional[str] = None, - path: Optional[str] = None, - aws_s3: Optional[S3Request] = None, - azure_blob: Optional[AzureRequest] = None, - ) -> StreamResponse[UpdateExternalStorageResponse]: + def update_external_storage(self, name: str, bucket: str, storage_type: str, gcs_credentials: Optional[str] = None, path: Optional[str] = None, aws_s3: Optional[S3Request] = None, azure_blob: Optional[AzureRequest] = None) -> StreamResponse[UpdateExternalStorageResponse]: path_params = { - "name": name, + "name": name, } - json = UpdateExternalStorageRequest( - bucket=bucket, - storage_type=storage_type, - gcs_credentials=gcs_credentials, - path=path, - aws_s3=aws_s3, - azure_blob=azure_blob, - ).to_dict() - return self.put( - "/api/v2/external_storage/{name}", - UpdateExternalStorageResponse, - path_params=path_params, - json=json, - ) - + json = UpdateExternalStorageRequest(bucket=bucket, storage_type=storage_type, gcs_credentials=gcs_credentials, path=path, aws_s3=aws_s3, azure_blob=azure_blob).to_dict() + return self.put("/api/v2/external_storage/{name}", UpdateExternalStorageResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.check_external_storage") - def check_external_storage( - self, name: str - ) -> StreamResponse[CheckExternalStorageResponse]: + def check_external_storage(self, name: str) -> StreamResponse[CheckExternalStorageResponse]: path_params = { - "name": name, + "name": name, } - return self.get( - "/api/v2/external_storage/{name}/check", - CheckExternalStorageResponse, - path_params=path_params, - ) - + return self.get("/api/v2/external_storage/{name}/check", CheckExternalStorageResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.create_guest") def create_guest(self, user: UserRequest) -> StreamResponse[CreateGuestResponse]: json = CreateGuestRequest(user=user).to_dict() return self.post("/api/v2/guest", CreateGuestResponse, json=json) - + @telemetry.operation_name("getstream.api.common.create_import_url") - def create_import_url( - self, filename: Optional[str] = None - ) -> StreamResponse[CreateImportURLResponse]: + def create_import_url(self, filename: Optional[str] = None) -> StreamResponse[CreateImportURLResponse]: json = CreateImportURLRequest(filename=filename).to_dict() return self.post("/api/v2/import_urls", CreateImportURLResponse, json=json) - + @telemetry.operation_name("getstream.api.common.list_imports") def list_imports(self) -> StreamResponse[ListImportsResponse]: return self.get("/api/v2/imports", ListImportsResponse) - + @telemetry.operation_name("getstream.api.common.create_import") - def create_import( - self, mode: str, path: str, merge_custom: Optional[bool] = None - ) -> StreamResponse[CreateImportResponse]: - json = CreateImportRequest( - mode=mode, path=path, merge_custom=merge_custom - ).to_dict() + def create_import(self, mode: str, path: str, merge_custom: Optional[bool] = None) -> StreamResponse[CreateImportResponse]: + json = CreateImportRequest(mode=mode, path=path, merge_custom=merge_custom).to_dict() return self.post("/api/v2/imports", CreateImportResponse, json=json) - + @telemetry.operation_name("getstream.api.common.list_import_v2_tasks") - def list_import_v2_tasks( - self, state: Optional[int] = None - ) -> StreamResponse[ListImportV2TasksResponse]: + def list_import_v2_tasks(self, state: Optional[int] = None) -> StreamResponse[ListImportV2TasksResponse]: query_params = build_query_param(state=state) - return self.get( - "/api/v2/imports/v2", ListImportV2TasksResponse, query_params=query_params - ) - + return self.get("/api/v2/imports/v2", ListImportV2TasksResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.create_import_v2_task") - def create_import_v2_task( - self, - product: str, - settings: ImportV2TaskSettings, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[CreateImportV2TaskResponse]: - json = CreateImportV2TaskRequest( - product=product, settings=settings, user_id=user_id, user=user - ).to_dict() + def create_import_v2_task(self, product: str, settings: ImportV2TaskSettings, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CreateImportV2TaskResponse]: + json = CreateImportV2TaskRequest(product=product, settings=settings, user_id=user_id, user=user).to_dict() return self.post("/api/v2/imports/v2", CreateImportV2TaskResponse, json=json) - + @telemetry.operation_name("getstream.api.common.delete_importer_external_storage") - def delete_importer_external_storage( - self, - ) -> StreamResponse[DeleteExternalStorageResponse]: - return self.delete( - "/api/v2/imports/v2/external-storage", DeleteExternalStorageResponse - ) - + def delete_importer_external_storage(self) -> StreamResponse[DeleteExternalStorageResponse]: + return self.delete("/api/v2/imports/v2/external-storage", DeleteExternalStorageResponse) + @telemetry.operation_name("getstream.api.common.get_importer_external_storage") - def get_importer_external_storage( - self, - ) -> StreamResponse[GetExternalStorageResponse]: - return self.get( - "/api/v2/imports/v2/external-storage", GetExternalStorageResponse - ) - + def get_importer_external_storage(self) -> StreamResponse[GetExternalStorageResponse]: + return self.get("/api/v2/imports/v2/external-storage", GetExternalStorageResponse) + @telemetry.operation_name("getstream.api.common.upsert_importer_external_storage") - def upsert_importer_external_storage( - self, - type: str, - aws_s3: Optional[UpsertExternalStorageAWSS3Request] = None, - gcs: Optional[UpsertExternalStorageGCSRequest] = None, - ) -> StreamResponse[UpsertExternalStorageResponse]: + def upsert_importer_external_storage(self, type: str, aws_s3: Optional[UpsertExternalStorageAWSS3Request] = None, gcs: Optional[UpsertExternalStorageGCSRequest] = None) -> StreamResponse[UpsertExternalStorageResponse]: json = UpsertExternalStorageRequest(type=type, aws_s3=aws_s3, gcs=gcs).to_dict() - return self.put( - "/api/v2/imports/v2/external-storage", - UpsertExternalStorageResponse, - json=json, - ) - + return self.put("/api/v2/imports/v2/external-storage", UpsertExternalStorageResponse, json=json) + @telemetry.operation_name("getstream.api.common.validate_importer_external_storage") - def validate_importer_external_storage( - self, - ) -> StreamResponse[ValidateExternalStorageResponse]: - return self.post( - "/api/v2/imports/v2/external-storage/validate", - ValidateExternalStorageResponse, - ) - + def validate_importer_external_storage(self) -> StreamResponse[ValidateExternalStorageResponse]: + return self.post("/api/v2/imports/v2/external-storage/validate", ValidateExternalStorageResponse) + @telemetry.operation_name("getstream.api.common.delete_import_v2_task") - def delete_import_v2_task( - self, id: str - ) -> StreamResponse[DeleteImportV2TaskResponse]: + def delete_import_v2_task(self, id: str) -> StreamResponse[DeleteImportV2TaskResponse]: path_params = { - "id": id, + "id": id, } - return self.delete( - "/api/v2/imports/v2/{id}", - DeleteImportV2TaskResponse, - path_params=path_params, - ) - + return self.delete("/api/v2/imports/v2/{id}", DeleteImportV2TaskResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_import_v2_task") def get_import_v2_task(self, id: str) -> StreamResponse[GetImportV2TaskResponse]: path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/imports/v2/{id}", GetImportV2TaskResponse, path_params=path_params - ) - + return self.get("/api/v2/imports/v2/{id}", GetImportV2TaskResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.cancel_import_v2_task") - def cancel_import_v2_task( - self, id: str - ) -> StreamResponse[CancelImportV2TaskResponse]: + def cancel_import_v2_task(self, id: str) -> StreamResponse[CancelImportV2TaskResponse]: path_params = { - "id": id, + "id": id, } - return self.post( - "/api/v2/imports/v2/{id}/cancel", - CancelImportV2TaskResponse, - path_params=path_params, - ) - + return self.post("/api/v2/imports/v2/{id}/cancel", CancelImportV2TaskResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_import") def get_import(self, id: str) -> StreamResponse[GetImportResponse]: path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/imports/{id}", GetImportResponse, path_params=path_params - ) - + return self.get("/api/v2/imports/{id}", GetImportResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_og") def get_og(self, url: str) -> StreamResponse[GetOGResponse]: query_params = build_query_param(url=url) return self.get("/api/v2/og", GetOGResponse, query_params=query_params) - + @telemetry.operation_name("getstream.api.common.list_permissions") def list_permissions(self) -> StreamResponse[ListPermissionsResponse]: return self.get("/api/v2/permissions", ListPermissionsResponse) - + @telemetry.operation_name("getstream.api.common.create_permission") - def create_permission( - self, - action: str, - id: str, - name: str, - condition: Dict[str, object], - description: Optional[str] = None, - owner: Optional[bool] = None, - same_team: Optional[bool] = None, - ) -> StreamResponse[Response]: - json = CreatePermissionRequest( - action=action, - id=id, - name=name, - condition=condition, - description=description, - owner=owner, - same_team=same_team, - ).to_dict() + def create_permission(self, action: str, id: str, name: str, condition: Dict[str, object], description: Optional[str] = None, owner: Optional[bool] = None, same_team: Optional[bool] = None) -> StreamResponse[Response]: + json = CreatePermissionRequest(action=action, id=id, name=name, condition=condition, description=description, owner=owner, same_team=same_team).to_dict() return self.post("/api/v2/permissions", Response, json=json) - + @telemetry.operation_name("getstream.api.common.delete_permission") def delete_permission(self, id: str) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - return self.delete( - "/api/v2/permissions/{id}", Response, path_params=path_params - ) - + return self.delete("/api/v2/permissions/{id}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_permission") def get_permission(self, id: str) -> StreamResponse[GetCustomPermissionResponse]: path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/permissions/{id}", - GetCustomPermissionResponse, - path_params=path_params, - ) - + return self.get("/api/v2/permissions/{id}", GetCustomPermissionResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.update_permission") - def update_permission( - self, - id: str, - action: str, - name: str, - condition: Dict[str, object], - description: Optional[str] = None, - owner: Optional[bool] = None, - same_team: Optional[bool] = None, - ) -> StreamResponse[Response]: + def update_permission(self, id: str, action: str, name: str, condition: Dict[str, object], description: Optional[str] = None, owner: Optional[bool] = None, same_team: Optional[bool] = None) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - json = PermissionRequest( - action=action, - name=name, - condition=condition, - description=description, - owner=owner, - same_team=same_team, - ).to_dict() - return self.put( - "/api/v2/permissions/{id}", Response, path_params=path_params, json=json - ) - + json = PermissionRequest(action=action, name=name, condition=condition, description=description, owner=owner, same_team=same_team).to_dict() + return self.put("/api/v2/permissions/{id}", Response, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.create_poll") - def create_poll( - self, - name: str, - allow_answers: Optional[bool] = None, - allow_user_suggested_options: Optional[bool] = None, - description: Optional[str] = None, - enforce_unique_vote: Optional[bool] = None, - id: Optional[str] = None, - is_closed: Optional[bool] = None, - max_votes_allowed: Optional[int] = None, - user_id: Optional[str] = None, - voting_visibility: Optional[str] = None, - options: Optional[List[PollOptionInput]] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[PollResponse]: - json = CreatePollRequest( - name=name, - allow_answers=allow_answers, - allow_user_suggested_options=allow_user_suggested_options, - description=description, - enforce_unique_vote=enforce_unique_vote, - id=id, - is_closed=is_closed, - max_votes_allowed=max_votes_allowed, - user_id=user_id, - voting_visibility=voting_visibility, - options=options, - custom=custom, - user=user, - ).to_dict() + def create_poll(self, name: str, allow_answers: Optional[bool] = None, allow_user_suggested_options: Optional[bool] = None, description: Optional[str] = None, enforce_unique_vote: Optional[bool] = None, id: Optional[str] = None, is_closed: Optional[bool] = None, max_votes_allowed: Optional[int] = None, user_id: Optional[str] = None, voting_visibility: Optional[str] = None, options: Optional[List[PollOptionInput]] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollResponse]: + json = CreatePollRequest(name=name, allow_answers=allow_answers, allow_user_suggested_options=allow_user_suggested_options, description=description, enforce_unique_vote=enforce_unique_vote, id=id, is_closed=is_closed, max_votes_allowed=max_votes_allowed, user_id=user_id, voting_visibility=voting_visibility, options=options, custom=custom, user=user).to_dict() return self.post("/api/v2/polls", PollResponse, json=json) - + @telemetry.operation_name("getstream.api.common.update_poll") - def update_poll( - self, - id: str, - name: str, - allow_answers: Optional[bool] = None, - allow_user_suggested_options: Optional[bool] = None, - description: Optional[str] = None, - enforce_unique_vote: Optional[bool] = None, - is_closed: Optional[bool] = None, - max_votes_allowed: Optional[int] = None, - user_id: Optional[str] = None, - voting_visibility: Optional[str] = None, - options: Optional[List[PollOptionRequest]] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[PollResponse]: - json = UpdatePollRequest( - id=id, - name=name, - allow_answers=allow_answers, - allow_user_suggested_options=allow_user_suggested_options, - description=description, - enforce_unique_vote=enforce_unique_vote, - is_closed=is_closed, - max_votes_allowed=max_votes_allowed, - user_id=user_id, - voting_visibility=voting_visibility, - options=options, - custom=custom, - user=user, - ).to_dict() + def update_poll(self, id: str, name: str, allow_answers: Optional[bool] = None, allow_user_suggested_options: Optional[bool] = None, description: Optional[str] = None, enforce_unique_vote: Optional[bool] = None, is_closed: Optional[bool] = None, max_votes_allowed: Optional[int] = None, user_id: Optional[str] = None, voting_visibility: Optional[str] = None, options: Optional[List[PollOptionRequest]] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollResponse]: + json = UpdatePollRequest(id=id, name=name, allow_answers=allow_answers, allow_user_suggested_options=allow_user_suggested_options, description=description, enforce_unique_vote=enforce_unique_vote, is_closed=is_closed, max_votes_allowed=max_votes_allowed, user_id=user_id, voting_visibility=voting_visibility, options=options, custom=custom, user=user).to_dict() return self.put("/api/v2/polls", PollResponse, json=json) - + @telemetry.operation_name("getstream.api.common.query_polls") - def query_polls( - self, - user_id: Optional[str] = None, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryPollsResponse]: + def query_polls(self, user_id: Optional[str] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryPollsResponse]: query_params = build_query_param(user_id=user_id) - json = QueryPollsRequest( - limit=limit, next=next, prev=prev, sort=sort, filter=filter - ).to_dict() - return self.post( - "/api/v2/polls/query", - QueryPollsResponse, - query_params=query_params, - json=json, - ) - + json = QueryPollsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() + return self.post("/api/v2/polls/query", QueryPollsResponse, query_params=query_params, json=json) + @telemetry.operation_name("getstream.api.common.delete_poll") - def delete_poll( - self, poll_id: str, user_id: Optional[str] = None - ) -> StreamResponse[Response]: + def delete_poll(self, poll_id: str, user_id: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(user_id=user_id) path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - return self.delete( - "/api/v2/polls/{poll_id}", - Response, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/polls/{poll_id}", Response, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_poll") - def get_poll( - self, poll_id: str, user_id: Optional[str] = None - ) -> StreamResponse[PollResponse]: + def get_poll(self, poll_id: str, user_id: Optional[str] = None) -> StreamResponse[PollResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - return self.get( - "/api/v2/polls/{poll_id}", - PollResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/polls/{poll_id}", PollResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.common.update_poll_partial") - def update_poll_partial( - self, - poll_id: str, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[PollResponse]: + def update_poll_partial(self, poll_id: str, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollResponse]: path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - json = UpdatePollPartialRequest( - user_id=user_id, unset=unset, set=set, user=user - ).to_dict() - return self.patch( - "/api/v2/polls/{poll_id}", PollResponse, path_params=path_params, json=json - ) - + json = UpdatePollPartialRequest(user_id=user_id, unset=unset, set=set, user=user).to_dict() + return self.patch("/api/v2/polls/{poll_id}", PollResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.create_poll_option") - def create_poll_option( - self, - poll_id: str, - text: str, - user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[PollOptionResponse]: + def create_poll_option(self, poll_id: str, text: str, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollOptionResponse]: path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - json = CreatePollOptionRequest( - text=text, user_id=user_id, custom=custom, user=user - ).to_dict() - return self.post( - "/api/v2/polls/{poll_id}/options", - PollOptionResponse, - path_params=path_params, - json=json, - ) - + json = CreatePollOptionRequest(text=text, user_id=user_id, custom=custom, user=user).to_dict() + return self.post("/api/v2/polls/{poll_id}/options", PollOptionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.update_poll_option") - def update_poll_option( - self, - poll_id: str, - id: str, - text: str, - user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[PollOptionResponse]: + def update_poll_option(self, poll_id: str, id: str, text: str, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollOptionResponse]: path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - json = UpdatePollOptionRequest( - id=id, text=text, user_id=user_id, custom=custom, user=user - ).to_dict() - return self.put( - "/api/v2/polls/{poll_id}/options", - PollOptionResponse, - path_params=path_params, - json=json, - ) - + json = UpdatePollOptionRequest(id=id, text=text, user_id=user_id, custom=custom, user=user).to_dict() + return self.put("/api/v2/polls/{poll_id}/options", PollOptionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.delete_poll_option") - def delete_poll_option( - self, poll_id: str, option_id: str, user_id: Optional[str] = None - ) -> StreamResponse[Response]: + def delete_poll_option(self, poll_id: str, option_id: str, user_id: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(user_id=user_id) path_params = { - "poll_id": poll_id, - "option_id": option_id, + "poll_id": poll_id, "option_id": option_id, } - return self.delete( - "/api/v2/polls/{poll_id}/options/{option_id}", - Response, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/polls/{poll_id}/options/{option_id}", Response, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_poll_option") - def get_poll_option( - self, poll_id: str, option_id: str - ) -> StreamResponse[PollOptionResponse]: + def get_poll_option(self, poll_id: str, option_id: str) -> StreamResponse[PollOptionResponse]: path_params = { - "poll_id": poll_id, - "option_id": option_id, + "poll_id": poll_id, "option_id": option_id, } - return self.get( - "/api/v2/polls/{poll_id}/options/{option_id}", - PollOptionResponse, - path_params=path_params, - ) - + return self.get("/api/v2/polls/{poll_id}/options/{option_id}", PollOptionResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.query_poll_votes") - def query_poll_votes( - self, - poll_id: str, - user_id: Optional[str] = None, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[PollVotesResponse]: + def query_poll_votes(self, poll_id: str, user_id: Optional[str] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[PollVotesResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - json = QueryPollVotesRequest( - limit=limit, next=next, prev=prev, sort=sort, filter=filter - ).to_dict() - return self.post( - "/api/v2/polls/{poll_id}/votes", - PollVotesResponse, - query_params=query_params, - path_params=path_params, - json=json, - ) - - @telemetry.operation_name( - "getstream.api.common.update_push_notification_preferences" - ) - def update_push_notification_preferences( - self, preferences: List[PushPreferenceInput] - ) -> StreamResponse[UpsertPushPreferencesResponse]: + json = QueryPollVotesRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() + return self.post("/api/v2/polls/{poll_id}/votes", PollVotesResponse, query_params=query_params, path_params=path_params, json=json) + + @telemetry.operation_name("getstream.api.common.update_push_notification_preferences") + def update_push_notification_preferences(self, preferences: List[PushPreferenceInput]) -> StreamResponse[UpsertPushPreferencesResponse]: json = UpsertPushPreferencesRequest(preferences=preferences).to_dict() - return self.post( - "/api/v2/push_preferences", UpsertPushPreferencesResponse, json=json - ) - + return self.post("/api/v2/push_preferences", UpsertPushPreferencesResponse, json=json) + @telemetry.operation_name("getstream.api.common.list_push_providers") def list_push_providers(self) -> StreamResponse[ListPushProvidersResponse]: return self.get("/api/v2/push_providers", ListPushProvidersResponse) - + @telemetry.operation_name("getstream.api.common.upsert_push_provider") - def upsert_push_provider( - self, push_provider: Optional[PushProviderRequest] = None - ) -> StreamResponse[UpsertPushProviderResponse]: + def upsert_push_provider(self, push_provider: Optional[PushProviderRequest] = None) -> StreamResponse[UpsertPushProviderResponse]: json = UpsertPushProviderRequest(push_provider=push_provider).to_dict() - return self.post( - "/api/v2/push_providers", UpsertPushProviderResponse, json=json - ) - + return self.post("/api/v2/push_providers", UpsertPushProviderResponse, json=json) + @telemetry.operation_name("getstream.api.common.delete_push_provider") def delete_push_provider(self, type: str, name: str) -> StreamResponse[Response]: path_params = { - "type": type, - "name": name, + "type": type, "name": name, } - return self.delete( - "/api/v2/push_providers/{type}/{name}", Response, path_params=path_params - ) - + return self.delete("/api/v2/push_providers/{type}/{name}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_push_templates") - def get_push_templates( - self, push_provider_type: str, push_provider_name: Optional[str] = None - ) -> StreamResponse[GetPushTemplatesResponse]: - query_params = build_query_param( - push_provider_type=push_provider_type, push_provider_name=push_provider_name - ) - return self.get( - "/api/v2/push_templates", - GetPushTemplatesResponse, - query_params=query_params, - ) - + def get_push_templates(self, push_provider_type: str, push_provider_name: Optional[str] = None) -> StreamResponse[GetPushTemplatesResponse]: + query_params = build_query_param(push_provider_type=push_provider_type, push_provider_name=push_provider_name) + return self.get("/api/v2/push_templates", GetPushTemplatesResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.upsert_push_template") - def upsert_push_template( - self, - event_type: str, - push_provider_type: str, - enable_push: Optional[bool] = None, - push_provider_name: Optional[str] = None, - template: Optional[str] = None, - ) -> StreamResponse[UpsertPushTemplateResponse]: - json = UpsertPushTemplateRequest( - event_type=event_type, - push_provider_type=push_provider_type, - enable_push=enable_push, - push_provider_name=push_provider_name, - template=template, - ).to_dict() - return self.post( - "/api/v2/push_templates", UpsertPushTemplateResponse, json=json - ) - + def upsert_push_template(self, event_type: str, push_provider_type: str, enable_push: Optional[bool] = None, push_provider_name: Optional[str] = None, template: Optional[str] = None) -> StreamResponse[UpsertPushTemplateResponse]: + json = UpsertPushTemplateRequest(event_type=event_type, push_provider_type=push_provider_type, enable_push=enable_push, push_provider_name=push_provider_name, template=template).to_dict() + return self.post("/api/v2/push_templates", UpsertPushTemplateResponse, json=json) + @telemetry.operation_name("getstream.api.common.get_rate_limits") - def get_rate_limits( - self, - server_side: Optional[bool] = None, - android: Optional[bool] = None, - ios: Optional[bool] = None, - web: Optional[bool] = None, - unity: Optional[bool] = None, - endpoints: Optional[str] = None, - ) -> StreamResponse[GetRateLimitsResponse]: - query_params = build_query_param( - server_side=server_side, - android=android, - ios=ios, - web=web, - unity=unity, - endpoints=endpoints, - ) - return self.get( - "/api/v2/rate_limits", GetRateLimitsResponse, query_params=query_params - ) - + def get_rate_limits(self, server_side: Optional[bool] = None, android: Optional[bool] = None, ios: Optional[bool] = None, web: Optional[bool] = None, unity: Optional[bool] = None, endpoints: Optional[str] = None) -> StreamResponse[GetRateLimitsResponse]: + query_params = build_query_param(server_side=server_side, android=android, ios=ios, web=web, unity=unity, endpoints=endpoints) + return self.get("/api/v2/rate_limits", GetRateLimitsResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.list_roles") def list_roles(self) -> StreamResponse[ListRolesResponse]: return self.get("/api/v2/roles", ListRolesResponse) - + @telemetry.operation_name("getstream.api.common.create_role") def create_role(self, name: str) -> StreamResponse[CreateRoleResponse]: json = CreateRoleRequest(name=name).to_dict() return self.post("/api/v2/roles", CreateRoleResponse, json=json) - + @telemetry.operation_name("getstream.api.common.search_roles") - def search_roles( - self, - query: str, - limit: Optional[int] = None, - name_gt: Optional[str] = None, - role_type: Optional[str] = None, - include_global_roles: Optional[bool] = None, - ) -> StreamResponse[SearchRolesResponse]: - query_params = build_query_param( - query=query, - limit=limit, - name_gt=name_gt, - role_type=role_type, - include_global_roles=include_global_roles, - ) - return self.get( - "/api/v2/roles/search", SearchRolesResponse, query_params=query_params - ) - + def search_roles(self, query: str, limit: Optional[int] = None, name_gt: Optional[str] = None, role_type: Optional[str] = None, include_global_roles: Optional[bool] = None) -> StreamResponse[SearchRolesResponse]: + query_params = build_query_param(query=query, limit=limit, name_gt=name_gt, role_type=role_type, include_global_roles=include_global_roles) + return self.get("/api/v2/roles/search", SearchRolesResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.delete_role") def delete_role(self, name: str) -> StreamResponse[Response]: path_params = { - "name": name, + "name": name, } return self.delete("/api/v2/roles/{name}", Response, path_params=path_params) - + @telemetry.operation_name("getstream.api.common.get_task") def get_task(self, id: str) -> StreamResponse[GetTaskResponse]: path_params = { - "id": id, + "id": id, } return self.get("/api/v2/tasks/{id}", GetTaskResponse, path_params=path_params) - + @telemetry.operation_name("getstream.api.common.delete_file") def delete_file(self, url: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(url=url) return self.delete("/api/v2/uploads/file", Response, query_params=query_params) - + @telemetry.operation_name("getstream.api.common.upload_file") - def upload_file( - self, file: Optional[str] = None, user: Optional[OnlyUserID] = None - ) -> StreamResponse[FileUploadResponse]: + def upload_file(self, file: Optional[str] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[FileUploadResponse]: json = FileUploadRequest(file=file, user=user).to_dict() return self.post("/api/v2/uploads/file", FileUploadResponse, json=json) - + @telemetry.operation_name("getstream.api.common.delete_image") def delete_image(self, url: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(url=url) return self.delete("/api/v2/uploads/image", Response, query_params=query_params) - + @telemetry.operation_name("getstream.api.common.upload_image") - def upload_image( - self, - file: Optional[str] = None, - upload_sizes: Optional[List[ImageSize]] = None, - user: Optional[OnlyUserID] = None, - ) -> StreamResponse[ImageUploadResponse]: - json = ImageUploadRequest( - file=file, upload_sizes=upload_sizes, user=user - ).to_dict() + def upload_image(self, file: Optional[str] = None, upload_sizes: Optional[List[ImageSize]] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[ImageUploadResponse]: + json = ImageUploadRequest(file=file, upload_sizes=upload_sizes, user=user).to_dict() return self.post("/api/v2/uploads/image", ImageUploadResponse, json=json) - + @telemetry.operation_name("getstream.api.common.list_user_groups") - def list_user_groups( - self, - limit: Optional[int] = None, - id_gt: Optional[str] = None, - created_at_gt: Optional[str] = None, - team_id: Optional[str] = None, - ) -> StreamResponse[ListUserGroupsResponse]: - query_params = build_query_param( - limit=limit, id_gt=id_gt, created_at_gt=created_at_gt, team_id=team_id - ) - return self.get( - "/api/v2/usergroups", ListUserGroupsResponse, query_params=query_params - ) - + def list_user_groups(self, limit: Optional[int] = None, id_gt: Optional[str] = None, created_at_gt: Optional[str] = None, team_id: Optional[str] = None) -> StreamResponse[ListUserGroupsResponse]: + query_params = build_query_param(limit=limit, id_gt=id_gt, created_at_gt=created_at_gt, team_id=team_id) + return self.get("/api/v2/usergroups", ListUserGroupsResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.create_user_group") - def create_user_group( - self, - name: str, - description: Optional[str] = None, - id: Optional[str] = None, - team_id: Optional[str] = None, - member_ids: Optional[List[str]] = None, - ) -> StreamResponse[CreateUserGroupResponse]: - json = CreateUserGroupRequest( - name=name, - description=description, - id=id, - team_id=team_id, - member_ids=member_ids, - ).to_dict() + def create_user_group(self, name: str, description: Optional[str] = None, id: Optional[str] = None, team_id: Optional[str] = None, member_ids: Optional[List[str]] = None) -> StreamResponse[CreateUserGroupResponse]: + json = CreateUserGroupRequest(name=name, description=description, id=id, team_id=team_id, member_ids=member_ids).to_dict() return self.post("/api/v2/usergroups", CreateUserGroupResponse, json=json) - + @telemetry.operation_name("getstream.api.common.search_user_groups") - def search_user_groups( - self, - query: str, - limit: Optional[int] = None, - name_gt: Optional[str] = None, - id_gt: Optional[str] = None, - team_id: Optional[str] = None, - ) -> StreamResponse[SearchUserGroupsResponse]: - query_params = build_query_param( - query=query, limit=limit, name_gt=name_gt, id_gt=id_gt, team_id=team_id - ) - return self.get( - "/api/v2/usergroups/search", - SearchUserGroupsResponse, - query_params=query_params, - ) - + def search_user_groups(self, query: str, limit: Optional[int] = None, name_gt: Optional[str] = None, id_gt: Optional[str] = None, team_id: Optional[str] = None) -> StreamResponse[SearchUserGroupsResponse]: + query_params = build_query_param(query=query, limit=limit, name_gt=name_gt, id_gt=id_gt, team_id=team_id) + return self.get("/api/v2/usergroups/search", SearchUserGroupsResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.delete_user_group") - def delete_user_group( - self, id: str, team_id: Optional[str] = None - ) -> StreamResponse[Response]: + def delete_user_group(self, id: str, team_id: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(team_id=team_id) path_params = { - "id": id, + "id": id, } - return self.delete( - "/api/v2/usergroups/{id}", - Response, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/usergroups/{id}", Response, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.common.get_user_group") - def get_user_group( - self, id: str, team_id: Optional[str] = None - ) -> StreamResponse[GetUserGroupResponse]: + def get_user_group(self, id: str, team_id: Optional[str] = None) -> StreamResponse[GetUserGroupResponse]: query_params = build_query_param(team_id=team_id) path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/usergroups/{id}", - GetUserGroupResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/usergroups/{id}", GetUserGroupResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.common.update_user_group") - def update_user_group( - self, - id: str, - description: Optional[str] = None, - name: Optional[str] = None, - team_id: Optional[str] = None, - ) -> StreamResponse[UpdateUserGroupResponse]: + def update_user_group(self, id: str, description: Optional[str] = None, name: Optional[str] = None, team_id: Optional[str] = None) -> StreamResponse[UpdateUserGroupResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateUserGroupRequest( - description=description, name=name, team_id=team_id - ).to_dict() - return self.put( - "/api/v2/usergroups/{id}", - UpdateUserGroupResponse, - path_params=path_params, - json=json, - ) - + json = UpdateUserGroupRequest(description=description, name=name, team_id=team_id).to_dict() + return self.put("/api/v2/usergroups/{id}", UpdateUserGroupResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.add_user_group_members") - def add_user_group_members( - self, - id: str, - member_ids: List[str], - as_admin: Optional[bool] = None, - team_id: Optional[str] = None, - ) -> StreamResponse[AddUserGroupMembersResponse]: + def add_user_group_members(self, id: str, member_ids: List[str], as_admin: Optional[bool] = None, team_id: Optional[str] = None) -> StreamResponse[AddUserGroupMembersResponse]: path_params = { - "id": id, + "id": id, } - json = AddUserGroupMembersRequest( - member_ids=member_ids, as_admin=as_admin, team_id=team_id - ).to_dict() - return self.post( - "/api/v2/usergroups/{id}/members", - AddUserGroupMembersResponse, - path_params=path_params, - json=json, - ) - + json = AddUserGroupMembersRequest(member_ids=member_ids, as_admin=as_admin, team_id=team_id).to_dict() + return self.post("/api/v2/usergroups/{id}/members", AddUserGroupMembersResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.remove_user_group_members") - def remove_user_group_members( - self, id: str, member_ids: List[str], team_id: Optional[str] = None - ) -> StreamResponse[RemoveUserGroupMembersResponse]: + def remove_user_group_members(self, id: str, member_ids: List[str], team_id: Optional[str] = None) -> StreamResponse[RemoveUserGroupMembersResponse]: path_params = { - "id": id, + "id": id, } - json = RemoveUserGroupMembersRequest( - member_ids=member_ids, team_id=team_id - ).to_dict() - return self.post( - "/api/v2/usergroups/{id}/members/delete", - RemoveUserGroupMembersResponse, - path_params=path_params, - json=json, - ) - + json = RemoveUserGroupMembersRequest(member_ids=member_ids, team_id=team_id).to_dict() + return self.post("/api/v2/usergroups/{id}/members/delete", RemoveUserGroupMembersResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.query_users") - def query_users( - self, payload: Optional[QueryUsersPayload] = None - ) -> StreamResponse[QueryUsersResponse]: + def query_users(self, payload: Optional[QueryUsersPayload] = None) -> StreamResponse[QueryUsersResponse]: query_params = build_query_param(payload=payload) return self.get("/api/v2/users", QueryUsersResponse, query_params=query_params) - + @telemetry.operation_name("getstream.api.common.update_users_partial") - def update_users_partial( - self, users: List[UpdateUserPartialRequest] - ) -> StreamResponse[UpdateUsersResponse]: + def update_users_partial(self, users: List[UpdateUserPartialRequest]) -> StreamResponse[UpdateUsersResponse]: json = UpdateUsersPartialRequest(users=users).to_dict() return self.patch("/api/v2/users", UpdateUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.update_users") - def update_users( - self, users: Dict[str, UserRequest] - ) -> StreamResponse[UpdateUsersResponse]: + def update_users(self, users: Dict[str, UserRequest]) -> StreamResponse[UpdateUsersResponse]: json = UpdateUsersRequest(users=users).to_dict() return self.post("/api/v2/users", UpdateUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.get_blocked_users") - def get_blocked_users( - self, user_id: Optional[str] = None - ) -> StreamResponse[GetBlockedUsersResponse]: + def get_blocked_users(self, user_id: Optional[str] = None) -> StreamResponse[GetBlockedUsersResponse]: query_params = build_query_param(user_id=user_id) - return self.get( - "/api/v2/users/block", GetBlockedUsersResponse, query_params=query_params - ) - + return self.get("/api/v2/users/block", GetBlockedUsersResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.block_users") - def block_users( - self, - blocked_user_id: str, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[BlockUsersResponse]: - json = BlockUsersRequest( - blocked_user_id=blocked_user_id, user_id=user_id, user=user - ).to_dict() + def block_users(self, blocked_user_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[BlockUsersResponse]: + json = BlockUsersRequest(blocked_user_id=blocked_user_id, user_id=user_id, user=user).to_dict() return self.post("/api/v2/users/block", BlockUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.deactivate_users") - def deactivate_users( - self, - user_ids: List[str], - created_by_id: Optional[str] = None, - mark_channels_deleted: Optional[bool] = None, - mark_messages_deleted: Optional[bool] = None, - ) -> StreamResponse[DeactivateUsersResponse]: - json = DeactivateUsersRequest( - user_ids=user_ids, - created_by_id=created_by_id, - mark_channels_deleted=mark_channels_deleted, - mark_messages_deleted=mark_messages_deleted, - ).to_dict() + def deactivate_users(self, user_ids: List[str], created_by_id: Optional[str] = None, mark_channels_deleted: Optional[bool] = None, mark_messages_deleted: Optional[bool] = None) -> StreamResponse[DeactivateUsersResponse]: + json = DeactivateUsersRequest(user_ids=user_ids, created_by_id=created_by_id, mark_channels_deleted=mark_channels_deleted, mark_messages_deleted=mark_messages_deleted).to_dict() return self.post("/api/v2/users/deactivate", DeactivateUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.delete_users") - def delete_users( - self, - user_ids: List[str], - calls: Optional[str] = None, - conversations: Optional[str] = None, - files: Optional[bool] = None, - messages: Optional[str] = None, - new_call_owner_id: Optional[str] = None, - new_channel_owner_id: Optional[str] = None, - user: Optional[str] = None, - ) -> StreamResponse[DeleteUsersResponse]: - json = DeleteUsersRequest( - user_ids=user_ids, - calls=calls, - conversations=conversations, - files=files, - messages=messages, - new_call_owner_id=new_call_owner_id, - new_channel_owner_id=new_channel_owner_id, - user=user, - ).to_dict() + def delete_users(self, user_ids: List[str], calls: Optional[str] = None, conversations: Optional[str] = None, files: Optional[bool] = None, messages: Optional[str] = None, new_call_owner_id: Optional[str] = None, new_channel_owner_id: Optional[str] = None, user: Optional[str] = None) -> StreamResponse[DeleteUsersResponse]: + json = DeleteUsersRequest(user_ids=user_ids, calls=calls, conversations=conversations, files=files, messages=messages, new_call_owner_id=new_call_owner_id, new_channel_owner_id=new_channel_owner_id, user=user).to_dict() return self.post("/api/v2/users/delete", DeleteUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.get_user_live_locations") - def get_user_live_locations( - self, user_id: Optional[str] = None - ) -> StreamResponse[SharedLocationsResponse]: + def get_user_live_locations(self, user_id: Optional[str] = None) -> StreamResponse[SharedLocationsResponse]: query_params = build_query_param(user_id=user_id) - return self.get( - "/api/v2/users/live_locations", - SharedLocationsResponse, - query_params=query_params, - ) - + return self.get("/api/v2/users/live_locations", SharedLocationsResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.common.update_live_location") - def update_live_location( - self, - message_id: str, - end_at: Optional[datetime] = None, - latitude: Optional[float] = None, - longitude: Optional[float] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[SharedLocationResponse]: + def update_live_location(self, message_id: str, end_at: Optional[datetime] = None, latitude: Optional[float] = None, longitude: Optional[float] = None, user_id: Optional[str] = None) -> StreamResponse[SharedLocationResponse]: query_params = build_query_param(user_id=user_id) - json = UpdateLiveLocationRequest( - message_id=message_id, end_at=end_at, latitude=latitude, longitude=longitude - ).to_dict() - return self.put( - "/api/v2/users/live_locations", - SharedLocationResponse, - query_params=query_params, - json=json, - ) - + json = UpdateLiveLocationRequest(message_id=message_id, end_at=end_at, latitude=latitude, longitude=longitude).to_dict() + return self.put("/api/v2/users/live_locations", SharedLocationResponse, query_params=query_params, json=json) + @telemetry.operation_name("getstream.api.common.reactivate_users") - def reactivate_users( - self, - user_ids: List[str], - created_by_id: Optional[str] = None, - restore_channels: Optional[bool] = None, - restore_messages: Optional[bool] = None, - ) -> StreamResponse[ReactivateUsersResponse]: - json = ReactivateUsersRequest( - user_ids=user_ids, - created_by_id=created_by_id, - restore_channels=restore_channels, - restore_messages=restore_messages, - ).to_dict() + def reactivate_users(self, user_ids: List[str], created_by_id: Optional[str] = None, restore_channels: Optional[bool] = None, restore_messages: Optional[bool] = None) -> StreamResponse[ReactivateUsersResponse]: + json = ReactivateUsersRequest(user_ids=user_ids, created_by_id=created_by_id, restore_channels=restore_channels, restore_messages=restore_messages).to_dict() return self.post("/api/v2/users/reactivate", ReactivateUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.restore_users") def restore_users(self, user_ids: List[str]) -> StreamResponse[Response]: json = RestoreUsersRequest(user_ids=user_ids).to_dict() return self.post("/api/v2/users/restore", Response, json=json) - + @telemetry.operation_name("getstream.api.common.unblock_users") - def unblock_users( - self, - blocked_user_id: str, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UnblockUsersResponse]: - json = UnblockUsersRequest( - blocked_user_id=blocked_user_id, user_id=user_id, user=user - ).to_dict() + def unblock_users(self, blocked_user_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[UnblockUsersResponse]: + json = UnblockUsersRequest(blocked_user_id=blocked_user_id, user_id=user_id, user=user).to_dict() return self.post("/api/v2/users/unblock", UnblockUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.deactivate_user") - def deactivate_user( - self, - user_id: str, - created_by_id: Optional[str] = None, - mark_messages_deleted: Optional[bool] = None, - ) -> StreamResponse[DeactivateUserResponse]: + def deactivate_user(self, user_id: str, created_by_id: Optional[str] = None, mark_messages_deleted: Optional[bool] = None) -> StreamResponse[DeactivateUserResponse]: path_params = { - "user_id": user_id, + "user_id": user_id, } - json = DeactivateUserRequest( - created_by_id=created_by_id, mark_messages_deleted=mark_messages_deleted - ).to_dict() - return self.post( - "/api/v2/users/{user_id}/deactivate", - DeactivateUserResponse, - path_params=path_params, - json=json, - ) - + json = DeactivateUserRequest(created_by_id=created_by_id, mark_messages_deleted=mark_messages_deleted).to_dict() + return self.post("/api/v2/users/{user_id}/deactivate", DeactivateUserResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.common.export_user") def export_user(self, user_id: str) -> StreamResponse[ExportUserResponse]: path_params = { - "user_id": user_id, + "user_id": user_id, } - return self.get( - "/api/v2/users/{user_id}/export", - ExportUserResponse, - path_params=path_params, - ) - + return self.get("/api/v2/users/{user_id}/export", ExportUserResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.common.reactivate_user") - def reactivate_user( - self, - user_id: str, - created_by_id: Optional[str] = None, - name: Optional[str] = None, - restore_messages: Optional[bool] = None, - ) -> StreamResponse[ReactivateUserResponse]: + def reactivate_user(self, user_id: str, created_by_id: Optional[str] = None, name: Optional[str] = None, restore_messages: Optional[bool] = None) -> StreamResponse[ReactivateUserResponse]: path_params = { - "user_id": user_id, + "user_id": user_id, } - json = ReactivateUserRequest( - created_by_id=created_by_id, name=name, restore_messages=restore_messages - ).to_dict() - return self.post( - "/api/v2/users/{user_id}/reactivate", - ReactivateUserResponse, - path_params=path_params, - json=json, - ) + json = ReactivateUserRequest(created_by_id=created_by_id, name=name, restore_messages=restore_messages).to_dict() + return self.post("/api/v2/users/{user_id}/reactivate", ReactivateUserResponse, path_params=path_params, json=json) + \ No newline at end of file diff --git a/getstream/feeds/client.py b/getstream/feeds/client.py index 430edcf2..d70d6f3a 100644 --- a/getstream/feeds/client.py +++ b/getstream/feeds/client.py @@ -1,6 +1,6 @@ -from getstream.feeds.rest_client import FeedsRestClient + from getstream.feeds.feeds import Feed -from typing import Optional, Dict +from getstream.feeds.rest_client import FeedsRestClient class FeedsClient(FeedsRestClient): @@ -15,7 +15,7 @@ def __init__(self, api_key: str, base_url, token, timeout, stream, user_agent=No self.stream = stream def feed( - self, feed_type: str, feed_id: str, custom_data: Optional[Dict] = None + self, feed_type: str, feed_id: str, custom_data: dict | None = None ) -> Feed: """ Create a Feed instance for the given feed type and ID. diff --git a/getstream/feeds/feeds.py b/getstream/feeds/feeds.py index 3ad3d7b5..f9d0a64e 100644 --- a/getstream/feeds/feeds.py +++ b/getstream/feeds/feeds.py @@ -4,6 +4,7 @@ class Feed: + def __init__(self, client, feed_group: str, feed_id: str, custom_data: Dict = None): self.id = feed_id self.feed_group = feed_group @@ -11,261 +12,78 @@ def __init__(self, client, feed_group: str, feed_id: str, custom_data: Dict = No self.custom_data = custom_data or {} def _sync_from_response(self, data): - if hasattr(data, "feed") and isinstance(data.feed, FeedResponse): + if hasattr(data, 'feed') and isinstance(data.feed, FeedResponse): self.custom_data = data.feed.custom - def delete( - self, - hard_delete: Optional[bool] = None, - purge_user_activities: Optional[bool] = None, - ) -> StreamResponse[DeleteFeedResponse]: - response = self.client.delete_feed( - feed_group_id=self.feed_group, - feed_id=self.id, - hard_delete=hard_delete, - purge_user_activities=purge_user_activities, - ) + + def delete(self, hard_delete: Optional[bool] = None, purge_user_activities: Optional[bool] = None) -> StreamResponse[DeleteFeedResponse]: + response = self.client.delete_feed(feed_group_id=self.feed_group, feed_id=self.id, hard_delete=hard_delete, purge_user_activities=purge_user_activities) self._sync_from_response(response.data) return response - def get_or_create( - self, - language: Optional[str] = None, - translate_text: Optional[bool] = None, - id_around: Optional[str] = None, - limit: Optional[int] = None, - next: Optional[str] = None, - overwrite_interest_weights: Optional[bool] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - view: Optional[str] = None, - watch: Optional[bool] = None, - data: Optional[FeedInput] = None, - enrichment_options: Optional[EnrichmentOptions] = None, - external_ranking: Optional[Dict[str, object]] = None, - filter: Optional[Dict[str, object]] = None, - followers_pagination: Optional[PagerRequest] = None, - following_pagination: Optional[PagerRequest] = None, - friend_reactions_options: Optional[FriendReactionsOptions] = None, - interest_weights: Optional[Dict[str, float]] = None, - member_pagination: Optional[PagerRequest] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[GetOrCreateFeedResponse]: - response = self.client.get_or_create_feed( - feed_group_id=self.feed_group, - feed_id=self.id, - language=language, - translate_text=translate_text, - id_around=id_around, - limit=limit, - next=next, - overwrite_interest_weights=overwrite_interest_weights, - prev=prev, - user_id=user_id, - view=view, - watch=watch, - data=data, - enrichment_options=enrichment_options, - external_ranking=external_ranking, - filter=filter, - followers_pagination=followers_pagination, - following_pagination=following_pagination, - friend_reactions_options=friend_reactions_options, - interest_weights=interest_weights, - member_pagination=member_pagination, - user=user, - ) + def get_or_create(self, language: Optional[str] = None, translate_text: Optional[bool] = None, id_around: Optional[str] = None, limit: Optional[int] = None, next: Optional[str] = None, overwrite_interest_weights: Optional[bool] = None, prev: Optional[str] = None, user_id: Optional[str] = None, view: Optional[str] = None, watch: Optional[bool] = None, data: Optional[FeedInput] = None, enrichment_options: Optional[EnrichmentOptions] = None, external_ranking: Optional[Dict[str, object]] = None, filter: Optional[Dict[str, object]] = None, followers_pagination: Optional[PagerRequest] = None, following_pagination: Optional[PagerRequest] = None, friend_reactions_options: Optional[FriendReactionsOptions] = None, interest_weights: Optional[Dict[str, float]] = None, member_pagination: Optional[PagerRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[GetOrCreateFeedResponse]: + response = self.client.get_or_create_feed(feed_group_id=self.feed_group, feed_id=self.id, language=language, translate_text=translate_text, id_around=id_around, limit=limit, next=next, overwrite_interest_weights=overwrite_interest_weights, prev=prev, user_id=user_id, view=view, watch=watch, data=data, enrichment_options=enrichment_options, external_ranking=external_ranking, filter=filter, followers_pagination=followers_pagination, following_pagination=following_pagination, friend_reactions_options=friend_reactions_options, interest_weights=interest_weights, member_pagination=member_pagination, user=user) self._sync_from_response(response.data) return response - def update( - self, - clear_location: Optional[bool] = None, - created_by_id: Optional[str] = None, - description: Optional[str] = None, - enrich_own_fields: Optional[bool] = None, - name: Optional[str] = None, - filter_tags: Optional[List[str]] = None, - custom: Optional[Dict[str, object]] = None, - location: Optional[Location] = None, - ) -> StreamResponse[UpdateFeedResponse]: - response = self.client.update_feed( - feed_group_id=self.feed_group, - feed_id=self.id, - clear_location=clear_location, - created_by_id=created_by_id, - description=description, - enrich_own_fields=enrich_own_fields, - name=name, - filter_tags=filter_tags, - custom=custom, - location=location, - ) + def update(self, clear_location: Optional[bool] = None, created_by_id: Optional[str] = None, description: Optional[str] = None, enrich_own_fields: Optional[bool] = None, name: Optional[str] = None, filter_tags: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, location: Optional[Location] = None) -> StreamResponse[UpdateFeedResponse]: + response = self.client.update_feed(feed_group_id=self.feed_group, feed_id=self.id, clear_location=clear_location, created_by_id=created_by_id, description=description, enrich_own_fields=enrich_own_fields, name=name, filter_tags=filter_tags, custom=custom, location=location) self._sync_from_response(response.data) return response - def mark_activity( - self, - mark_all_read: Optional[bool] = None, - mark_all_seen: Optional[bool] = None, - user_id: Optional[str] = None, - mark_read: Optional[List[str]] = None, - mark_seen: Optional[List[str]] = None, - mark_watched: Optional[List[str]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[Response]: - response = self.client.mark_activity( - feed_group_id=self.feed_group, - feed_id=self.id, - mark_all_read=mark_all_read, - mark_all_seen=mark_all_seen, - user_id=user_id, - mark_read=mark_read, - mark_seen=mark_seen, - mark_watched=mark_watched, - user=user, - ) + def mark_activity(self, mark_all_read: Optional[bool] = None, mark_all_seen: Optional[bool] = None, user_id: Optional[str] = None, mark_read: Optional[List[str]] = None, mark_seen: Optional[List[str]] = None, mark_watched: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[Response]: + response = self.client.mark_activity(feed_group_id=self.feed_group, feed_id=self.id, mark_all_read=mark_all_read, mark_all_seen=mark_all_seen, user_id=user_id, mark_read=mark_read, mark_seen=mark_seen, mark_watched=mark_watched, user=user) self._sync_from_response(response.data) return response - def unpin_activity( - self, - activity_id: str, - enrich_own_fields: Optional[bool] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[UnpinActivityResponse]: - response = self.client.unpin_activity( - feed_group_id=self.feed_group, - feed_id=self.id, - activity_id=activity_id, - enrich_own_fields=enrich_own_fields, - user_id=user_id, - ) + def unpin_activity(self, activity_id: str, enrich_own_fields: Optional[bool] = None, user_id: Optional[str] = None) -> StreamResponse[UnpinActivityResponse]: + response = self.client.unpin_activity(feed_group_id=self.feed_group, feed_id=self.id, activity_id=activity_id, enrich_own_fields=enrich_own_fields, user_id=user_id) self._sync_from_response(response.data) return response - def pin_activity( - self, - activity_id: str, - enrich_own_fields: Optional[bool] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[PinActivityResponse]: - response = self.client.pin_activity( - feed_group_id=self.feed_group, - feed_id=self.id, - activity_id=activity_id, - enrich_own_fields=enrich_own_fields, - user_id=user_id, - user=user, - ) + def pin_activity(self, activity_id: str, enrich_own_fields: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[PinActivityResponse]: + response = self.client.pin_activity(feed_group_id=self.feed_group, feed_id=self.id, activity_id=activity_id, enrich_own_fields=enrich_own_fields, user_id=user_id, user=user) self._sync_from_response(response.data) return response - def change_feed_visibility( - self, visibility: str, pending_follows_action: Optional[str] = None - ) -> StreamResponse[ChangeFeedVisibilityResponse]: - response = self.client.change_feed_visibility( - feed_group_id=self.feed_group, - feed_id=self.id, - visibility=visibility, - pending_follows_action=pending_follows_action, - ) + def change_feed_visibility(self, visibility: str, pending_follows_action: Optional[str] = None) -> StreamResponse[ChangeFeedVisibilityResponse]: + response = self.client.change_feed_visibility(feed_group_id=self.feed_group, feed_id=self.id, visibility=visibility, pending_follows_action=pending_follows_action) self._sync_from_response(response.data) return response def get_feed_counts(self) -> StreamResponse[GetFeedCountsResponse]: - response = self.client.get_feed_counts( - feed_group_id=self.feed_group, feed_id=self.id - ) + response = self.client.get_feed_counts(feed_group_id=self.feed_group, feed_id=self.id) self._sync_from_response(response.data) return response - def update_feed_members( - self, - operation: str, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - members: Optional[List[FeedMemberRequest]] = None, - ) -> StreamResponse[UpdateFeedMembersResponse]: - response = self.client.update_feed_members( - feed_group_id=self.feed_group, - feed_id=self.id, - operation=operation, - limit=limit, - next=next, - prev=prev, - members=members, - ) + def update_feed_members(self, operation: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, members: Optional[List[FeedMemberRequest]] = None) -> StreamResponse[UpdateFeedMembersResponse]: + response = self.client.update_feed_members(feed_group_id=self.feed_group, feed_id=self.id, operation=operation, limit=limit, next=next, prev=prev, members=members) self._sync_from_response(response.data) return response - def accept_feed_member_invite( - self, user_id: Optional[str] = None, user: Optional[UserRequest] = None - ) -> StreamResponse[AcceptFeedMemberInviteResponse]: - response = self.client.accept_feed_member_invite( - feed_group_id=self.feed_group, feed_id=self.id, user_id=user_id, user=user - ) + def accept_feed_member_invite(self, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[AcceptFeedMemberInviteResponse]: + response = self.client.accept_feed_member_invite(feed_group_id=self.feed_group, feed_id=self.id, user_id=user_id, user=user) self._sync_from_response(response.data) return response - def query_feed_members( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryFeedMembersResponse]: - response = self.client.query_feed_members( - feed_group_id=self.feed_group, - feed_id=self.id, - limit=limit, - next=next, - prev=prev, - sort=sort, - filter=filter, - ) + def query_feed_members(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryFeedMembersResponse]: + response = self.client.query_feed_members(feed_group_id=self.feed_group, feed_id=self.id, limit=limit, next=next, prev=prev, sort=sort, filter=filter) self._sync_from_response(response.data) return response - def reject_feed_member_invite( - self, user_id: Optional[str] = None, user: Optional[UserRequest] = None - ) -> StreamResponse[RejectFeedMemberInviteResponse]: - response = self.client.reject_feed_member_invite( - feed_group_id=self.feed_group, feed_id=self.id, user_id=user_id, user=user - ) + def reject_feed_member_invite(self, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[RejectFeedMemberInviteResponse]: + response = self.client.reject_feed_member_invite(feed_group_id=self.feed_group, feed_id=self.id, user_id=user_id, user=user) self._sync_from_response(response.data) return response - def query_pinned_activities( - self, - language: Optional[str] = None, - translate_text: Optional[bool] = None, - enrich_own_fields: Optional[bool] = None, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryPinnedActivitiesResponse]: - response = self.client.query_pinned_activities( - feed_group_id=self.feed_group, - feed_id=self.id, - language=language, - translate_text=translate_text, - enrich_own_fields=enrich_own_fields, - limit=limit, - next=next, - prev=prev, - sort=sort, - filter=filter, - ) + def query_pinned_activities(self, language: Optional[str] = None, translate_text: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryPinnedActivitiesResponse]: + response = self.client.query_pinned_activities(feed_group_id=self.feed_group, feed_id=self.id, language=language, translate_text=translate_text, enrich_own_fields=enrich_own_fields, limit=limit, next=next, prev=prev, sort=sort, filter=filter) self._sync_from_response(response.data) return response + + def get_feed_identifier(self): return self.feed_group + ":" + self.id - create = get_or_create + create = get_or_create \ No newline at end of file diff --git a/getstream/feeds/rest_client.py b/getstream/feeds/rest_client.py index 33469a2e..6fe1e410 100644 --- a/getstream/feeds/rest_client.py +++ b/getstream/feeds/rest_client.py @@ -1,3 +1,4 @@ + # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import BaseClient from getstream.common import telemetry @@ -7,14 +8,8 @@ class FeedsRestClient(BaseClient): - def __init__( - self, - api_key: str, - base_url: str, - timeout: float, - token: str, - user_agent: str | None = None, - ): + + def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): """ Initializes FeedsClient with BaseClient instance :param api_key: A string representing the client's API key @@ -31,2405 +26,721 @@ def __init__( user_agent=user_agent, ) + @telemetry.operation_name("getstream.api.feeds.add_activity") - def add_activity( - self, - type: str, - feeds: List[str], - copy_custom_to_notification: Optional[bool] = None, - create_notification_activity: Optional[bool] = None, - create_users: Optional[bool] = None, - enrich_own_fields: Optional[bool] = None, - expires_at: Optional[str] = None, - force_moderation: Optional[bool] = None, - id: Optional[str] = None, - parent_id: Optional[str] = None, - poll_id: Optional[str] = None, - restrict_replies: Optional[str] = None, - skip_enrich_url: Optional[bool] = None, - skip_push: Optional[bool] = None, - text: Optional[str] = None, - user_id: Optional[str] = None, - visibility: Optional[str] = None, - visibility_tag: Optional[str] = None, - attachments: Optional[List[Attachment]] = None, - collection_refs: Optional[List[str]] = None, - collections: Optional[List[CollectionRequest]] = None, - filter_tags: Optional[List[str]] = None, - interest_tags: Optional[List[str]] = None, - mentioned_user_ids: Optional[List[str]] = None, - custom: Optional[Dict[str, object]] = None, - location: Optional[Location] = None, - search_data: Optional[Dict[str, object]] = None, - ) -> StreamResponse[AddActivityResponse]: - json = AddActivityRequest( - type=type, - feeds=feeds, - copy_custom_to_notification=copy_custom_to_notification, - create_notification_activity=create_notification_activity, - create_users=create_users, - enrich_own_fields=enrich_own_fields, - expires_at=expires_at, - force_moderation=force_moderation, - id=id, - parent_id=parent_id, - poll_id=poll_id, - restrict_replies=restrict_replies, - skip_enrich_url=skip_enrich_url, - skip_push=skip_push, - text=text, - user_id=user_id, - visibility=visibility, - visibility_tag=visibility_tag, - attachments=attachments, - collection_refs=collection_refs, - collections=collections, - filter_tags=filter_tags, - interest_tags=interest_tags, - mentioned_user_ids=mentioned_user_ids, - custom=custom, - location=location, - search_data=search_data, - ).to_dict() + def add_activity(self, type: str, feeds: List[str], copy_custom_to_notification: Optional[bool] = None, create_notification_activity: Optional[bool] = None, create_users: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, expires_at: Optional[str] = None, force_moderation: Optional[bool] = None, id: Optional[str] = None, parent_id: Optional[str] = None, poll_id: Optional[str] = None, restrict_replies: Optional[str] = None, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, text: Optional[str] = None, user_id: Optional[str] = None, visibility: Optional[str] = None, visibility_tag: Optional[str] = None, attachments: Optional[List[Attachment]] = None, collection_refs: Optional[List[str]] = None, collections: Optional[List[CollectionRequest]] = None, filter_tags: Optional[List[str]] = None, interest_tags: Optional[List[str]] = None, mentioned_user_ids: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, location: Optional[Location] = None, search_data: Optional[Dict[str, object]] = None) -> StreamResponse[AddActivityResponse]: + json = AddActivityRequest(type=type, feeds=feeds, copy_custom_to_notification=copy_custom_to_notification, create_notification_activity=create_notification_activity, create_users=create_users, enrich_own_fields=enrich_own_fields, expires_at=expires_at, force_moderation=force_moderation, id=id, parent_id=parent_id, poll_id=poll_id, restrict_replies=restrict_replies, skip_enrich_url=skip_enrich_url, skip_push=skip_push, text=text, user_id=user_id, visibility=visibility, visibility_tag=visibility_tag, attachments=attachments, collection_refs=collection_refs, collections=collections, filter_tags=filter_tags, interest_tags=interest_tags, mentioned_user_ids=mentioned_user_ids, custom=custom, location=location, search_data=search_data).to_dict() return self.post("/api/v2/feeds/activities", AddActivityResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.upsert_activities") - def upsert_activities( - self, - activities: List[ActivityRequest], - create_users: Optional[bool] = None, - enrich_own_fields: Optional[bool] = None, - force_moderation: Optional[bool] = None, - ) -> StreamResponse[UpsertActivitiesResponse]: - json = UpsertActivitiesRequest( - activities=activities, - create_users=create_users, - enrich_own_fields=enrich_own_fields, - force_moderation=force_moderation, - ).to_dict() - return self.post( - "/api/v2/feeds/activities/batch", UpsertActivitiesResponse, json=json - ) - + def upsert_activities(self, activities: List[ActivityRequest], create_users: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, force_moderation: Optional[bool] = None) -> StreamResponse[UpsertActivitiesResponse]: + json = UpsertActivitiesRequest(activities=activities, create_users=create_users, enrich_own_fields=enrich_own_fields, force_moderation=force_moderation).to_dict() + return self.post("/api/v2/feeds/activities/batch", UpsertActivitiesResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.update_activities_partial_batch") - def update_activities_partial_batch( - self, - changes: List[UpdateActivityPartialChangeRequest], - force_moderation: Optional[bool] = None, - ) -> StreamResponse[UpdateActivitiesPartialBatchResponse]: - json = UpdateActivitiesPartialBatchRequest( - changes=changes, force_moderation=force_moderation - ).to_dict() - return self.patch( - "/api/v2/feeds/activities/batch/partial", - UpdateActivitiesPartialBatchResponse, - json=json, - ) - + def update_activities_partial_batch(self, changes: List[UpdateActivityPartialChangeRequest], force_moderation: Optional[bool] = None) -> StreamResponse[UpdateActivitiesPartialBatchResponse]: + json = UpdateActivitiesPartialBatchRequest(changes=changes, force_moderation=force_moderation).to_dict() + return self.patch("/api/v2/feeds/activities/batch/partial", UpdateActivitiesPartialBatchResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.delete_activities") - def delete_activities( - self, - ids: List[str], - delete_notification_activity: Optional[bool] = None, - hard_delete: Optional[bool] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[DeleteActivitiesResponse]: - json = DeleteActivitiesRequest( - ids=ids, - delete_notification_activity=delete_notification_activity, - hard_delete=hard_delete, - user_id=user_id, - user=user, - ).to_dict() - return self.post( - "/api/v2/feeds/activities/delete", DeleteActivitiesResponse, json=json - ) - + def delete_activities(self, ids: List[str], delete_notification_activity: Optional[bool] = None, hard_delete: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[DeleteActivitiesResponse]: + json = DeleteActivitiesRequest(ids=ids, delete_notification_activity=delete_notification_activity, hard_delete=hard_delete, user_id=user_id, user=user).to_dict() + return self.post("/api/v2/feeds/activities/delete", DeleteActivitiesResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.track_activity_metrics") - def track_activity_metrics( - self, - events: List[TrackActivityMetricsEvent], - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[TrackActivityMetricsResponse]: - json = TrackActivityMetricsRequest( - events=events, user_id=user_id, user=user - ).to_dict() - return self.post( - "/api/v2/feeds/activities/metrics/track", - TrackActivityMetricsResponse, - json=json, - ) - + def track_activity_metrics(self, events: List[TrackActivityMetricsEvent], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[TrackActivityMetricsResponse]: + json = TrackActivityMetricsRequest(events=events, user_id=user_id, user=user).to_dict() + return self.post("/api/v2/feeds/activities/metrics/track", TrackActivityMetricsResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.query_activities") - def query_activities( - self, - language: Optional[str] = None, - translate_text: Optional[bool] = None, - enrich_own_fields: Optional[bool] = None, - include_expired_activities: Optional[bool] = None, - include_private_activities: Optional[bool] = None, - include_soft_deleted_activities: Optional[bool] = None, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryActivitiesResponse]: - query_params = build_query_param( - language=language, translate_text=translate_text - ) - json = QueryActivitiesRequest( - enrich_own_fields=enrich_own_fields, - include_expired_activities=include_expired_activities, - include_private_activities=include_private_activities, - include_soft_deleted_activities=include_soft_deleted_activities, - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return self.post( - "/api/v2/feeds/activities/query", - QueryActivitiesResponse, - query_params=query_params, - json=json, - ) - + def query_activities(self, language: Optional[str] = None, translate_text: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, include_expired_activities: Optional[bool] = None, include_private_activities: Optional[bool] = None, include_soft_deleted_activities: Optional[bool] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryActivitiesResponse]: + query_params = build_query_param(language=language, translate_text=translate_text) + json = QueryActivitiesRequest(enrich_own_fields=enrich_own_fields, include_expired_activities=include_expired_activities, include_private_activities=include_private_activities, include_soft_deleted_activities=include_soft_deleted_activities, limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return self.post("/api/v2/feeds/activities/query", QueryActivitiesResponse, query_params=query_params, json=json) + @telemetry.operation_name("getstream.api.feeds.batch_query_activity_reactions") - def batch_query_activity_reactions( - self, - activity_ids: List[str], - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[BatchQueryActivityReactionsResponse]: - json = BatchQueryActivityReactionsRequest( - activity_ids=activity_ids, - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return self.post( - "/api/v2/feeds/activities/reactions/query", - BatchQueryActivityReactionsResponse, - json=json, - ) - + def batch_query_activity_reactions(self, activity_ids: List[str], limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[BatchQueryActivityReactionsResponse]: + json = BatchQueryActivityReactionsRequest(activity_ids=activity_ids, limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return self.post("/api/v2/feeds/activities/reactions/query", BatchQueryActivityReactionsResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.delete_bookmark") - def delete_bookmark( - self, - activity_id: str, - folder_id: Optional[str] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[DeleteBookmarkResponse]: + def delete_bookmark(self, activity_id: str, folder_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[DeleteBookmarkResponse]: query_params = build_query_param(folder_id=folder_id, user_id=user_id) path_params = { - "activity_id": activity_id, + "activity_id": activity_id, } - return self.delete( - "/api/v2/feeds/activities/{activity_id}/bookmarks", - DeleteBookmarkResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/feeds/activities/{activity_id}/bookmarks", DeleteBookmarkResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.update_bookmark") - def update_bookmark( - self, - activity_id: str, - folder_id: Optional[str] = None, - new_folder_id: Optional[str] = None, - user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - new_folder: Optional[AddFolderRequest] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateBookmarkResponse]: + def update_bookmark(self, activity_id: str, folder_id: Optional[str] = None, new_folder_id: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, new_folder: Optional[AddFolderRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateBookmarkResponse]: path_params = { - "activity_id": activity_id, + "activity_id": activity_id, } - json = UpdateBookmarkRequest( - folder_id=folder_id, - new_folder_id=new_folder_id, - user_id=user_id, - custom=custom, - new_folder=new_folder, - user=user, - ).to_dict() - return self.patch( - "/api/v2/feeds/activities/{activity_id}/bookmarks", - UpdateBookmarkResponse, - path_params=path_params, - json=json, - ) - + json = UpdateBookmarkRequest(folder_id=folder_id, new_folder_id=new_folder_id, user_id=user_id, custom=custom, new_folder=new_folder, user=user).to_dict() + return self.patch("/api/v2/feeds/activities/{activity_id}/bookmarks", UpdateBookmarkResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.add_bookmark") - def add_bookmark( - self, - activity_id: str, - folder_id: Optional[str] = None, - user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - new_folder: Optional[AddFolderRequest] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[AddBookmarkResponse]: + def add_bookmark(self, activity_id: str, folder_id: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, new_folder: Optional[AddFolderRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[AddBookmarkResponse]: path_params = { - "activity_id": activity_id, + "activity_id": activity_id, } - json = AddBookmarkRequest( - folder_id=folder_id, - user_id=user_id, - custom=custom, - new_folder=new_folder, - user=user, - ).to_dict() - return self.post( - "/api/v2/feeds/activities/{activity_id}/bookmarks", - AddBookmarkResponse, - path_params=path_params, - json=json, - ) - + json = AddBookmarkRequest(folder_id=folder_id, user_id=user_id, custom=custom, new_folder=new_folder, user=user).to_dict() + return self.post("/api/v2/feeds/activities/{activity_id}/bookmarks", AddBookmarkResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.activity_feedback") - def activity_feedback( - self, - activity_id: str, - hide: Optional[bool] = None, - show_less: Optional[bool] = None, - show_more: Optional[bool] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[ActivityFeedbackResponse]: + def activity_feedback(self, activity_id: str, hide: Optional[bool] = None, show_less: Optional[bool] = None, show_more: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[ActivityFeedbackResponse]: path_params = { - "activity_id": activity_id, + "activity_id": activity_id, } - json = ActivityFeedbackRequest( - hide=hide, - show_less=show_less, - show_more=show_more, - user_id=user_id, - user=user, - ).to_dict() - return self.post( - "/api/v2/feeds/activities/{activity_id}/feedback", - ActivityFeedbackResponse, - path_params=path_params, - json=json, - ) - + json = ActivityFeedbackRequest(hide=hide, show_less=show_less, show_more=show_more, user_id=user_id, user=user).to_dict() + return self.post("/api/v2/feeds/activities/{activity_id}/feedback", ActivityFeedbackResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.cast_poll_vote") - def cast_poll_vote( - self, - activity_id: str, - poll_id: str, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - vote: Optional[VoteData] = None, - ) -> StreamResponse[PollVoteResponse]: + def cast_poll_vote(self, activity_id: str, poll_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None, vote: Optional[VoteData] = None) -> StreamResponse[PollVoteResponse]: path_params = { - "activity_id": activity_id, - "poll_id": poll_id, + "activity_id": activity_id, "poll_id": poll_id, } json = CastPollVoteRequest(user_id=user_id, user=user, vote=vote).to_dict() - return self.post( - "/api/v2/feeds/activities/{activity_id}/polls/{poll_id}/vote", - PollVoteResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/feeds/activities/{activity_id}/polls/{poll_id}/vote", PollVoteResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.delete_poll_vote") - def delete_poll_vote( - self, - activity_id: str, - poll_id: str, - vote_id: str, - user_id: Optional[str] = None, - ) -> StreamResponse[PollVoteResponse]: + def delete_poll_vote(self, activity_id: str, poll_id: str, vote_id: str, user_id: Optional[str] = None) -> StreamResponse[PollVoteResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "activity_id": activity_id, - "poll_id": poll_id, - "vote_id": vote_id, + "activity_id": activity_id, "poll_id": poll_id, "vote_id": vote_id, } - return self.delete( - "/api/v2/feeds/activities/{activity_id}/polls/{poll_id}/vote/{vote_id}", - PollVoteResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/feeds/activities/{activity_id}/polls/{poll_id}/vote/{vote_id}", PollVoteResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.add_activity_reaction") - def add_activity_reaction( - self, - activity_id: str, - type: str, - copy_custom_to_notification: Optional[bool] = None, - create_notification_activity: Optional[bool] = None, - create_users: Optional[bool] = None, - enforce_unique: Optional[bool] = None, - skip_push: Optional[bool] = None, - user_id: Optional[str] = None, - target_feeds: Optional[List[str]] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[AddReactionResponse]: + def add_activity_reaction(self, activity_id: str, type: str, copy_custom_to_notification: Optional[bool] = None, create_notification_activity: Optional[bool] = None, create_users: Optional[bool] = None, enforce_unique: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, target_feeds: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[AddReactionResponse]: path_params = { - "activity_id": activity_id, + "activity_id": activity_id, } - json = AddReactionRequest( - type=type, - copy_custom_to_notification=copy_custom_to_notification, - create_notification_activity=create_notification_activity, - create_users=create_users, - enforce_unique=enforce_unique, - skip_push=skip_push, - user_id=user_id, - target_feeds=target_feeds, - custom=custom, - user=user, - ).to_dict() - return self.post( - "/api/v2/feeds/activities/{activity_id}/reactions", - AddReactionResponse, - path_params=path_params, - json=json, - ) - + json = AddReactionRequest(type=type, copy_custom_to_notification=copy_custom_to_notification, create_notification_activity=create_notification_activity, create_users=create_users, enforce_unique=enforce_unique, skip_push=skip_push, user_id=user_id, target_feeds=target_feeds, custom=custom, user=user).to_dict() + return self.post("/api/v2/feeds/activities/{activity_id}/reactions", AddReactionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.query_activity_reactions") - def query_activity_reactions( - self, - activity_id: str, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryActivityReactionsResponse]: + def query_activity_reactions(self, activity_id: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryActivityReactionsResponse]: path_params = { - "activity_id": activity_id, + "activity_id": activity_id, } - json = QueryActivityReactionsRequest( - limit=limit, next=next, prev=prev, sort=sort, filter=filter - ).to_dict() - return self.post( - "/api/v2/feeds/activities/{activity_id}/reactions/query", - QueryActivityReactionsResponse, - path_params=path_params, - json=json, - ) - + json = QueryActivityReactionsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() + return self.post("/api/v2/feeds/activities/{activity_id}/reactions/query", QueryActivityReactionsResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.delete_activity_reaction") - def delete_activity_reaction( - self, - activity_id: str, - type: str, - delete_notification_activity: Optional[bool] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[DeleteActivityReactionResponse]: - query_params = build_query_param( - delete_notification_activity=delete_notification_activity, user_id=user_id - ) + def delete_activity_reaction(self, activity_id: str, type: str, delete_notification_activity: Optional[bool] = None, user_id: Optional[str] = None) -> StreamResponse[DeleteActivityReactionResponse]: + query_params = build_query_param(delete_notification_activity=delete_notification_activity, user_id=user_id) path_params = { - "activity_id": activity_id, - "type": type, + "activity_id": activity_id, "type": type, } - return self.delete( - "/api/v2/feeds/activities/{activity_id}/reactions/{type}", - DeleteActivityReactionResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/feeds/activities/{activity_id}/reactions/{type}", DeleteActivityReactionResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.query_activity_shares") - def query_activity_shares( - self, - activity_id: str, - limit: Optional[int] = None, - prev: Optional[str] = None, - next: Optional[str] = None, - ) -> StreamResponse[QueryActivitySharesResponse]: + def query_activity_shares(self, activity_id: str, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None) -> StreamResponse[QueryActivitySharesResponse]: query_params = build_query_param(limit=limit, prev=prev, next=next) path_params = { - "activity_id": activity_id, + "activity_id": activity_id, } - return self.get( - "/api/v2/feeds/activities/{activity_id}/shares", - QueryActivitySharesResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/feeds/activities/{activity_id}/shares", QueryActivitySharesResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.delete_activity") - def delete_activity( - self, - id: str, - hard_delete: Optional[bool] = None, - delete_notification_activity: Optional[bool] = None, - ) -> StreamResponse[DeleteActivityResponse]: - query_params = build_query_param( - hard_delete=hard_delete, - delete_notification_activity=delete_notification_activity, - ) + def delete_activity(self, id: str, hard_delete: Optional[bool] = None, delete_notification_activity: Optional[bool] = None) -> StreamResponse[DeleteActivityResponse]: + query_params = build_query_param(hard_delete=hard_delete, delete_notification_activity=delete_notification_activity) path_params = { - "id": id, + "id": id, } - return self.delete( - "/api/v2/feeds/activities/{id}", - DeleteActivityResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/feeds/activities/{id}", DeleteActivityResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.get_activity") - def get_activity( - self, - id: str, - comment_sort: Optional[str] = None, - comment_limit: Optional[int] = None, - user_id: Optional[str] = None, - language: Optional[str] = None, - translate_text: Optional[bool] = None, - ) -> StreamResponse[GetActivityResponse]: - query_params = build_query_param( - comment_sort=comment_sort, - comment_limit=comment_limit, - user_id=user_id, - language=language, - translate_text=translate_text, - ) + def get_activity(self, id: str, comment_sort: Optional[str] = None, comment_limit: Optional[int] = None, user_id: Optional[str] = None, language: Optional[str] = None, translate_text: Optional[bool] = None) -> StreamResponse[GetActivityResponse]: + query_params = build_query_param(comment_sort=comment_sort, comment_limit=comment_limit, user_id=user_id, language=language, translate_text=translate_text) path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/feeds/activities/{id}", - GetActivityResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/feeds/activities/{id}", GetActivityResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.update_activity_partial") - def update_activity_partial( - self, - id: str, - copy_custom_to_notification: Optional[bool] = None, - enrich_own_fields: Optional[bool] = None, - force_moderation: Optional[bool] = None, - handle_mention_notifications: Optional[bool] = None, - run_activity_processors: Optional[bool] = None, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateActivityPartialResponse]: + def update_activity_partial(self, id: str, copy_custom_to_notification: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, force_moderation: Optional[bool] = None, handle_mention_notifications: Optional[bool] = None, run_activity_processors: Optional[bool] = None, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateActivityPartialResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateActivityPartialRequest( - copy_custom_to_notification=copy_custom_to_notification, - enrich_own_fields=enrich_own_fields, - force_moderation=force_moderation, - handle_mention_notifications=handle_mention_notifications, - run_activity_processors=run_activity_processors, - user_id=user_id, - unset=unset, - set=set, - user=user, - ).to_dict() - return self.patch( - "/api/v2/feeds/activities/{id}", - UpdateActivityPartialResponse, - path_params=path_params, - json=json, - ) - + json = UpdateActivityPartialRequest(copy_custom_to_notification=copy_custom_to_notification, enrich_own_fields=enrich_own_fields, force_moderation=force_moderation, handle_mention_notifications=handle_mention_notifications, run_activity_processors=run_activity_processors, user_id=user_id, unset=unset, set=set, user=user).to_dict() + return self.patch("/api/v2/feeds/activities/{id}", UpdateActivityPartialResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.update_activity") - def update_activity( - self, - id: str, - copy_custom_to_notification: Optional[bool] = None, - enrich_own_fields: Optional[bool] = None, - expires_at: Optional[datetime] = None, - force_moderation: Optional[bool] = None, - handle_mention_notifications: Optional[bool] = None, - poll_id: Optional[str] = None, - restrict_replies: Optional[str] = None, - run_activity_processors: Optional[bool] = None, - skip_enrich_url: Optional[bool] = None, - text: Optional[str] = None, - user_id: Optional[str] = None, - visibility: Optional[str] = None, - visibility_tag: Optional[str] = None, - attachments: Optional[List[Attachment]] = None, - collection_refs: Optional[List[str]] = None, - feeds: Optional[List[str]] = None, - filter_tags: Optional[List[str]] = None, - interest_tags: Optional[List[str]] = None, - mentioned_user_ids: Optional[List[str]] = None, - custom: Optional[Dict[str, object]] = None, - location: Optional[Location] = None, - search_data: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateActivityResponse]: + def update_activity(self, id: str, copy_custom_to_notification: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, expires_at: Optional[datetime] = None, force_moderation: Optional[bool] = None, handle_mention_notifications: Optional[bool] = None, poll_id: Optional[str] = None, restrict_replies: Optional[str] = None, run_activity_processors: Optional[bool] = None, skip_enrich_url: Optional[bool] = None, text: Optional[str] = None, user_id: Optional[str] = None, visibility: Optional[str] = None, visibility_tag: Optional[str] = None, attachments: Optional[List[Attachment]] = None, collection_refs: Optional[List[str]] = None, feeds: Optional[List[str]] = None, filter_tags: Optional[List[str]] = None, interest_tags: Optional[List[str]] = None, mentioned_user_ids: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, location: Optional[Location] = None, search_data: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateActivityResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateActivityRequest( - copy_custom_to_notification=copy_custom_to_notification, - enrich_own_fields=enrich_own_fields, - expires_at=expires_at, - force_moderation=force_moderation, - handle_mention_notifications=handle_mention_notifications, - poll_id=poll_id, - restrict_replies=restrict_replies, - run_activity_processors=run_activity_processors, - skip_enrich_url=skip_enrich_url, - text=text, - user_id=user_id, - visibility=visibility, - visibility_tag=visibility_tag, - attachments=attachments, - collection_refs=collection_refs, - feeds=feeds, - filter_tags=filter_tags, - interest_tags=interest_tags, - mentioned_user_ids=mentioned_user_ids, - custom=custom, - location=location, - search_data=search_data, - user=user, - ).to_dict() - return self.put( - "/api/v2/feeds/activities/{id}", - UpdateActivityResponse, - path_params=path_params, - json=json, - ) - + json = UpdateActivityRequest(copy_custom_to_notification=copy_custom_to_notification, enrich_own_fields=enrich_own_fields, expires_at=expires_at, force_moderation=force_moderation, handle_mention_notifications=handle_mention_notifications, poll_id=poll_id, restrict_replies=restrict_replies, run_activity_processors=run_activity_processors, skip_enrich_url=skip_enrich_url, text=text, user_id=user_id, visibility=visibility, visibility_tag=visibility_tag, attachments=attachments, collection_refs=collection_refs, feeds=feeds, filter_tags=filter_tags, interest_tags=interest_tags, mentioned_user_ids=mentioned_user_ids, custom=custom, location=location, search_data=search_data, user=user).to_dict() + return self.put("/api/v2/feeds/activities/{id}", UpdateActivityResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.restore_activity") - def restore_activity( - self, - id: str, - enrich_own_fields: Optional[bool] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[RestoreActivityResponse]: + def restore_activity(self, id: str, enrich_own_fields: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[RestoreActivityResponse]: query_params = build_query_param(enrich_own_fields=enrich_own_fields) path_params = { - "id": id, + "id": id, } json = RestoreActivityRequest(user_id=user_id, user=user).to_dict() - return self.post( - "/api/v2/feeds/activities/{id}/restore", - RestoreActivityResponse, - query_params=query_params, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/feeds/activities/{id}/restore", RestoreActivityResponse, query_params=query_params, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.translate_activity") - def translate_activity( - self, id: str, language: str - ) -> StreamResponse[TranslateActivityResponse]: + def translate_activity(self, id: str, language: str) -> StreamResponse[TranslateActivityResponse]: path_params = { - "id": id, + "id": id, } json = TranslateActivityRequest(language=language).to_dict() - return self.post( - "/api/v2/feeds/activities/{id}/translate", - TranslateActivityResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/feeds/activities/{id}/translate", TranslateActivityResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.query_bookmark_folders") - def query_bookmark_folders( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryBookmarkFoldersResponse]: - json = QueryBookmarkFoldersRequest( - limit=limit, next=next, prev=prev, sort=sort, filter=filter - ).to_dict() - return self.post( - "/api/v2/feeds/bookmark_folders/query", - QueryBookmarkFoldersResponse, - json=json, - ) - + def query_bookmark_folders(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryBookmarkFoldersResponse]: + json = QueryBookmarkFoldersRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() + return self.post("/api/v2/feeds/bookmark_folders/query", QueryBookmarkFoldersResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.delete_bookmark_folder") - def delete_bookmark_folder( - self, folder_id: str - ) -> StreamResponse[DeleteBookmarkFolderResponse]: + def delete_bookmark_folder(self, folder_id: str) -> StreamResponse[DeleteBookmarkFolderResponse]: path_params = { - "folder_id": folder_id, + "folder_id": folder_id, } - return self.delete( - "/api/v2/feeds/bookmark_folders/{folder_id}", - DeleteBookmarkFolderResponse, - path_params=path_params, - ) - + return self.delete("/api/v2/feeds/bookmark_folders/{folder_id}", DeleteBookmarkFolderResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.update_bookmark_folder") - def update_bookmark_folder( - self, - folder_id: str, - name: Optional[str] = None, - user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateBookmarkFolderResponse]: + def update_bookmark_folder(self, folder_id: str, name: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateBookmarkFolderResponse]: path_params = { - "folder_id": folder_id, + "folder_id": folder_id, } - json = UpdateBookmarkFolderRequest( - name=name, user_id=user_id, custom=custom, user=user - ).to_dict() - return self.patch( - "/api/v2/feeds/bookmark_folders/{folder_id}", - UpdateBookmarkFolderResponse, - path_params=path_params, - json=json, - ) - + json = UpdateBookmarkFolderRequest(name=name, user_id=user_id, custom=custom, user=user).to_dict() + return self.patch("/api/v2/feeds/bookmark_folders/{folder_id}", UpdateBookmarkFolderResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.query_bookmarks") - def query_bookmarks( - self, - language: Optional[str] = None, - translate_text: Optional[bool] = None, - enrich_own_fields: Optional[bool] = None, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryBookmarksResponse]: - query_params = build_query_param( - language=language, translate_text=translate_text - ) - json = QueryBookmarksRequest( - enrich_own_fields=enrich_own_fields, - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return self.post( - "/api/v2/feeds/bookmarks/query", - QueryBookmarksResponse, - query_params=query_params, - json=json, - ) - + def query_bookmarks(self, language: Optional[str] = None, translate_text: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryBookmarksResponse]: + query_params = build_query_param(language=language, translate_text=translate_text) + json = QueryBookmarksRequest(enrich_own_fields=enrich_own_fields, limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return self.post("/api/v2/feeds/bookmarks/query", QueryBookmarksResponse, query_params=query_params, json=json) + @telemetry.operation_name("getstream.api.feeds.delete_collections") - def delete_collections( - self, collection_refs: List[str] - ) -> StreamResponse[DeleteCollectionsResponse]: + def delete_collections(self, collection_refs: List[str]) -> StreamResponse[DeleteCollectionsResponse]: query_params = build_query_param(collection_refs=collection_refs) - return self.delete( - "/api/v2/feeds/collections", - DeleteCollectionsResponse, - query_params=query_params, - ) - + return self.delete("/api/v2/feeds/collections", DeleteCollectionsResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.feeds.read_collections") - def read_collections( - self, user_id: Optional[str] = None, collection_refs: Optional[List[str]] = None - ) -> StreamResponse[ReadCollectionsResponse]: - query_params = build_query_param( - user_id=user_id, collection_refs=collection_refs - ) - return self.get( - "/api/v2/feeds/collections", - ReadCollectionsResponse, - query_params=query_params, - ) - + def read_collections(self, user_id: Optional[str] = None, collection_refs: Optional[List[str]] = None) -> StreamResponse[ReadCollectionsResponse]: + query_params = build_query_param(user_id=user_id, collection_refs=collection_refs) + return self.get("/api/v2/feeds/collections", ReadCollectionsResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.feeds.update_collections") - def update_collections( - self, - collections: List[UpdateCollectionRequest], - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateCollectionsResponse]: - json = UpdateCollectionsRequest( - collections=collections, user_id=user_id, user=user - ).to_dict() - return self.patch( - "/api/v2/feeds/collections", UpdateCollectionsResponse, json=json - ) - + def update_collections(self, collections: List[UpdateCollectionRequest], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateCollectionsResponse]: + json = UpdateCollectionsRequest(collections=collections, user_id=user_id, user=user).to_dict() + return self.patch("/api/v2/feeds/collections", UpdateCollectionsResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.create_collections") - def create_collections( - self, - collections: List[CollectionRequest], - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[CreateCollectionsResponse]: - json = CreateCollectionsRequest( - collections=collections, user_id=user_id, user=user - ).to_dict() - return self.post( - "/api/v2/feeds/collections", CreateCollectionsResponse, json=json - ) - + def create_collections(self, collections: List[CollectionRequest], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CreateCollectionsResponse]: + json = CreateCollectionsRequest(collections=collections, user_id=user_id, user=user).to_dict() + return self.post("/api/v2/feeds/collections", CreateCollectionsResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.upsert_collections") - def upsert_collections( - self, collections: List[CollectionRequest] - ) -> StreamResponse[UpsertCollectionsResponse]: + def upsert_collections(self, collections: List[CollectionRequest]) -> StreamResponse[UpsertCollectionsResponse]: json = UpsertCollectionsRequest(collections=collections).to_dict() - return self.put( - "/api/v2/feeds/collections", UpsertCollectionsResponse, json=json - ) - + return self.put("/api/v2/feeds/collections", UpsertCollectionsResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.query_collections") - def query_collections( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryCollectionsResponse]: - json = QueryCollectionsRequest( - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return self.post( - "/api/v2/feeds/collections/query", QueryCollectionsResponse, json=json - ) - + def query_collections(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryCollectionsResponse]: + json = QueryCollectionsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return self.post("/api/v2/feeds/collections/query", QueryCollectionsResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.get_comments") - def get_comments( - self, - object_id: str, - object_type: str, - depth: Optional[int] = None, - sort: Optional[str] = None, - replies_limit: Optional[int] = None, - id_around: Optional[str] = None, - language: Optional[str] = None, - translate_text: Optional[bool] = None, - user_id: Optional[str] = None, - limit: Optional[int] = None, - prev: Optional[str] = None, - next: Optional[str] = None, - ) -> StreamResponse[GetCommentsResponse]: - query_params = build_query_param( - object_id=object_id, - object_type=object_type, - depth=depth, - sort=sort, - replies_limit=replies_limit, - id_around=id_around, - language=language, - translate_text=translate_text, - user_id=user_id, - limit=limit, - prev=prev, - next=next, - ) - return self.get( - "/api/v2/feeds/comments", GetCommentsResponse, query_params=query_params - ) - + def get_comments(self, object_id: str, object_type: str, depth: Optional[int] = None, sort: Optional[str] = None, replies_limit: Optional[int] = None, id_around: Optional[str] = None, language: Optional[str] = None, translate_text: Optional[bool] = None, user_id: Optional[str] = None, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None) -> StreamResponse[GetCommentsResponse]: + query_params = build_query_param(object_id=object_id, object_type=object_type, depth=depth, sort=sort, replies_limit=replies_limit, id_around=id_around, language=language, translate_text=translate_text, user_id=user_id, limit=limit, prev=prev, next=next) + return self.get("/api/v2/feeds/comments", GetCommentsResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.feeds.add_comment") - def add_comment( - self, - comment: Optional[str] = None, - copy_custom_to_notification: Optional[bool] = None, - create_notification_activity: Optional[bool] = None, - force_moderation: Optional[bool] = None, - id: Optional[str] = None, - object_id: Optional[str] = None, - object_type: Optional[str] = None, - parent_id: Optional[str] = None, - skip_enrich_url: Optional[bool] = None, - skip_push: Optional[bool] = None, - user_id: Optional[str] = None, - attachments: Optional[List[Attachment]] = None, - mentioned_user_ids: Optional[List[str]] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[AddCommentResponse]: - json = AddCommentRequest( - comment=comment, - copy_custom_to_notification=copy_custom_to_notification, - create_notification_activity=create_notification_activity, - force_moderation=force_moderation, - id=id, - object_id=object_id, - object_type=object_type, - parent_id=parent_id, - skip_enrich_url=skip_enrich_url, - skip_push=skip_push, - user_id=user_id, - attachments=attachments, - mentioned_user_ids=mentioned_user_ids, - custom=custom, - user=user, - ).to_dict() + def add_comment(self, comment: Optional[str] = None, copy_custom_to_notification: Optional[bool] = None, create_notification_activity: Optional[bool] = None, force_moderation: Optional[bool] = None, id: Optional[str] = None, object_id: Optional[str] = None, object_type: Optional[str] = None, parent_id: Optional[str] = None, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, attachments: Optional[List[Attachment]] = None, mentioned_user_ids: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[AddCommentResponse]: + json = AddCommentRequest(comment=comment, copy_custom_to_notification=copy_custom_to_notification, create_notification_activity=create_notification_activity, force_moderation=force_moderation, id=id, object_id=object_id, object_type=object_type, parent_id=parent_id, skip_enrich_url=skip_enrich_url, skip_push=skip_push, user_id=user_id, attachments=attachments, mentioned_user_ids=mentioned_user_ids, custom=custom, user=user).to_dict() return self.post("/api/v2/feeds/comments", AddCommentResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.add_comments_batch") - def add_comments_batch( - self, comments: List[AddCommentRequest] - ) -> StreamResponse[AddCommentsBatchResponse]: + def add_comments_batch(self, comments: List[AddCommentRequest]) -> StreamResponse[AddCommentsBatchResponse]: json = AddCommentsBatchRequest(comments=comments).to_dict() - return self.post( - "/api/v2/feeds/comments/batch", AddCommentsBatchResponse, json=json - ) - + return self.post("/api/v2/feeds/comments/batch", AddCommentsBatchResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.query_comments") - def query_comments( - self, - filter: Dict[str, object], - id_around: Optional[str] = None, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[str] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - language: Optional[str] = None, - translate_text: Optional[bool] = None, - ) -> StreamResponse[QueryCommentsResponse]: - query_params = build_query_param( - language=language, translate_text=translate_text - ) - json = QueryCommentsRequest( - filter=filter, - id_around=id_around, - limit=limit, - next=next, - prev=prev, - sort=sort, - user_id=user_id, - user=user, - ).to_dict() - return self.post( - "/api/v2/feeds/comments/query", - QueryCommentsResponse, - query_params=query_params, - json=json, - ) - + def query_comments(self, filter: Dict[str, object], id_around: Optional[str] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None, language: Optional[str] = None, translate_text: Optional[bool] = None) -> StreamResponse[QueryCommentsResponse]: + query_params = build_query_param(language=language, translate_text=translate_text) + json = QueryCommentsRequest(filter=filter, id_around=id_around, limit=limit, next=next, prev=prev, sort=sort, user_id=user_id, user=user).to_dict() + return self.post("/api/v2/feeds/comments/query", QueryCommentsResponse, query_params=query_params, json=json) + @telemetry.operation_name("getstream.api.feeds.batch_query_comment_reactions") - def batch_query_comment_reactions( - self, - comment_ids: List[str], - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[BatchQueryCommentReactionsResponse]: - json = BatchQueryCommentReactionsRequest( - comment_ids=comment_ids, - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return self.post( - "/api/v2/feeds/comments/reactions/query", - BatchQueryCommentReactionsResponse, - json=json, - ) - + def batch_query_comment_reactions(self, comment_ids: List[str], limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[BatchQueryCommentReactionsResponse]: + json = BatchQueryCommentReactionsRequest(comment_ids=comment_ids, limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return self.post("/api/v2/feeds/comments/reactions/query", BatchQueryCommentReactionsResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.delete_comment_bookmark") - def delete_comment_bookmark( - self, - comment_id: str, - folder_id: Optional[str] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[DeleteCommentBookmarkResponse]: + def delete_comment_bookmark(self, comment_id: str, folder_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[DeleteCommentBookmarkResponse]: query_params = build_query_param(folder_id=folder_id, user_id=user_id) path_params = { - "comment_id": comment_id, + "comment_id": comment_id, } - return self.delete( - "/api/v2/feeds/comments/{comment_id}/bookmarks", - DeleteCommentBookmarkResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/feeds/comments/{comment_id}/bookmarks", DeleteCommentBookmarkResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.update_comment_bookmark") - def update_comment_bookmark( - self, - comment_id: str, - folder_id: Optional[str] = None, - new_folder_id: Optional[str] = None, - user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - new_folder: Optional[AddFolderRequest] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateCommentBookmarkResponse]: + def update_comment_bookmark(self, comment_id: str, folder_id: Optional[str] = None, new_folder_id: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, new_folder: Optional[AddFolderRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateCommentBookmarkResponse]: path_params = { - "comment_id": comment_id, + "comment_id": comment_id, } - json = UpdateCommentBookmarkRequest( - folder_id=folder_id, - new_folder_id=new_folder_id, - user_id=user_id, - custom=custom, - new_folder=new_folder, - user=user, - ).to_dict() - return self.patch( - "/api/v2/feeds/comments/{comment_id}/bookmarks", - UpdateCommentBookmarkResponse, - path_params=path_params, - json=json, - ) - + json = UpdateCommentBookmarkRequest(folder_id=folder_id, new_folder_id=new_folder_id, user_id=user_id, custom=custom, new_folder=new_folder, user=user).to_dict() + return self.patch("/api/v2/feeds/comments/{comment_id}/bookmarks", UpdateCommentBookmarkResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.add_comment_bookmark") - def add_comment_bookmark( - self, - comment_id: str, - folder_id: Optional[str] = None, - user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - new_folder: Optional[AddFolderRequest] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[AddCommentBookmarkResponse]: + def add_comment_bookmark(self, comment_id: str, folder_id: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, new_folder: Optional[AddFolderRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[AddCommentBookmarkResponse]: path_params = { - "comment_id": comment_id, + "comment_id": comment_id, } - json = AddCommentBookmarkRequest( - folder_id=folder_id, - user_id=user_id, - custom=custom, - new_folder=new_folder, - user=user, - ).to_dict() - return self.post( - "/api/v2/feeds/comments/{comment_id}/bookmarks", - AddCommentBookmarkResponse, - path_params=path_params, - json=json, - ) - + json = AddCommentBookmarkRequest(folder_id=folder_id, user_id=user_id, custom=custom, new_folder=new_folder, user=user).to_dict() + return self.post("/api/v2/feeds/comments/{comment_id}/bookmarks", AddCommentBookmarkResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.delete_comment") - def delete_comment( - self, - id: str, - hard_delete: Optional[bool] = None, - delete_notification_activity: Optional[bool] = None, - ) -> StreamResponse[DeleteCommentResponse]: - query_params = build_query_param( - hard_delete=hard_delete, - delete_notification_activity=delete_notification_activity, - ) + def delete_comment(self, id: str, hard_delete: Optional[bool] = None, delete_notification_activity: Optional[bool] = None) -> StreamResponse[DeleteCommentResponse]: + query_params = build_query_param(hard_delete=hard_delete, delete_notification_activity=delete_notification_activity) path_params = { - "id": id, + "id": id, } - return self.delete( - "/api/v2/feeds/comments/{id}", - DeleteCommentResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/feeds/comments/{id}", DeleteCommentResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.get_comment") - def get_comment( - self, - id: str, - user_id: Optional[str] = None, - language: Optional[str] = None, - translate_text: Optional[bool] = None, - ) -> StreamResponse[GetCommentResponse]: - query_params = build_query_param( - user_id=user_id, language=language, translate_text=translate_text - ) + def get_comment(self, id: str, user_id: Optional[str] = None, language: Optional[str] = None, translate_text: Optional[bool] = None) -> StreamResponse[GetCommentResponse]: + query_params = build_query_param(user_id=user_id, language=language, translate_text=translate_text) path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/feeds/comments/{id}", - GetCommentResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/feeds/comments/{id}", GetCommentResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.update_comment") - def update_comment( - self, - id: str, - comment: Optional[str] = None, - copy_custom_to_notification: Optional[bool] = None, - force_moderation: Optional[bool] = None, - handle_mention_notifications: Optional[bool] = None, - skip_enrich_url: Optional[bool] = None, - skip_push: Optional[bool] = None, - user_id: Optional[str] = None, - attachments: Optional[List[Attachment]] = None, - mentioned_user_ids: Optional[List[str]] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateCommentResponse]: + def update_comment(self, id: str, comment: Optional[str] = None, copy_custom_to_notification: Optional[bool] = None, force_moderation: Optional[bool] = None, handle_mention_notifications: Optional[bool] = None, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, attachments: Optional[List[Attachment]] = None, mentioned_user_ids: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateCommentResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateCommentRequest( - comment=comment, - copy_custom_to_notification=copy_custom_to_notification, - force_moderation=force_moderation, - handle_mention_notifications=handle_mention_notifications, - skip_enrich_url=skip_enrich_url, - skip_push=skip_push, - user_id=user_id, - attachments=attachments, - mentioned_user_ids=mentioned_user_ids, - custom=custom, - user=user, - ).to_dict() - return self.patch( - "/api/v2/feeds/comments/{id}", - UpdateCommentResponse, - path_params=path_params, - json=json, - ) - + json = UpdateCommentRequest(comment=comment, copy_custom_to_notification=copy_custom_to_notification, force_moderation=force_moderation, handle_mention_notifications=handle_mention_notifications, skip_enrich_url=skip_enrich_url, skip_push=skip_push, user_id=user_id, attachments=attachments, mentioned_user_ids=mentioned_user_ids, custom=custom, user=user).to_dict() + return self.patch("/api/v2/feeds/comments/{id}", UpdateCommentResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.update_comment_partial") - def update_comment_partial( - self, - id: str, - copy_custom_to_notification: Optional[bool] = None, - force_moderation: Optional[bool] = None, - handle_mention_notifications: Optional[bool] = None, - skip_enrich_url: Optional[bool] = None, - skip_push: Optional[bool] = None, - user_id: Optional[str] = None, - unset: Optional[List[str]] = None, - set: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpdateCommentPartialResponse]: + def update_comment_partial(self, id: str, copy_custom_to_notification: Optional[bool] = None, force_moderation: Optional[bool] = None, handle_mention_notifications: Optional[bool] = None, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateCommentPartialResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateCommentPartialRequest( - copy_custom_to_notification=copy_custom_to_notification, - force_moderation=force_moderation, - handle_mention_notifications=handle_mention_notifications, - skip_enrich_url=skip_enrich_url, - skip_push=skip_push, - user_id=user_id, - unset=unset, - set=set, - user=user, - ).to_dict() - return self.post( - "/api/v2/feeds/comments/{id}/partial", - UpdateCommentPartialResponse, - path_params=path_params, - json=json, - ) - + json = UpdateCommentPartialRequest(copy_custom_to_notification=copy_custom_to_notification, force_moderation=force_moderation, handle_mention_notifications=handle_mention_notifications, skip_enrich_url=skip_enrich_url, skip_push=skip_push, user_id=user_id, unset=unset, set=set, user=user).to_dict() + return self.post("/api/v2/feeds/comments/{id}/partial", UpdateCommentPartialResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.add_comment_reaction") - def add_comment_reaction( - self, - id: str, - type: str, - copy_custom_to_notification: Optional[bool] = None, - create_notification_activity: Optional[bool] = None, - enforce_unique: Optional[bool] = None, - skip_push: Optional[bool] = None, - user_id: Optional[str] = None, - target_feeds: Optional[List[str]] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[AddCommentReactionResponse]: + def add_comment_reaction(self, id: str, type: str, copy_custom_to_notification: Optional[bool] = None, create_notification_activity: Optional[bool] = None, enforce_unique: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, target_feeds: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[AddCommentReactionResponse]: path_params = { - "id": id, + "id": id, } - json = AddCommentReactionRequest( - type=type, - copy_custom_to_notification=copy_custom_to_notification, - create_notification_activity=create_notification_activity, - enforce_unique=enforce_unique, - skip_push=skip_push, - user_id=user_id, - target_feeds=target_feeds, - custom=custom, - user=user, - ).to_dict() - return self.post( - "/api/v2/feeds/comments/{id}/reactions", - AddCommentReactionResponse, - path_params=path_params, - json=json, - ) - + json = AddCommentReactionRequest(type=type, copy_custom_to_notification=copy_custom_to_notification, create_notification_activity=create_notification_activity, enforce_unique=enforce_unique, skip_push=skip_push, user_id=user_id, target_feeds=target_feeds, custom=custom, user=user).to_dict() + return self.post("/api/v2/feeds/comments/{id}/reactions", AddCommentReactionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.query_comment_reactions") - def query_comment_reactions( - self, - id: str, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCommentReactionsResponse]: + def query_comment_reactions(self, id: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCommentReactionsResponse]: path_params = { - "id": id, + "id": id, } - json = QueryCommentReactionsRequest( - limit=limit, next=next, prev=prev, sort=sort, filter=filter - ).to_dict() - return self.post( - "/api/v2/feeds/comments/{id}/reactions/query", - QueryCommentReactionsResponse, - path_params=path_params, - json=json, - ) - + json = QueryCommentReactionsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() + return self.post("/api/v2/feeds/comments/{id}/reactions/query", QueryCommentReactionsResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.delete_comment_reaction") - def delete_comment_reaction( - self, - id: str, - type: str, - delete_notification_activity: Optional[bool] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[DeleteCommentReactionResponse]: - query_params = build_query_param( - delete_notification_activity=delete_notification_activity, user_id=user_id - ) + def delete_comment_reaction(self, id: str, type: str, delete_notification_activity: Optional[bool] = None, user_id: Optional[str] = None) -> StreamResponse[DeleteCommentReactionResponse]: + query_params = build_query_param(delete_notification_activity=delete_notification_activity, user_id=user_id) path_params = { - "id": id, - "type": type, + "id": id, "type": type, } - return self.delete( - "/api/v2/feeds/comments/{id}/reactions/{type}", - DeleteCommentReactionResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/feeds/comments/{id}/reactions/{type}", DeleteCommentReactionResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.get_comment_replies") - def get_comment_replies( - self, - id: str, - depth: Optional[int] = None, - sort: Optional[str] = None, - replies_limit: Optional[int] = None, - id_around: Optional[str] = None, - language: Optional[str] = None, - translate_text: Optional[bool] = None, - user_id: Optional[str] = None, - limit: Optional[int] = None, - prev: Optional[str] = None, - next: Optional[str] = None, - ) -> StreamResponse[GetCommentRepliesResponse]: - query_params = build_query_param( - depth=depth, - sort=sort, - replies_limit=replies_limit, - id_around=id_around, - language=language, - translate_text=translate_text, - user_id=user_id, - limit=limit, - prev=prev, - next=next, - ) + def get_comment_replies(self, id: str, depth: Optional[int] = None, sort: Optional[str] = None, replies_limit: Optional[int] = None, id_around: Optional[str] = None, language: Optional[str] = None, translate_text: Optional[bool] = None, user_id: Optional[str] = None, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None) -> StreamResponse[GetCommentRepliesResponse]: + query_params = build_query_param(depth=depth, sort=sort, replies_limit=replies_limit, id_around=id_around, language=language, translate_text=translate_text, user_id=user_id, limit=limit, prev=prev, next=next) path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/feeds/comments/{id}/replies", - GetCommentRepliesResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/feeds/comments/{id}/replies", GetCommentRepliesResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.restore_comment") - def restore_comment( - self, id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None - ) -> StreamResponse[RestoreCommentResponse]: + def restore_comment(self, id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[RestoreCommentResponse]: path_params = { - "id": id, + "id": id, } json = RestoreCommentRequest(user_id=user_id, user=user).to_dict() - return self.post( - "/api/v2/feeds/comments/{id}/restore", - RestoreCommentResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/feeds/comments/{id}/restore", RestoreCommentResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.translate_comment") - def translate_comment( - self, id: str, language: str - ) -> StreamResponse[TranslateCommentResponse]: + def translate_comment(self, id: str, language: str) -> StreamResponse[TranslateCommentResponse]: path_params = { - "id": id, + "id": id, } json = TranslateCommentRequest(language=language).to_dict() - return self.post( - "/api/v2/feeds/comments/{id}/translate", - TranslateCommentResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/feeds/comments/{id}/translate", TranslateCommentResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.list_feed_groups") - def list_feed_groups( - self, include_soft_deleted: Optional[bool] = None - ) -> StreamResponse[ListFeedGroupsResponse]: + def list_feed_groups(self, include_soft_deleted: Optional[bool] = None) -> StreamResponse[ListFeedGroupsResponse]: query_params = build_query_param(include_soft_deleted=include_soft_deleted) - return self.get( - "/api/v2/feeds/feed_groups", - ListFeedGroupsResponse, - query_params=query_params, - ) - + return self.get("/api/v2/feeds/feed_groups", ListFeedGroupsResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.feeds.create_feed_group") - def create_feed_group( - self, - id: str, - default_visibility: Optional[str] = None, - activity_processors: Optional[List[ActivityProcessorConfig]] = None, - activity_selectors: Optional[List[ActivitySelectorConfig]] = None, - activity_filter: Optional[ActivityFilterConfig] = None, - aggregation: Optional[AggregationConfig] = None, - custom: Optional[Dict[str, object]] = None, - notification: Optional[NotificationConfig] = None, - push_notification: Optional[PushNotificationConfig] = None, - ranking: Optional[RankingConfig] = None, - stories: Optional[StoriesConfig] = None, - ) -> StreamResponse[CreateFeedGroupResponse]: - json = CreateFeedGroupRequest( - id=id, - default_visibility=default_visibility, - activity_processors=activity_processors, - activity_selectors=activity_selectors, - activity_filter=activity_filter, - aggregation=aggregation, - custom=custom, - notification=notification, - push_notification=push_notification, - ranking=ranking, - stories=stories, - ).to_dict() - return self.post( - "/api/v2/feeds/feed_groups", CreateFeedGroupResponse, json=json - ) - + def create_feed_group(self, id: str, default_follower_role: Optional[str] = None, default_visibility: Optional[str] = None, activity_processors: Optional[List[ActivityProcessorConfig]] = None, activity_selectors: Optional[List[ActivitySelectorConfig]] = None, activity_filter: Optional[ActivityFilterConfig] = None, activity_processing: Optional[ActivityProcessingConfig] = None, aggregation: Optional[AggregationConfig] = None, custom: Optional[Dict[str, object]] = None, notification: Optional[NotificationConfig] = None, push_notification: Optional[PushNotificationConfig] = None, ranking: Optional[RankingConfig] = None, stories: Optional[StoriesConfig] = None) -> StreamResponse[CreateFeedGroupResponse]: + json = CreateFeedGroupRequest(id=id, default_follower_role=default_follower_role, default_visibility=default_visibility, activity_processors=activity_processors, activity_selectors=activity_selectors, activity_filter=activity_filter, activity_processing=activity_processing, aggregation=aggregation, custom=custom, notification=notification, push_notification=push_notification, ranking=ranking, stories=stories).to_dict() + return self.post("/api/v2/feeds/feed_groups", CreateFeedGroupResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.delete_feed") - def delete_feed( - self, - feed_group_id: str, - feed_id: str, - hard_delete: Optional[bool] = None, - purge_user_activities: Optional[bool] = None, - ) -> StreamResponse[DeleteFeedResponse]: - query_params = build_query_param( - hard_delete=hard_delete, purge_user_activities=purge_user_activities - ) + def delete_feed(self, feed_group_id: str, feed_id: str, hard_delete: Optional[bool] = None, purge_user_activities: Optional[bool] = None) -> StreamResponse[DeleteFeedResponse]: + query_params = build_query_param(hard_delete=hard_delete, purge_user_activities=purge_user_activities) path_params = { - "feed_group_id": feed_group_id, - "feed_id": feed_id, + "feed_group_id": feed_group_id, "feed_id": feed_id, } - return self.delete( - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}", - DeleteFeedResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}", DeleteFeedResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.get_or_create_feed") - def get_or_create_feed( - self, - feed_group_id: str, - feed_id: str, - language: Optional[str] = None, - translate_text: Optional[bool] = None, - id_around: Optional[str] = None, - limit: Optional[int] = None, - next: Optional[str] = None, - overwrite_interest_weights: Optional[bool] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - view: Optional[str] = None, - watch: Optional[bool] = None, - data: Optional[FeedInput] = None, - enrichment_options: Optional[EnrichmentOptions] = None, - external_ranking: Optional[Dict[str, object]] = None, - filter: Optional[Dict[str, object]] = None, - followers_pagination: Optional[PagerRequest] = None, - following_pagination: Optional[PagerRequest] = None, - friend_reactions_options: Optional[FriendReactionsOptions] = None, - interest_weights: Optional[Dict[str, float]] = None, - member_pagination: Optional[PagerRequest] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[GetOrCreateFeedResponse]: - query_params = build_query_param( - language=language, translate_text=translate_text - ) + def get_or_create_feed(self, feed_group_id: str, feed_id: str, language: Optional[str] = None, translate_text: Optional[bool] = None, id_around: Optional[str] = None, limit: Optional[int] = None, next: Optional[str] = None, overwrite_interest_weights: Optional[bool] = None, prev: Optional[str] = None, user_id: Optional[str] = None, view: Optional[str] = None, watch: Optional[bool] = None, data: Optional[FeedInput] = None, enrichment_options: Optional[EnrichmentOptions] = None, external_ranking: Optional[Dict[str, object]] = None, filter: Optional[Dict[str, object]] = None, followers_pagination: Optional[PagerRequest] = None, following_pagination: Optional[PagerRequest] = None, friend_reactions_options: Optional[FriendReactionsOptions] = None, interest_weights: Optional[Dict[str, float]] = None, member_pagination: Optional[PagerRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[GetOrCreateFeedResponse]: + query_params = build_query_param(language=language, translate_text=translate_text) path_params = { - "feed_group_id": feed_group_id, - "feed_id": feed_id, + "feed_group_id": feed_group_id, "feed_id": feed_id, } - json = GetOrCreateFeedRequest( - id_around=id_around, - limit=limit, - next=next, - overwrite_interest_weights=overwrite_interest_weights, - prev=prev, - user_id=user_id, - view=view, - watch=watch, - data=data, - enrichment_options=enrichment_options, - external_ranking=external_ranking, - filter=filter, - followers_pagination=followers_pagination, - following_pagination=following_pagination, - friend_reactions_options=friend_reactions_options, - interest_weights=interest_weights, - member_pagination=member_pagination, - user=user, - ).to_dict() - return self.post( - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}", - GetOrCreateFeedResponse, - query_params=query_params, - path_params=path_params, - json=json, - ) - + json = GetOrCreateFeedRequest(id_around=id_around, limit=limit, next=next, overwrite_interest_weights=overwrite_interest_weights, prev=prev, user_id=user_id, view=view, watch=watch, data=data, enrichment_options=enrichment_options, external_ranking=external_ranking, filter=filter, followers_pagination=followers_pagination, following_pagination=following_pagination, friend_reactions_options=friend_reactions_options, interest_weights=interest_weights, member_pagination=member_pagination, user=user).to_dict() + return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}", GetOrCreateFeedResponse, query_params=query_params, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.update_feed") - def update_feed( - self, - feed_group_id: str, - feed_id: str, - clear_location: Optional[bool] = None, - created_by_id: Optional[str] = None, - description: Optional[str] = None, - enrich_own_fields: Optional[bool] = None, - name: Optional[str] = None, - filter_tags: Optional[List[str]] = None, - custom: Optional[Dict[str, object]] = None, - location: Optional[Location] = None, - ) -> StreamResponse[UpdateFeedResponse]: + def update_feed(self, feed_group_id: str, feed_id: str, clear_location: Optional[bool] = None, created_by_id: Optional[str] = None, description: Optional[str] = None, enrich_own_fields: Optional[bool] = None, name: Optional[str] = None, filter_tags: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, location: Optional[Location] = None) -> StreamResponse[UpdateFeedResponse]: path_params = { - "feed_group_id": feed_group_id, - "feed_id": feed_id, + "feed_group_id": feed_group_id, "feed_id": feed_id, } - json = UpdateFeedRequest( - clear_location=clear_location, - created_by_id=created_by_id, - description=description, - enrich_own_fields=enrich_own_fields, - name=name, - filter_tags=filter_tags, - custom=custom, - location=location, - ).to_dict() - return self.put( - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}", - UpdateFeedResponse, - path_params=path_params, - json=json, - ) - + json = UpdateFeedRequest(clear_location=clear_location, created_by_id=created_by_id, description=description, enrich_own_fields=enrich_own_fields, name=name, filter_tags=filter_tags, custom=custom, location=location).to_dict() + return self.put("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}", UpdateFeedResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.mark_activity") - def mark_activity( - self, - feed_group_id: str, - feed_id: str, - mark_all_read: Optional[bool] = None, - mark_all_seen: Optional[bool] = None, - user_id: Optional[str] = None, - mark_read: Optional[List[str]] = None, - mark_seen: Optional[List[str]] = None, - mark_watched: Optional[List[str]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[Response]: + def mark_activity(self, feed_group_id: str, feed_id: str, mark_all_read: Optional[bool] = None, mark_all_seen: Optional[bool] = None, user_id: Optional[str] = None, mark_read: Optional[List[str]] = None, mark_seen: Optional[List[str]] = None, mark_watched: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[Response]: path_params = { - "feed_group_id": feed_group_id, - "feed_id": feed_id, + "feed_group_id": feed_group_id, "feed_id": feed_id, } - json = MarkActivityRequest( - mark_all_read=mark_all_read, - mark_all_seen=mark_all_seen, - user_id=user_id, - mark_read=mark_read, - mark_seen=mark_seen, - mark_watched=mark_watched, - user=user, - ).to_dict() - return self.post( - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/mark/batch", - Response, - path_params=path_params, - json=json, - ) - + json = MarkActivityRequest(mark_all_read=mark_all_read, mark_all_seen=mark_all_seen, user_id=user_id, mark_read=mark_read, mark_seen=mark_seen, mark_watched=mark_watched, user=user).to_dict() + return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/mark/batch", Response, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.unpin_activity") - def unpin_activity( - self, - feed_group_id: str, - feed_id: str, - activity_id: str, - enrich_own_fields: Optional[bool] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[UnpinActivityResponse]: - query_params = build_query_param( - enrich_own_fields=enrich_own_fields, user_id=user_id - ) + def unpin_activity(self, feed_group_id: str, feed_id: str, activity_id: str, enrich_own_fields: Optional[bool] = None, user_id: Optional[str] = None) -> StreamResponse[UnpinActivityResponse]: + query_params = build_query_param(enrich_own_fields=enrich_own_fields, user_id=user_id) path_params = { - "feed_group_id": feed_group_id, - "feed_id": feed_id, - "activity_id": activity_id, + "feed_group_id": feed_group_id, "feed_id": feed_id, "activity_id": activity_id, } - return self.delete( - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/{activity_id}/pin", - UnpinActivityResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/{activity_id}/pin", UnpinActivityResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.pin_activity") - def pin_activity( - self, - feed_group_id: str, - feed_id: str, - activity_id: str, - enrich_own_fields: Optional[bool] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[PinActivityResponse]: + def pin_activity(self, feed_group_id: str, feed_id: str, activity_id: str, enrich_own_fields: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[PinActivityResponse]: path_params = { - "feed_group_id": feed_group_id, - "feed_id": feed_id, - "activity_id": activity_id, + "feed_group_id": feed_group_id, "feed_id": feed_id, "activity_id": activity_id, } - json = PinActivityRequest( - enrich_own_fields=enrich_own_fields, user_id=user_id, user=user - ).to_dict() - return self.post( - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/{activity_id}/pin", - PinActivityResponse, - path_params=path_params, - json=json, - ) - + json = PinActivityRequest(enrich_own_fields=enrich_own_fields, user_id=user_id, user=user).to_dict() + return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/{activity_id}/pin", PinActivityResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.change_feed_visibility") - def change_feed_visibility( - self, - feed_group_id: str, - feed_id: str, - visibility: str, - pending_follows_action: Optional[str] = None, - ) -> StreamResponse[ChangeFeedVisibilityResponse]: + def change_feed_visibility(self, feed_group_id: str, feed_id: str, visibility: str, pending_follows_action: Optional[str] = None) -> StreamResponse[ChangeFeedVisibilityResponse]: path_params = { - "feed_group_id": feed_group_id, - "feed_id": feed_id, + "feed_group_id": feed_group_id, "feed_id": feed_id, } - json = ChangeFeedVisibilityRequest( - visibility=visibility, pending_follows_action=pending_follows_action - ).to_dict() - return self.post( - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/change_visibility", - ChangeFeedVisibilityResponse, - path_params=path_params, - json=json, - ) - + json = ChangeFeedVisibilityRequest(visibility=visibility, pending_follows_action=pending_follows_action).to_dict() + return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/change_visibility", ChangeFeedVisibilityResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.get_feed_counts") - def get_feed_counts( - self, feed_group_id: str, feed_id: str - ) -> StreamResponse[GetFeedCountsResponse]: + def get_feed_counts(self, feed_group_id: str, feed_id: str) -> StreamResponse[GetFeedCountsResponse]: path_params = { - "feed_group_id": feed_group_id, - "feed_id": feed_id, + "feed_group_id": feed_group_id, "feed_id": feed_id, } - return self.get( - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/counts", - GetFeedCountsResponse, - path_params=path_params, - ) - + return self.get("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/counts", GetFeedCountsResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.update_feed_members") - def update_feed_members( - self, - feed_group_id: str, - feed_id: str, - operation: str, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - members: Optional[List[FeedMemberRequest]] = None, - ) -> StreamResponse[UpdateFeedMembersResponse]: + def update_feed_members(self, feed_group_id: str, feed_id: str, operation: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, members: Optional[List[FeedMemberRequest]] = None) -> StreamResponse[UpdateFeedMembersResponse]: path_params = { - "feed_group_id": feed_group_id, - "feed_id": feed_id, + "feed_group_id": feed_group_id, "feed_id": feed_id, } - json = UpdateFeedMembersRequest( - operation=operation, limit=limit, next=next, prev=prev, members=members - ).to_dict() - return self.patch( - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members", - UpdateFeedMembersResponse, - path_params=path_params, - json=json, - ) - + json = UpdateFeedMembersRequest(operation=operation, limit=limit, next=next, prev=prev, members=members).to_dict() + return self.patch("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members", UpdateFeedMembersResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.accept_feed_member_invite") - def accept_feed_member_invite( - self, - feed_id: str, - feed_group_id: str, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[AcceptFeedMemberInviteResponse]: + def accept_feed_member_invite(self, feed_id: str, feed_group_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[AcceptFeedMemberInviteResponse]: path_params = { - "feed_id": feed_id, - "feed_group_id": feed_group_id, + "feed_id": feed_id, "feed_group_id": feed_group_id, } json = AcceptFeedMemberInviteRequest(user_id=user_id, user=user).to_dict() - return self.post( - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/accept", - AcceptFeedMemberInviteResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/accept", AcceptFeedMemberInviteResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.query_feed_members") - def query_feed_members( - self, - feed_group_id: str, - feed_id: str, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryFeedMembersResponse]: + def query_feed_members(self, feed_group_id: str, feed_id: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryFeedMembersResponse]: path_params = { - "feed_group_id": feed_group_id, - "feed_id": feed_id, + "feed_group_id": feed_group_id, "feed_id": feed_id, } - json = QueryFeedMembersRequest( - limit=limit, next=next, prev=prev, sort=sort, filter=filter - ).to_dict() - return self.post( - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/query", - QueryFeedMembersResponse, - path_params=path_params, - json=json, - ) - + json = QueryFeedMembersRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() + return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/query", QueryFeedMembersResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.reject_feed_member_invite") - def reject_feed_member_invite( - self, - feed_group_id: str, - feed_id: str, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[RejectFeedMemberInviteResponse]: + def reject_feed_member_invite(self, feed_group_id: str, feed_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[RejectFeedMemberInviteResponse]: path_params = { - "feed_group_id": feed_group_id, - "feed_id": feed_id, + "feed_group_id": feed_group_id, "feed_id": feed_id, } json = RejectFeedMemberInviteRequest(user_id=user_id, user=user).to_dict() - return self.post( - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/reject", - RejectFeedMemberInviteResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/reject", RejectFeedMemberInviteResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.query_pinned_activities") - def query_pinned_activities( - self, - feed_group_id: str, - feed_id: str, - language: Optional[str] = None, - translate_text: Optional[bool] = None, - enrich_own_fields: Optional[bool] = None, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryPinnedActivitiesResponse]: - query_params = build_query_param( - language=language, translate_text=translate_text - ) + def query_pinned_activities(self, feed_group_id: str, feed_id: str, language: Optional[str] = None, translate_text: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryPinnedActivitiesResponse]: + query_params = build_query_param(language=language, translate_text=translate_text) path_params = { - "feed_group_id": feed_group_id, - "feed_id": feed_id, + "feed_group_id": feed_group_id, "feed_id": feed_id, } - json = QueryPinnedActivitiesRequest( - enrich_own_fields=enrich_own_fields, - limit=limit, - next=next, - prev=prev, - sort=sort, - filter=filter, - ).to_dict() - return self.post( - "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/pinned_activities/query", - QueryPinnedActivitiesResponse, - query_params=query_params, - path_params=path_params, - json=json, - ) - + json = QueryPinnedActivitiesRequest(enrich_own_fields=enrich_own_fields, limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() + return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/pinned_activities/query", QueryPinnedActivitiesResponse, query_params=query_params, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.get_follow_suggestions") - def get_follow_suggestions( - self, - feed_group_id: str, - limit: Optional[int] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[GetFollowSuggestionsResponse]: + def get_follow_suggestions(self, feed_group_id: str, limit: Optional[int] = None, user_id: Optional[str] = None) -> StreamResponse[GetFollowSuggestionsResponse]: query_params = build_query_param(limit=limit, user_id=user_id) path_params = { - "feed_group_id": feed_group_id, + "feed_group_id": feed_group_id, } - return self.get( - "/api/v2/feeds/feed_groups/{feed_group_id}/follow_suggestions", - GetFollowSuggestionsResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/feeds/feed_groups/{feed_group_id}/follow_suggestions", GetFollowSuggestionsResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.restore_feed_group") - def restore_feed_group( - self, feed_group_id: str - ) -> StreamResponse[RestoreFeedGroupResponse]: + def restore_feed_group(self, feed_group_id: str) -> StreamResponse[RestoreFeedGroupResponse]: path_params = { - "feed_group_id": feed_group_id, + "feed_group_id": feed_group_id, } - return self.post( - "/api/v2/feeds/feed_groups/{feed_group_id}/restore", - RestoreFeedGroupResponse, - path_params=path_params, - ) - + return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/restore", RestoreFeedGroupResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.delete_feed_group") - def delete_feed_group( - self, id: str, hard_delete: Optional[bool] = None - ) -> StreamResponse[DeleteFeedGroupResponse]: + def delete_feed_group(self, id: str, hard_delete: Optional[bool] = None) -> StreamResponse[DeleteFeedGroupResponse]: query_params = build_query_param(hard_delete=hard_delete) path_params = { - "id": id, + "id": id, } - return self.delete( - "/api/v2/feeds/feed_groups/{id}", - DeleteFeedGroupResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/feeds/feed_groups/{id}", DeleteFeedGroupResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.get_feed_group") - def get_feed_group( - self, id: str, include_soft_deleted: Optional[bool] = None - ) -> StreamResponse[GetFeedGroupResponse]: + def get_feed_group(self, id: str, include_soft_deleted: Optional[bool] = None) -> StreamResponse[GetFeedGroupResponse]: query_params = build_query_param(include_soft_deleted=include_soft_deleted) path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/feeds/feed_groups/{id}", - GetFeedGroupResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/feeds/feed_groups/{id}", GetFeedGroupResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.get_or_create_feed_group") - def get_or_create_feed_group( - self, - id: str, - default_visibility: Optional[str] = None, - activity_processors: Optional[List[ActivityProcessorConfig]] = None, - activity_selectors: Optional[List[ActivitySelectorConfig]] = None, - activity_filter: Optional[ActivityFilterConfig] = None, - aggregation: Optional[AggregationConfig] = None, - custom: Optional[Dict[str, object]] = None, - notification: Optional[NotificationConfig] = None, - push_notification: Optional[PushNotificationConfig] = None, - ranking: Optional[RankingConfig] = None, - stories: Optional[StoriesConfig] = None, - ) -> StreamResponse[GetOrCreateFeedGroupResponse]: + def get_or_create_feed_group(self, id: str, default_follower_role: Optional[str] = None, default_visibility: Optional[str] = None, activity_processors: Optional[List[ActivityProcessorConfig]] = None, activity_selectors: Optional[List[ActivitySelectorConfig]] = None, activity_filter: Optional[ActivityFilterConfig] = None, activity_processing: Optional[ActivityProcessingConfig] = None, aggregation: Optional[AggregationConfig] = None, custom: Optional[Dict[str, object]] = None, notification: Optional[NotificationConfig] = None, push_notification: Optional[PushNotificationConfig] = None, ranking: Optional[RankingConfig] = None, stories: Optional[StoriesConfig] = None) -> StreamResponse[GetOrCreateFeedGroupResponse]: path_params = { - "id": id, + "id": id, } - json = GetOrCreateFeedGroupRequest( - default_visibility=default_visibility, - activity_processors=activity_processors, - activity_selectors=activity_selectors, - activity_filter=activity_filter, - aggregation=aggregation, - custom=custom, - notification=notification, - push_notification=push_notification, - ranking=ranking, - stories=stories, - ).to_dict() - return self.post( - "/api/v2/feeds/feed_groups/{id}", - GetOrCreateFeedGroupResponse, - path_params=path_params, - json=json, - ) - + json = GetOrCreateFeedGroupRequest(default_follower_role=default_follower_role, default_visibility=default_visibility, activity_processors=activity_processors, activity_selectors=activity_selectors, activity_filter=activity_filter, activity_processing=activity_processing, aggregation=aggregation, custom=custom, notification=notification, push_notification=push_notification, ranking=ranking, stories=stories).to_dict() + return self.post("/api/v2/feeds/feed_groups/{id}", GetOrCreateFeedGroupResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.update_feed_group") - def update_feed_group( - self, - id: str, - default_visibility: Optional[str] = None, - activity_processors: Optional[List[ActivityProcessorConfig]] = None, - activity_selectors: Optional[List[ActivitySelectorConfig]] = None, - activity_filter: Optional[ActivityFilterConfig] = None, - aggregation: Optional[AggregationConfig] = None, - custom: Optional[Dict[str, object]] = None, - notification: Optional[NotificationConfig] = None, - push_notification: Optional[PushNotificationConfig] = None, - ranking: Optional[RankingConfig] = None, - stories: Optional[StoriesConfig] = None, - ) -> StreamResponse[UpdateFeedGroupResponse]: + def update_feed_group(self, id: str, default_follower_role: Optional[str] = None, default_visibility: Optional[str] = None, activity_processors: Optional[List[ActivityProcessorConfig]] = None, activity_selectors: Optional[List[ActivitySelectorConfig]] = None, activity_filter: Optional[ActivityFilterConfig] = None, activity_processing: Optional[ActivityProcessingConfig] = None, aggregation: Optional[AggregationConfig] = None, custom: Optional[Dict[str, object]] = None, notification: Optional[NotificationConfig] = None, push_notification: Optional[PushNotificationConfig] = None, ranking: Optional[RankingConfig] = None, stories: Optional[StoriesConfig] = None) -> StreamResponse[UpdateFeedGroupResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateFeedGroupRequest( - default_visibility=default_visibility, - activity_processors=activity_processors, - activity_selectors=activity_selectors, - activity_filter=activity_filter, - aggregation=aggregation, - custom=custom, - notification=notification, - push_notification=push_notification, - ranking=ranking, - stories=stories, - ).to_dict() - return self.put( - "/api/v2/feeds/feed_groups/{id}", - UpdateFeedGroupResponse, - path_params=path_params, - json=json, - ) - + json = UpdateFeedGroupRequest(default_follower_role=default_follower_role, default_visibility=default_visibility, activity_processors=activity_processors, activity_selectors=activity_selectors, activity_filter=activity_filter, activity_processing=activity_processing, aggregation=aggregation, custom=custom, notification=notification, push_notification=push_notification, ranking=ranking, stories=stories).to_dict() + return self.put("/api/v2/feeds/feed_groups/{id}", UpdateFeedGroupResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.list_feed_views") def list_feed_views(self) -> StreamResponse[ListFeedViewsResponse]: return self.get("/api/v2/feeds/feed_views", ListFeedViewsResponse) - + @telemetry.operation_name("getstream.api.feeds.create_feed_view") - def create_feed_view( - self, - id: str, - activity_selectors: Optional[List[ActivitySelectorConfig]] = None, - aggregation: Optional[AggregationConfig] = None, - ranking: Optional[RankingConfig] = None, - ) -> StreamResponse[CreateFeedViewResponse]: - json = CreateFeedViewRequest( - id=id, - activity_selectors=activity_selectors, - aggregation=aggregation, - ranking=ranking, - ).to_dict() + def create_feed_view(self, id: str, activity_selectors: Optional[List[ActivitySelectorConfig]] = None, aggregation: Optional[AggregationConfig] = None, ranking: Optional[RankingConfig] = None) -> StreamResponse[CreateFeedViewResponse]: + json = CreateFeedViewRequest(id=id, activity_selectors=activity_selectors, aggregation=aggregation, ranking=ranking).to_dict() return self.post("/api/v2/feeds/feed_views", CreateFeedViewResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.delete_feed_view") def delete_feed_view(self, id: str) -> StreamResponse[DeleteFeedViewResponse]: path_params = { - "id": id, + "id": id, } - return self.delete( - "/api/v2/feeds/feed_views/{id}", - DeleteFeedViewResponse, - path_params=path_params, - ) - + return self.delete("/api/v2/feeds/feed_views/{id}", DeleteFeedViewResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.get_feed_view") def get_feed_view(self, id: str) -> StreamResponse[GetFeedViewResponse]: path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/feeds/feed_views/{id}", - GetFeedViewResponse, - path_params=path_params, - ) - + return self.get("/api/v2/feeds/feed_views/{id}", GetFeedViewResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.get_or_create_feed_view") - def get_or_create_feed_view( - self, - id: str, - activity_selectors: Optional[List[ActivitySelectorConfig]] = None, - aggregation: Optional[AggregationConfig] = None, - ranking: Optional[RankingConfig] = None, - ) -> StreamResponse[GetOrCreateFeedViewResponse]: + def get_or_create_feed_view(self, id: str, activity_selectors: Optional[List[ActivitySelectorConfig]] = None, aggregation: Optional[AggregationConfig] = None, ranking: Optional[RankingConfig] = None) -> StreamResponse[GetOrCreateFeedViewResponse]: path_params = { - "id": id, + "id": id, } - json = GetOrCreateFeedViewRequest( - activity_selectors=activity_selectors, - aggregation=aggregation, - ranking=ranking, - ).to_dict() - return self.post( - "/api/v2/feeds/feed_views/{id}", - GetOrCreateFeedViewResponse, - path_params=path_params, - json=json, - ) - + json = GetOrCreateFeedViewRequest(activity_selectors=activity_selectors, aggregation=aggregation, ranking=ranking).to_dict() + return self.post("/api/v2/feeds/feed_views/{id}", GetOrCreateFeedViewResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.update_feed_view") - def update_feed_view( - self, - id: str, - activity_selectors: Optional[List[ActivitySelectorConfig]] = None, - aggregation: Optional[AggregationConfig] = None, - ranking: Optional[RankingConfig] = None, - ) -> StreamResponse[UpdateFeedViewResponse]: + def update_feed_view(self, id: str, activity_selectors: Optional[List[ActivitySelectorConfig]] = None, aggregation: Optional[AggregationConfig] = None, ranking: Optional[RankingConfig] = None) -> StreamResponse[UpdateFeedViewResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateFeedViewRequest( - activity_selectors=activity_selectors, - aggregation=aggregation, - ranking=ranking, - ).to_dict() - return self.put( - "/api/v2/feeds/feed_views/{id}", - UpdateFeedViewResponse, - path_params=path_params, - json=json, - ) - + json = UpdateFeedViewRequest(activity_selectors=activity_selectors, aggregation=aggregation, ranking=ranking).to_dict() + return self.put("/api/v2/feeds/feed_views/{id}", UpdateFeedViewResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.list_feed_visibilities") def list_feed_visibilities(self) -> StreamResponse[ListFeedVisibilitiesResponse]: return self.get("/api/v2/feeds/feed_visibilities", ListFeedVisibilitiesResponse) - + @telemetry.operation_name("getstream.api.feeds.get_feed_visibility") - def get_feed_visibility( - self, name: str - ) -> StreamResponse[GetFeedVisibilityResponse]: + def get_feed_visibility(self, name: str) -> StreamResponse[GetFeedVisibilityResponse]: path_params = { - "name": name, + "name": name, } - return self.get( - "/api/v2/feeds/feed_visibilities/{name}", - GetFeedVisibilityResponse, - path_params=path_params, - ) - + return self.get("/api/v2/feeds/feed_visibilities/{name}", GetFeedVisibilityResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.update_feed_visibility") - def update_feed_visibility( - self, name: str, grants: Optional[Dict[str, List[str]]] = None - ) -> StreamResponse[UpdateFeedVisibilityResponse]: + def update_feed_visibility(self, name: str, grants: Optional[Dict[str, List[str]]] = None) -> StreamResponse[UpdateFeedVisibilityResponse]: path_params = { - "name": name, + "name": name, } json = UpdateFeedVisibilityRequest(grants=grants).to_dict() - return self.put( - "/api/v2/feeds/feed_visibilities/{name}", - UpdateFeedVisibilityResponse, - path_params=path_params, - json=json, - ) - + return self.put("/api/v2/feeds/feed_visibilities/{name}", UpdateFeedVisibilityResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.create_feeds_batch") - def create_feeds_batch( - self, feeds: List[FeedRequest], enrich_own_fields: Optional[bool] = None - ) -> StreamResponse[CreateFeedsBatchResponse]: - json = CreateFeedsBatchRequest( - feeds=feeds, enrich_own_fields=enrich_own_fields - ).to_dict() - return self.post( - "/api/v2/feeds/feeds/batch", CreateFeedsBatchResponse, json=json - ) - + def create_feeds_batch(self, feeds: List[FeedRequest], create_users: Optional[bool] = None, enrich_own_fields: Optional[bool] = None) -> StreamResponse[CreateFeedsBatchResponse]: + json = CreateFeedsBatchRequest(feeds=feeds, create_users=create_users, enrich_own_fields=enrich_own_fields).to_dict() + return self.post("/api/v2/feeds/feeds/batch", CreateFeedsBatchResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.delete_feeds_batch") - def delete_feeds_batch( - self, - feeds: List[str], - hard_delete: Optional[bool] = None, - purge_user_activities: Optional[bool] = None, - ) -> StreamResponse[DeleteFeedsBatchResponse]: - json = DeleteFeedsBatchRequest( - feeds=feeds, - hard_delete=hard_delete, - purge_user_activities=purge_user_activities, - ).to_dict() - return self.post( - "/api/v2/feeds/feeds/delete", DeleteFeedsBatchResponse, json=json - ) - + def delete_feeds_batch(self, feeds: List[str], hard_delete: Optional[bool] = None, purge_user_activities: Optional[bool] = None) -> StreamResponse[DeleteFeedsBatchResponse]: + json = DeleteFeedsBatchRequest(feeds=feeds, hard_delete=hard_delete, purge_user_activities=purge_user_activities).to_dict() + return self.post("/api/v2/feeds/feeds/delete", DeleteFeedsBatchResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.own_batch") - def own_batch( - self, - feeds: List[str], - user_id: Optional[str] = None, - fields: Optional[List[str]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[OwnBatchResponse]: - json = OwnBatchRequest( - feeds=feeds, user_id=user_id, fields=fields, user=user - ).to_dict() + def own_batch(self, feeds: List[str], user_id: Optional[str] = None, fields: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[OwnBatchResponse]: + json = OwnBatchRequest(feeds=feeds, user_id=user_id, fields=fields, user=user).to_dict() return self.post("/api/v2/feeds/feeds/own/batch", OwnBatchResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.query_feeds") - def query_feeds( - self, - enrich_own_fields: Optional[bool] = None, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - watch: Optional[bool] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryFeedsResponse]: - json = QueryFeedsRequest( - enrich_own_fields=enrich_own_fields, - limit=limit, - next=next, - prev=prev, - watch=watch, - sort=sort, - filter=filter, - ).to_dict() + def query_feeds(self, enrich_own_fields: Optional[bool] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, watch: Optional[bool] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryFeedsResponse]: + json = QueryFeedsRequest(enrich_own_fields=enrich_own_fields, limit=limit, next=next, prev=prev, watch=watch, sort=sort, filter=filter).to_dict() return self.post("/api/v2/feeds/feeds/query", QueryFeedsResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.get_feeds_rate_limits") - def get_feeds_rate_limits( - self, - endpoints: Optional[str] = None, - android: Optional[bool] = None, - ios: Optional[bool] = None, - web: Optional[bool] = None, - unity: Optional[bool] = None, - server_side: Optional[bool] = None, - ) -> StreamResponse[GetFeedsRateLimitsResponse]: - query_params = build_query_param( - endpoints=endpoints, - android=android, - ios=ios, - web=web, - unity=unity, - server_side=server_side, - ) - return self.get( - "/api/v2/feeds/feeds/rate_limits", - GetFeedsRateLimitsResponse, - query_params=query_params, - ) - + def get_feeds_rate_limits(self, endpoints: Optional[str] = None, android: Optional[bool] = None, ios: Optional[bool] = None, web: Optional[bool] = None, unity: Optional[bool] = None, server_side: Optional[bool] = None) -> StreamResponse[GetFeedsRateLimitsResponse]: + query_params = build_query_param(endpoints=endpoints, android=android, ios=ios, web=web, unity=unity, server_side=server_side) + return self.get("/api/v2/feeds/feeds/rate_limits", GetFeedsRateLimitsResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.feeds.update_follow") - def update_follow( - self, - source: str, - target: str, - activity_copy_limit: Optional[int] = None, - copy_custom_to_notification: Optional[bool] = None, - create_notification_activity: Optional[bool] = None, - create_users: Optional[bool] = None, - enrich_own_fields: Optional[bool] = None, - follower_role: Optional[str] = None, - push_preference: Optional[str] = None, - skip_push: Optional[bool] = None, - status: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - ) -> StreamResponse[UpdateFollowResponse]: - json = UpdateFollowRequest( - source=source, - target=target, - activity_copy_limit=activity_copy_limit, - copy_custom_to_notification=copy_custom_to_notification, - create_notification_activity=create_notification_activity, - create_users=create_users, - enrich_own_fields=enrich_own_fields, - follower_role=follower_role, - push_preference=push_preference, - skip_push=skip_push, - status=status, - custom=custom, - ).to_dict() + def update_follow(self, source: str, target: str, activity_copy_limit: Optional[int] = None, copy_custom_to_notification: Optional[bool] = None, create_notification_activity: Optional[bool] = None, create_users: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, follower_role: Optional[str] = None, push_preference: Optional[str] = None, skip_push: Optional[bool] = None, status: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[UpdateFollowResponse]: + json = UpdateFollowRequest(source=source, target=target, activity_copy_limit=activity_copy_limit, copy_custom_to_notification=copy_custom_to_notification, create_notification_activity=create_notification_activity, create_users=create_users, enrich_own_fields=enrich_own_fields, follower_role=follower_role, push_preference=push_preference, skip_push=skip_push, status=status, custom=custom).to_dict() return self.patch("/api/v2/feeds/follows", UpdateFollowResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.follow") - def follow( - self, - source: str, - target: str, - activity_copy_limit: Optional[int] = None, - copy_custom_to_notification: Optional[bool] = None, - create_notification_activity: Optional[bool] = None, - create_users: Optional[bool] = None, - enrich_own_fields: Optional[bool] = None, - push_preference: Optional[str] = None, - skip_push: Optional[bool] = None, - status: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - ) -> StreamResponse[SingleFollowResponse]: - json = FollowRequest( - source=source, - target=target, - activity_copy_limit=activity_copy_limit, - copy_custom_to_notification=copy_custom_to_notification, - create_notification_activity=create_notification_activity, - create_users=create_users, - enrich_own_fields=enrich_own_fields, - push_preference=push_preference, - skip_push=skip_push, - status=status, - custom=custom, - ).to_dict() + def follow(self, source: str, target: str, activity_copy_limit: Optional[int] = None, copy_custom_to_notification: Optional[bool] = None, create_notification_activity: Optional[bool] = None, create_users: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, push_preference: Optional[str] = None, skip_push: Optional[bool] = None, status: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[SingleFollowResponse]: + json = FollowRequest(source=source, target=target, activity_copy_limit=activity_copy_limit, copy_custom_to_notification=copy_custom_to_notification, create_notification_activity=create_notification_activity, create_users=create_users, enrich_own_fields=enrich_own_fields, push_preference=push_preference, skip_push=skip_push, status=status, custom=custom).to_dict() return self.post("/api/v2/feeds/follows", SingleFollowResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.accept_follow") - def accept_follow( - self, source: str, target: str, follower_role: Optional[str] = None - ) -> StreamResponse[AcceptFollowResponse]: - json = AcceptFollowRequest( - source=source, target=target, follower_role=follower_role - ).to_dict() - return self.post( - "/api/v2/feeds/follows/accept", AcceptFollowResponse, json=json - ) - + def accept_follow(self, source: str, target: str, follower_role: Optional[str] = None) -> StreamResponse[AcceptFollowResponse]: + json = AcceptFollowRequest(source=source, target=target, follower_role=follower_role).to_dict() + return self.post("/api/v2/feeds/follows/accept", AcceptFollowResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.follow_batch") - def follow_batch( - self, - follows: List[FollowRequest], - create_users: Optional[bool] = None, - enrich_own_fields: Optional[bool] = None, - ) -> StreamResponse[FollowBatchResponse]: - json = FollowBatchRequest( - follows=follows, - create_users=create_users, - enrich_own_fields=enrich_own_fields, - ).to_dict() + def follow_batch(self, follows: List[FollowRequest], create_users: Optional[bool] = None, enrich_own_fields: Optional[bool] = None) -> StreamResponse[FollowBatchResponse]: + json = FollowBatchRequest(follows=follows, create_users=create_users, enrich_own_fields=enrich_own_fields).to_dict() return self.post("/api/v2/feeds/follows/batch", FollowBatchResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.get_or_create_follows") - def get_or_create_follows( - self, - follows: List[FollowRequest], - create_users: Optional[bool] = None, - enrich_own_fields: Optional[bool] = None, - ) -> StreamResponse[FollowBatchResponse]: - json = FollowBatchRequest( - follows=follows, - create_users=create_users, - enrich_own_fields=enrich_own_fields, - ).to_dict() - return self.post( - "/api/v2/feeds/follows/batch/upsert", FollowBatchResponse, json=json - ) - + def get_or_create_follows(self, follows: List[FollowRequest], create_users: Optional[bool] = None, enrich_own_fields: Optional[bool] = None) -> StreamResponse[FollowBatchResponse]: + json = FollowBatchRequest(follows=follows, create_users=create_users, enrich_own_fields=enrich_own_fields).to_dict() + return self.post("/api/v2/feeds/follows/batch/upsert", FollowBatchResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.query_follows") - def query_follows( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryFollowsResponse]: - json = QueryFollowsRequest( - limit=limit, next=next, prev=prev, sort=sort, filter=filter - ).to_dict() + def query_follows(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryFollowsResponse]: + json = QueryFollowsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() return self.post("/api/v2/feeds/follows/query", QueryFollowsResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.reject_follow") - def reject_follow( - self, source: str, target: str - ) -> StreamResponse[RejectFollowResponse]: + def reject_follow(self, source: str, target: str) -> StreamResponse[RejectFollowResponse]: json = RejectFollowRequest(source=source, target=target).to_dict() - return self.post( - "/api/v2/feeds/follows/reject", RejectFollowResponse, json=json - ) - + return self.post("/api/v2/feeds/follows/reject", RejectFollowResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.get_or_create_follow") - def get_or_create_follow( - self, - source: str, - target: str, - activity_copy_limit: Optional[int] = None, - copy_custom_to_notification: Optional[bool] = None, - create_notification_activity: Optional[bool] = None, - create_users: Optional[bool] = None, - enrich_own_fields: Optional[bool] = None, - push_preference: Optional[str] = None, - skip_push: Optional[bool] = None, - status: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - ) -> StreamResponse[GetOrCreateFollowResponse]: - json = FollowRequest( - source=source, - target=target, - activity_copy_limit=activity_copy_limit, - copy_custom_to_notification=copy_custom_to_notification, - create_notification_activity=create_notification_activity, - create_users=create_users, - enrich_own_fields=enrich_own_fields, - push_preference=push_preference, - skip_push=skip_push, - status=status, - custom=custom, - ).to_dict() - return self.post( - "/api/v2/feeds/follows/upsert", GetOrCreateFollowResponse, json=json - ) - + def get_or_create_follow(self, source: str, target: str, activity_copy_limit: Optional[int] = None, copy_custom_to_notification: Optional[bool] = None, create_notification_activity: Optional[bool] = None, create_users: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, push_preference: Optional[str] = None, skip_push: Optional[bool] = None, status: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[GetOrCreateFollowResponse]: + json = FollowRequest(source=source, target=target, activity_copy_limit=activity_copy_limit, copy_custom_to_notification=copy_custom_to_notification, create_notification_activity=create_notification_activity, create_users=create_users, enrich_own_fields=enrich_own_fields, push_preference=push_preference, skip_push=skip_push, status=status, custom=custom).to_dict() + return self.post("/api/v2/feeds/follows/upsert", GetOrCreateFollowResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.unfollow") - def unfollow( - self, - source: str, - target: str, - delete_notification_activity: Optional[bool] = None, - keep_history: Optional[bool] = None, - enrich_own_fields: Optional[bool] = None, - ) -> StreamResponse[UnfollowResponse]: - query_params = build_query_param( - delete_notification_activity=delete_notification_activity, - keep_history=keep_history, - enrich_own_fields=enrich_own_fields, - ) + def unfollow(self, source: str, target: str, delete_notification_activity: Optional[bool] = None, keep_history: Optional[bool] = None, enrich_own_fields: Optional[bool] = None) -> StreamResponse[UnfollowResponse]: + query_params = build_query_param(delete_notification_activity=delete_notification_activity, keep_history=keep_history, enrich_own_fields=enrich_own_fields) path_params = { - "source": source, - "target": target, + "source": source, "target": target, } - return self.delete( - "/api/v2/feeds/follows/{source}/{target}", - UnfollowResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/feeds/follows/{source}/{target}", UnfollowResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.create_membership_level") - def create_membership_level( - self, - id: str, - name: str, - description: Optional[str] = None, - priority: Optional[int] = None, - tags: Optional[List[str]] = None, - custom: Optional[Dict[str, object]] = None, - ) -> StreamResponse[CreateMembershipLevelResponse]: - json = CreateMembershipLevelRequest( - id=id, - name=name, - description=description, - priority=priority, - tags=tags, - custom=custom, - ).to_dict() - return self.post( - "/api/v2/feeds/membership_levels", CreateMembershipLevelResponse, json=json - ) - + def create_membership_level(self, id: str, name: str, description: Optional[str] = None, priority: Optional[int] = None, tags: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[CreateMembershipLevelResponse]: + json = CreateMembershipLevelRequest(id=id, name=name, description=description, priority=priority, tags=tags, custom=custom).to_dict() + return self.post("/api/v2/feeds/membership_levels", CreateMembershipLevelResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.query_membership_levels") - def query_membership_levels( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryMembershipLevelsResponse]: - json = QueryMembershipLevelsRequest( - limit=limit, next=next, prev=prev, sort=sort, filter=filter - ).to_dict() - return self.post( - "/api/v2/feeds/membership_levels/query", - QueryMembershipLevelsResponse, - json=json, - ) - + def query_membership_levels(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryMembershipLevelsResponse]: + json = QueryMembershipLevelsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() + return self.post("/api/v2/feeds/membership_levels/query", QueryMembershipLevelsResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.delete_membership_level") def delete_membership_level(self, id: str) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - return self.delete( - "/api/v2/feeds/membership_levels/{id}", Response, path_params=path_params - ) - + return self.delete("/api/v2/feeds/membership_levels/{id}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.update_membership_level") - def update_membership_level( - self, - id: str, - description: Optional[str] = None, - name: Optional[str] = None, - priority: Optional[int] = None, - tags: Optional[List[str]] = None, - custom: Optional[Dict[str, object]] = None, - ) -> StreamResponse[UpdateMembershipLevelResponse]: + def update_membership_level(self, id: str, description: Optional[str] = None, name: Optional[str] = None, priority: Optional[int] = None, tags: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[UpdateMembershipLevelResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateMembershipLevelRequest( - description=description, - name=name, - priority=priority, - tags=tags, - custom=custom, - ).to_dict() - return self.patch( - "/api/v2/feeds/membership_levels/{id}", - UpdateMembershipLevelResponse, - path_params=path_params, - json=json, - ) - + json = UpdateMembershipLevelRequest(description=description, name=name, priority=priority, tags=tags, custom=custom).to_dict() + return self.patch("/api/v2/feeds/membership_levels/{id}", UpdateMembershipLevelResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.query_revision_history") - def query_revision_history( - self, - filter: Dict[str, object], - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - ) -> StreamResponse[QueryRevisionHistoryResponse]: - json = QueryRevisionHistoryRequest( - filter=filter, limit=limit, next=next, prev=prev, sort=sort - ).to_dict() - return self.post( - "/api/v2/feeds/revisions/query", QueryRevisionHistoryResponse, json=json - ) - + def query_revision_history(self, filter: Dict[str, object], limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None) -> StreamResponse[QueryRevisionHistoryResponse]: + json = QueryRevisionHistoryRequest(filter=filter, limit=limit, next=next, prev=prev, sort=sort).to_dict() + return self.post("/api/v2/feeds/revisions/query", QueryRevisionHistoryResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.query_feeds_usage_stats") - def query_feeds_usage_stats( - self, _from: Optional[str] = None, to: Optional[str] = None - ) -> StreamResponse[QueryFeedsUsageStatsResponse]: + def query_feeds_usage_stats(self, _from: Optional[str] = None, to: Optional[str] = None) -> StreamResponse[QueryFeedsUsageStatsResponse]: json = QueryFeedsUsageStatsRequest(_from=_from, to=to).to_dict() - return self.post( - "/api/v2/feeds/stats/usage", QueryFeedsUsageStatsResponse, json=json - ) - + return self.post("/api/v2/feeds/stats/usage", QueryFeedsUsageStatsResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.unfollow_batch") - def unfollow_batch( - self, - follows: List[UnfollowPair], - delete_notification_activity: Optional[bool] = None, - enrich_own_fields: Optional[bool] = None, - ) -> StreamResponse[UnfollowBatchResponse]: - json = UnfollowBatchRequest( - follows=follows, - delete_notification_activity=delete_notification_activity, - enrich_own_fields=enrich_own_fields, - ).to_dict() - return self.post( - "/api/v2/feeds/unfollow/batch", UnfollowBatchResponse, json=json - ) - + def unfollow_batch(self, follows: List[UnfollowPair], delete_notification_activity: Optional[bool] = None, enrich_own_fields: Optional[bool] = None) -> StreamResponse[UnfollowBatchResponse]: + json = UnfollowBatchRequest(follows=follows, delete_notification_activity=delete_notification_activity, enrich_own_fields=enrich_own_fields).to_dict() + return self.post("/api/v2/feeds/unfollow/batch", UnfollowBatchResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.get_or_create_unfollows") - def get_or_create_unfollows( - self, - follows: List[UnfollowPair], - delete_notification_activity: Optional[bool] = None, - enrich_own_fields: Optional[bool] = None, - ) -> StreamResponse[UnfollowBatchResponse]: - json = UnfollowBatchRequest( - follows=follows, - delete_notification_activity=delete_notification_activity, - enrich_own_fields=enrich_own_fields, - ).to_dict() - return self.post( - "/api/v2/feeds/unfollow/batch/upsert", UnfollowBatchResponse, json=json - ) - + def get_or_create_unfollows(self, follows: List[UnfollowPair], delete_notification_activity: Optional[bool] = None, enrich_own_fields: Optional[bool] = None) -> StreamResponse[UnfollowBatchResponse]: + json = UnfollowBatchRequest(follows=follows, delete_notification_activity=delete_notification_activity, enrich_own_fields=enrich_own_fields).to_dict() + return self.post("/api/v2/feeds/unfollow/batch/upsert", UnfollowBatchResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.get_or_create_unfollow") - def get_or_create_unfollow( - self, - source: str, - target: str, - delete_notification_activity: Optional[bool] = None, - enrich_own_fields: Optional[bool] = None, - keep_history: Optional[bool] = None, - ) -> StreamResponse[GetOrCreateUnfollowResponse]: - json = GetOrCreateUnfollowRequest( - source=source, - target=target, - delete_notification_activity=delete_notification_activity, - enrich_own_fields=enrich_own_fields, - keep_history=keep_history, - ).to_dict() - return self.post( - "/api/v2/feeds/unfollow/upsert", GetOrCreateUnfollowResponse, json=json - ) - + def get_or_create_unfollow(self, source: str, target: str, delete_notification_activity: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, keep_history: Optional[bool] = None) -> StreamResponse[GetOrCreateUnfollowResponse]: + json = GetOrCreateUnfollowRequest(source=source, target=target, delete_notification_activity=delete_notification_activity, enrich_own_fields=enrich_own_fields, keep_history=keep_history).to_dict() + return self.post("/api/v2/feeds/unfollow/upsert", GetOrCreateUnfollowResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.delete_feed_user_data") - def delete_feed_user_data( - self, user_id: str, hard_delete: Optional[bool] = None - ) -> StreamResponse[DeleteFeedUserDataResponse]: + def delete_feed_user_data(self, user_id: str, hard_delete: Optional[bool] = None) -> StreamResponse[DeleteFeedUserDataResponse]: path_params = { - "user_id": user_id, + "user_id": user_id, } json = DeleteFeedUserDataRequest(hard_delete=hard_delete).to_dict() - return self.post( - "/api/v2/feeds/users/{user_id}/delete", - DeleteFeedUserDataResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/feeds/users/{user_id}/delete", DeleteFeedUserDataResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.feeds.export_feed_user_data") - def export_feed_user_data( - self, user_id: str - ) -> StreamResponse[ExportFeedUserDataResponse]: + def export_feed_user_data(self, user_id: str) -> StreamResponse[ExportFeedUserDataResponse]: path_params = { - "user_id": user_id, + "user_id": user_id, } - return self.post( - "/api/v2/feeds/users/{user_id}/export", - ExportFeedUserDataResponse, - path_params=path_params, - ) - + return self.post("/api/v2/feeds/users/{user_id}/export", ExportFeedUserDataResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.feeds.get_user_interests") - def get_user_interests( - self, user_id: str, limit: Optional[int] = None - ) -> StreamResponse[GetUserInterestsResponse]: + def get_user_interests(self, user_id: str, limit: Optional[int] = None) -> StreamResponse[GetUserInterestsResponse]: query_params = build_query_param(limit=limit) path_params = { - "user_id": user_id, + "user_id": user_id, } - return self.get( - "/api/v2/feeds/users/{user_id}/interests", - GetUserInterestsResponse, - query_params=query_params, - path_params=path_params, - ) + return self.get("/api/v2/feeds/users/{user_id}/interests", GetUserInterestsResponse, query_params=query_params, path_params=path_params) + \ No newline at end of file diff --git a/getstream/models/__init__.py b/getstream/models/__init__.py index 2efc3bb0..f3b8da95 100644 --- a/getstream/models/__init__.py +++ b/getstream/models/__init__.py @@ -2,7 +2,7 @@ from dataclasses import dataclass from dataclasses import field as dc_field from datetime import datetime -from typing import Dict, Final, List, NewType, Optional # noqa: F401, UP035 +from typing import Dict, Final, List, NewType, Optional from dataclasses_json import DataClassJsonMixin from dataclasses_json import config as dc_config @@ -13,34 +13,21 @@ @dataclass class AIAudioConfigRequest(DataClassJsonMixin): - profile: str | None = dc_field( - default=None, metadata=dc_config(field_name="profile") - ) - rules: "list[BodyguardRule] | None" = dc_field( - default=None, metadata=dc_config(field_name="rules") - ) - + profile: str | None = dc_field(default=None, metadata=dc_config(field_name="profile")) + rules: 'list[BodyguardRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) @dataclass class AIAudioConfigResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) profile: str = dc_field(metadata=dc_config(field_name="profile")) - rules: "list[BodyguardRule]" = dc_field(metadata=dc_config(field_name="rules")) - + rules: 'list[BodyguardRule]' = dc_field(metadata=dc_config(field_name="rules")) @dataclass class AIImageConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - ocr_rules: "list[OCRRule] | None" = dc_field( - default=None, metadata=dc_config(field_name="ocr_rules") - ) - rules: "list[AWSRekognitionRule] | None" = dc_field( - default=None, metadata=dc_config(field_name="rules") - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + ocr_rules: 'list[OCRRule] | None' = dc_field(default=None, metadata=dc_config(field_name="ocr_rules")) + rules: 'list[AWSRekognitionRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) @dataclass class AIImageLabelDefinition(DataClassJsonMixin): @@ -49,34 +36,32 @@ class AIImageLabelDefinition(DataClassJsonMixin): key: str = dc_field(metadata=dc_config(field_name="key")) label: str = dc_field(metadata=dc_config(field_name="label")) - @dataclass class AITextConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - profile: str | None = dc_field( - default=None, metadata=dc_config(field_name="profile") - ) - rules: "list[BodyguardRule] | None" = dc_field( - default=None, metadata=dc_config(field_name="rules") - ) - severity_rules: "list[BodyguardSeverityRule] | None" = dc_field( - default=None, metadata=dc_config(field_name="severity_rules") - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + profile: str | None = dc_field(default=None, metadata=dc_config(field_name="profile")) + rules: 'list[BodyguardRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) + severity_rules: 'list[BodyguardSeverityRule] | None' = dc_field(default=None, metadata=dc_config(field_name="severity_rules")) @dataclass class AIVideoConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - rules: "list[AWSRekognitionRule] | None" = dc_field( - default=None, metadata=dc_config(field_name="rules") - ) + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + provider: str | None = dc_field(default=None, metadata=dc_config(field_name="provider")) + rules: 'list[AWSRekognitionRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) + +@dataclass +class AIVideoConfigRequest(DataClassJsonMixin): + _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + rules: 'list[AWSRekognitionRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) +@dataclass +class AIVideoConfigResponse(DataClassJsonMixin): + enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) + rules: 'list[AWSRekognitionRule]' = dc_field(metadata=dc_config(field_name="rules")) + _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) @dataclass class APIError(DataClassJsonMixin): @@ -91,137 +76,78 @@ class APIError(DataClassJsonMixin): # Response HTTP status code status_code: int = dc_field(metadata=dc_config(field_name="StatusCode")) # Additional error-specific information - details: "list[int]" = dc_field(metadata=dc_config(field_name="details")) + details: 'list[int]' = dc_field(metadata=dc_config(field_name="details")) # Flag that indicates if the error is unrecoverable, requests that return unrecoverable errors should not be retried, this error only applies to the request that caused it - unrecoverable: bool | None = dc_field( - default=None, metadata=dc_config(field_name="unrecoverable") - ) + unrecoverable: bool | None = dc_field(default=None, metadata=dc_config(field_name="unrecoverable")) # Additional error info - exception_fields: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="exception_fields") - ) - + exception_fields: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="exception_fields")) @dataclass class APNConfig(DataClassJsonMixin): - auth_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="auth_key") - ) - auth_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="auth_type") - ) - bundle_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="bundle_id") - ) - development: bool | None = dc_field( - default=None, metadata=dc_config(field_name="development") - ) - disabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="Disabled") - ) + auth_key: str | None = dc_field(default=None, metadata=dc_config(field_name="auth_key")) + auth_type: str | None = dc_field(default=None, metadata=dc_config(field_name="auth_type")) + bundle_id: str | None = dc_field(default=None, metadata=dc_config(field_name="bundle_id")) + development: bool | None = dc_field(default=None, metadata=dc_config(field_name="development")) + disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="Disabled")) host: str | None = dc_field(default=None, metadata=dc_config(field_name="host")) key_id: str | None = dc_field(default=None, metadata=dc_config(field_name="key_id")) - notification_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="notification_template") - ) - p12_cert: str | None = dc_field( - default=None, metadata=dc_config(field_name="p12_cert") - ) - team_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="team_id") - ) - + notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="notification_template")) + p12_cert: str | None = dc_field(default=None, metadata=dc_config(field_name="p12_cert")) + team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="team_id")) @dataclass class APNConfigFields(DataClassJsonMixin): development: bool = dc_field(metadata=dc_config(field_name="development")) enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - auth_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="auth_key") - ) - auth_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="auth_type") - ) - bundle_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="bundle_id") - ) + auth_key: str | None = dc_field(default=None, metadata=dc_config(field_name="auth_key")) + auth_type: str | None = dc_field(default=None, metadata=dc_config(field_name="auth_type")) + bundle_id: str | None = dc_field(default=None, metadata=dc_config(field_name="bundle_id")) host: str | None = dc_field(default=None, metadata=dc_config(field_name="host")) key_id: str | None = dc_field(default=None, metadata=dc_config(field_name="key_id")) - notification_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="notification_template") - ) - p12_cert: str | None = dc_field( - default=None, metadata=dc_config(field_name="p12_cert") - ) - team_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="team_id") - ) - + notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="notification_template")) + p12_cert: str | None = dc_field(default=None, metadata=dc_config(field_name="p12_cert")) + team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="team_id")) @dataclass class APNS(DataClassJsonMixin): body: str = dc_field(metadata=dc_config(field_name="body")) title: str = dc_field(metadata=dc_config(field_name="title")) - content_available: int | None = dc_field( - default=None, metadata=dc_config(field_name="content-available") - ) - mutable_content: int | None = dc_field( - default=None, metadata=dc_config(field_name="mutable-content") - ) + content_available: int | None = dc_field(default=None, metadata=dc_config(field_name="content-available")) + mutable_content: int | None = dc_field(default=None, metadata=dc_config(field_name="mutable-content")) sound: str | None = dc_field(default=None, metadata=dc_config(field_name="sound")) - data: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="data") - ) - + data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) @dataclass class APNSPayload(DataClassJsonMixin): body: str | None = dc_field(default=None, metadata=dc_config(field_name="body")) - content_available: int | None = dc_field( - default=None, metadata=dc_config(field_name="content-available") - ) - mutable_content: int | None = dc_field( - default=None, metadata=dc_config(field_name="mutable-content") - ) + content_available: int | None = dc_field(default=None, metadata=dc_config(field_name="content-available")) + mutable_content: int | None = dc_field(default=None, metadata=dc_config(field_name="mutable-content")) sound: str | None = dc_field(default=None, metadata=dc_config(field_name="sound")) title: str | None = dc_field(default=None, metadata=dc_config(field_name="title")) - data: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="data") - ) - + data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) @dataclass class AWSRekognitionRule(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) label: str = dc_field(metadata=dc_config(field_name="label")) min_confidence: float = dc_field(metadata=dc_config(field_name="min_confidence")) - subclassifications: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="subclassifications") - ) - + subclassifications: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="subclassifications")) @dataclass class AbsentMetric(DataClassJsonMixin): metric: str = dc_field(metadata=dc_config(field_name="metric")) reason: str = dc_field(metadata=dc_config(field_name="reason")) - @dataclass class AcceptFeedMemberInviteRequest(DataClassJsonMixin): - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class AcceptFeedMemberInviteResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - member: "FeedMemberResponse" = dc_field(metadata=dc_config(field_name="member")) - + member: 'FeedMemberResponse' = dc_field(metadata=dc_config(field_name="member")) @dataclass class AcceptFollowRequest(DataClassJsonMixin): @@ -229,17 +155,13 @@ class AcceptFollowRequest(DataClassJsonMixin): source: str = dc_field(metadata=dc_config(field_name="source")) # Fully qualified ID of the target feed target: str = dc_field(metadata=dc_config(field_name="target")) - # Optional role for the follower in the follow relationship - follower_role: str | None = dc_field( - default=None, metadata=dc_config(field_name="follower_role") - ) - + # Optional role for the follower in the follow relationship. Server-side only. Either a built-in ('feed_follower' (the default) or 'feed_member_viewer') or any role your app has defined; grants are not inspected. + follower_role: str | None = dc_field(default=None, metadata=dc_config(field_name="follower_role")) @dataclass class AcceptFollowResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) - + follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) @dataclass class Action(DataClassJsonMixin): @@ -249,18 +171,10 @@ class Action(DataClassJsonMixin): style: str | None = dc_field(default=None, metadata=dc_config(field_name="style")) value: str | None = dc_field(default=None, metadata=dc_config(field_name="value")) - @dataclass class ActionLogResponse(DataClassJsonMixin): # Timestamp when the action was taken - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Unique identifier of the action log id: str = dc_field(metadata=dc_config(field_name="id")) # Reason for the moderation action @@ -276,46 +190,27 @@ class ActionLogResponse(DataClassJsonMixin): ai_providers: list[str] = dc_field(metadata=dc_config(field_name="ai_providers")) # Additional metadata about the action custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - review_queue_item: "ReviewQueueItemResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="review_queue_item") - ) + review_queue_item: 'ReviewQueueItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="review_queue_item")) # User response object - target_user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="target_user") - ) + target_user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="target_user")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ActionSequence(DataClassJsonMixin): action: str | None = dc_field(default=None, metadata=dc_config(field_name="action")) blur: bool | None = dc_field(default=None, metadata=dc_config(field_name="blur")) - cooldown_period: int | None = dc_field( - default=None, metadata=dc_config(field_name="cooldown_period") - ) - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - time_window: int | None = dc_field( - default=None, metadata=dc_config(field_name="time_window") - ) - warning: bool | None = dc_field( - default=None, metadata=dc_config(field_name="warning") - ) - warning_text: str | None = dc_field( - default=None, metadata=dc_config(field_name="warning_text") - ) - + cooldown_period: int | None = dc_field(default=None, metadata=dc_config(field_name="cooldown_period")) + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + time_window: int | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) + warning: bool | None = dc_field(default=None, metadata=dc_config(field_name="warning")) + warning_text: str | None = dc_field(default=None, metadata=dc_config(field_name="warning_text")) @dataclass class ActiveCallsBitrateStats(DataClassJsonMixin): p10: float = dc_field(metadata=dc_config(field_name="p10")) p50: float = dc_field(metadata=dc_config(field_name="p50")) - @dataclass class ActiveCallsFPSStats(DataClassJsonMixin): p05: float = dc_field(metadata=dc_config(field_name="p05")) @@ -323,146 +218,65 @@ class ActiveCallsFPSStats(DataClassJsonMixin): p50: float = dc_field(metadata=dc_config(field_name="p50")) p90: float = dc_field(metadata=dc_config(field_name="p90")) - @dataclass class ActiveCallsLatencyStats(DataClassJsonMixin): p50: float = dc_field(metadata=dc_config(field_name="p50")) p90: float = dc_field(metadata=dc_config(field_name="p90")) - @dataclass class ActiveCallsMetrics(DataClassJsonMixin): - join_call_api: "JoinCallAPIMetrics | None" = dc_field( - default=None, metadata=dc_config(field_name="join_call_api") - ) - publishers: "PublishersMetrics | None" = dc_field( - default=None, metadata=dc_config(field_name="publishers") - ) - subscribers: "SubscribersMetrics | None" = dc_field( - default=None, metadata=dc_config(field_name="subscribers") - ) - + join_call_api: 'JoinCallAPIMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="join_call_api")) + publishers: 'PublishersMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="publishers")) + subscribers: 'SubscribersMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="subscribers")) @dataclass class ActiveCallsResolutionStats(DataClassJsonMixin): p10: float = dc_field(metadata=dc_config(field_name="p10")) p50: float = dc_field(metadata=dc_config(field_name="p50")) - @dataclass class ActiveCallsSummary(DataClassJsonMixin): active_calls: int = dc_field(metadata=dc_config(field_name="active_calls")) - active_publishers: int = dc_field( - metadata=dc_config(field_name="active_publishers") - ) - active_subscribers: int = dc_field( - metadata=dc_config(field_name="active_subscribers") - ) + active_publishers: int = dc_field(metadata=dc_config(field_name="active_publishers")) + active_subscribers: int = dc_field(metadata=dc_config(field_name="active_subscribers")) participants: int = dc_field(metadata=dc_config(field_name="participants")) - @dataclass class ActivityAddedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.activity.added" in this case - type: str = dc_field( - default="feeds.activity.added", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.activity.added", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ActivityDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.activity.deleted" in this case - type: str = dc_field( - default="feeds.activity.deleted", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.activity.deleted", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ActivityFeedbackEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - activity_feedback: "ActivityFeedbackEventPayload" = dc_field( - metadata=dc_config(field_name="activity_feedback") - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + activity_feedback: 'ActivityFeedbackEventPayload' = dc_field(metadata=dc_config(field_name="activity_feedback")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.activity.feedback" in this case - type: str = dc_field( - default="feeds.activity.feedback", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.activity.feedback", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ActivityFeedbackEventPayload(DataClassJsonMixin): @@ -471,49 +285,25 @@ class ActivityFeedbackEventPayload(DataClassJsonMixin): # The activity that received feedback activity_id: str = dc_field(metadata=dc_config(field_name="activity_id")) # When the feedback was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # When the feedback was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The feedback value (true/false) value: str = dc_field(metadata=dc_config(field_name="value")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) @dataclass class ActivityFeedbackRequest(DataClassJsonMixin): # Whether to hide this activity hide: bool | None = dc_field(default=None, metadata=dc_config(field_name="hide")) # Whether to show less content like this - show_less: bool | None = dc_field( - default=None, metadata=dc_config(field_name="show_less") - ) + show_less: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_less")) # Whether to show more content like this - show_more: bool | None = dc_field( - default=None, metadata=dc_config(field_name="show_more") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + show_more: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_more")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ActivityFeedbackResponse(DataClassJsonMixin): @@ -521,297 +311,129 @@ class ActivityFeedbackResponse(DataClassJsonMixin): activity_id: str = dc_field(metadata=dc_config(field_name="activity_id")) duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class ActivityFilterConfig(DataClassJsonMixin): # When true, activities authored by the feed owner are excluded from feed reads - exclude_owner_activities: bool | None = dc_field( - default=None, metadata=dc_config(field_name="exclude_owner_activities") - ) - + exclude_owner_activities: bool | None = dc_field(default=None, metadata=dc_config(field_name="exclude_owner_activities")) @dataclass class ActivityMarkEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.activity.marked" in this case - type: str = dc_field( - default="feeds.activity.marked", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) + type: str = dc_field(default="feeds.activity.marked", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) # Whether all activities were marked as read - mark_all_read: bool | None = dc_field( - default=None, metadata=dc_config(field_name="mark_all_read") - ) + mark_all_read: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_all_read")) # Whether all activities were marked as seen - mark_all_seen: bool | None = dc_field( - default=None, metadata=dc_config(field_name="mark_all_seen") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + mark_all_seen: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_all_seen")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The IDs of activities marked as read - mark_read: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mark_read") - ) + mark_read: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mark_read")) # The IDs of activities marked as seen - mark_seen: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mark_seen") - ) + mark_seen: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mark_seen")) # The IDs of activities marked as watched - mark_watched: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mark_watched") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + mark_watched: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mark_watched")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ActivityPinResponse(DataClassJsonMixin): # When the pin was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # ID of the feed where activity is pinned feed: str = dc_field(metadata=dc_config(field_name="feed")) # When the pin was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) @dataclass class ActivityPinnedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The ID of the feed fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - pinned_activity: "PinActivityResponse" = dc_field( - metadata=dc_config(field_name="pinned_activity") - ) + pinned_activity: 'PinActivityResponse' = dc_field(metadata=dc_config(field_name="pinned_activity")) # The type of event: "feeds.activity.pinned" in this case - type: str = dc_field( - default="feeds.activity.pinned", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) + type: str = dc_field(default="feeds.activity.pinned", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) +@dataclass +class ActivityProcessingConfig(DataClassJsonMixin): + # When set, the LLM activity processors may only write interest tags from this list. Tags are matched literally after lower-casing and trimming, so a generic vocabulary matches more often than in-house terms. Mutually exclusive with blocked_tags. + allowed_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_tags")) + # Interest tags the LLM activity processors are never allowed to write. Mutually exclusive with allowed_tags. + blocked_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="blocked_tags")) @dataclass class ActivityProcessorConfig(DataClassJsonMixin): # Type of activity processor (required) type: str = dc_field(metadata=dc_config(field_name="type")) # Minimum number of characters the activity text must have before this processor runs. 0 (the default) disables the check. Only applies to text_interest_tags. - min_text_length: int | None = dc_field( - default=None, metadata=dc_config(field_name="min_text_length") - ) + min_text_length: int | None = dc_field(default=None, metadata=dc_config(field_name="min_text_length")) # Minimum number of words the activity text must have before this processor runs. 0 (the default) disables the check. Only applies to text_interest_tags. Words are whitespace-separated, so scripts written without word spacing (Chinese, Japanese, Thai) always count as 1 word regardless of length — use min_text_length for those. - min_word_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="min_word_count") - ) - + min_word_count: int | None = dc_field(default=None, metadata=dc_config(field_name="min_word_count")) @dataclass class ActivityReactionAddedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction: "FeedsReactionResponse" = dc_field( - metadata=dc_config(field_name="reaction") - ) + reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) # The type of event: "feeds.activity.reaction.added" in this case - type: str = dc_field( - default="feeds.activity.reaction.added", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.activity.reaction.added", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ActivityReactionDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction: "FeedsReactionResponse" = dc_field( - metadata=dc_config(field_name="reaction") - ) + reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) # The type of the reaction that was removed - type: str = dc_field( - default="feeds.activity.reaction.deleted", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.activity.reaction.deleted", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ActivityReactionUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction: "FeedsReactionResponse" = dc_field( - metadata=dc_config(field_name="reaction") - ) + reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) # The type of event: "feeds.activity.reaction.updated" in this case - type: str = dc_field( - default="feeds.activity.reaction.updated", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.activity.reaction.updated", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ActivityRemovedFromFeedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.activity.removed_from_feed" in this case - type: str = dc_field( - default="feeds.activity.removed_from_feed", - metadata=dc_config(field_name="type"), - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.activity.removed_from_feed", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ActivityRequest(DataClassJsonMixin): @@ -821,89 +443,48 @@ class ActivityRequest(DataClassJsonMixin): feeds: list[str] = dc_field(metadata=dc_config(field_name="feeds")) # Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field( - default=None, metadata=dc_config(field_name="copy_custom_to_notification") - ) + copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) # Whether to create notification activities for mentioned users - create_notification_activity: bool | None = dc_field( - default=None, metadata=dc_config(field_name="create_notification_activity") - ) + create_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_notification_activity")) # Expiration time for the activity - expires_at: str | None = dc_field( - default=None, metadata=dc_config(field_name="expires_at") - ) + expires_at: str | None = dc_field(default=None, metadata=dc_config(field_name="expires_at")) # Optional ID for the activity id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # ID of parent activity for replies/comments - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) # ID of a poll to attach to activity - poll_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="poll_id") - ) + poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) # Controls who can add comments/replies to this activity. One of: everyone, people_i_follow, nobody - restrict_replies: str | None = dc_field( - default=None, metadata=dc_config(field_name="restrict_replies") - ) + restrict_replies: str | None = dc_field(default=None, metadata=dc_config(field_name="restrict_replies")) # Whether to skip URL enrichment for the activity - skip_enrich_url: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_enrich_url") - ) + skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) # Whether to skip push notifications - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) # Text content of the activity text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) # ID of the user creating the activity - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Visibility setting for the activity. One of: public, private, tag - visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="visibility") - ) + visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility")) # If visibility is 'tag', this is the tag name and is required - visibility_tag: str | None = dc_field( - default=None, metadata=dc_config(field_name="visibility_tag") - ) + visibility_tag: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility_tag")) # List of attachments for the activity - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) # Collections that this activity references - collection_refs: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="collection_refs") - ) + collection_refs: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="collection_refs")) # Collections to create or update as part of this request, so an activity and the collections it references can be written in one call. Their refs (name:id) are added to collection_refs automatically; you do not need to restate them, and they count toward the same per-activity collection-reference limit, which is the effective cap here. A collection that already exists has its custom data updated. Use collection_refs instead when the collection already exists and you are only referencing it, which requires no collection permissions. - collections: "list[CollectionRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="collections") - ) + collections: 'list[CollectionRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="collections")) # Tags for filtering activities - filter_tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_tags") - ) + filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) # Tags for indicating user interests - interest_tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="interest_tags") - ) + interest_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="interest_tags")) # List of users mentioned in the activity - mentioned_user_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_user_ids") - ) + mentioned_user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_user_ids")) # Custom data for the activity - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - location: "Location | None" = dc_field( - default=None, metadata=dc_config(field_name="location") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) # Additional data for search indexing - search_data: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="search_data") - ) - + search_data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="search_data")) @dataclass class ActivityResponse(DataClassJsonMixin): @@ -912,14 +493,7 @@ class ActivityResponse(DataClassJsonMixin): # Number of comments on the activity comment_count: int = dc_field(metadata=dc_config(field_name="comment_count")) # When the activity was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # If this activity is hidden by this user (using activity feedback) hidden: bool = dc_field(metadata=dc_config(field_name="hidden")) # Unique identifier for the activity @@ -939,24 +513,13 @@ class ActivityResponse(DataClassJsonMixin): # Type of activity type: str = dc_field(metadata=dc_config(field_name="type")) # When the activity was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Visibility setting for the activity. One of: public, private, tag visibility: str = dc_field(metadata=dc_config(field_name="visibility")) # Media attachments for the activity - attachments: "list[Attachment]" = dc_field( - metadata=dc_config(field_name="attachments") - ) + attachments: 'list[Attachment]' = dc_field(metadata=dc_config(field_name="attachments")) # Latest 5 comments of this activity (comment replies excluded) - comments: "list[CommentResponse]" = dc_field( - metadata=dc_config(field_name="comments") - ) + comments: 'list[CommentResponse]' = dc_field(metadata=dc_config(field_name="comments")) # List of feed IDs containing this activity feeds: list[str] = dc_field(metadata=dc_config(field_name="feeds")) # Tags for filtering @@ -964,305 +527,130 @@ class ActivityResponse(DataClassJsonMixin): # Tags for user interests interest_tags: list[str] = dc_field(metadata=dc_config(field_name="interest_tags")) # Recent reactions to the activity - latest_reactions: "list[FeedsReactionResponse]" = dc_field( - metadata=dc_config(field_name="latest_reactions") - ) + latest_reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="latest_reactions")) # Users mentioned in the activity - mentioned_users: "list[UserResponse]" = dc_field( - metadata=dc_config(field_name="mentioned_users") - ) + mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) # Current user's bookmarks for this activity - own_bookmarks: "list[BookmarkResponse]" = dc_field( - metadata=dc_config(field_name="own_bookmarks") - ) + own_bookmarks: 'list[BookmarkResponse]' = dc_field(metadata=dc_config(field_name="own_bookmarks")) # Current user's reactions to this activity - own_reactions: "list[FeedsReactionResponse]" = dc_field( - metadata=dc_config(field_name="own_reactions") - ) + own_reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) # Enriched collection data referenced by this activity - collections: "dict[str, EnrichedCollectionResponse]" = dc_field( - metadata=dc_config(field_name="collections") - ) + collections: 'dict[str, EnrichedCollectionResponse]' = dc_field(metadata=dc_config(field_name="collections")) # Custom data for the activity custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Grouped reactions by type - reaction_groups: "dict[str, FeedsReactionGroupResponse]" = dc_field( - metadata=dc_config(field_name="reaction_groups") - ) + reaction_groups: 'dict[str, FeedsReactionGroupResponse]' = dc_field(metadata=dc_config(field_name="reaction_groups")) # Data for search indexing - search_data: dict[str, object] = dc_field( - metadata=dc_config(field_name="search_data") - ) + search_data: dict[str, object] = dc_field(metadata=dc_config(field_name="search_data")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # When the activity was deleted - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # When the activity was last edited - edited_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="edited_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + edited_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="edited_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # When the activity will expire - expires_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="expires_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + expires_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expires_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Total count of reactions from friends on this activity - friend_reaction_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="friend_reaction_count") - ) + friend_reaction_count: int | None = dc_field(default=None, metadata=dc_config(field_name="friend_reaction_count")) # Whether this activity has been read. Only set for feed groups with notification config (track_seen/track_read enabled). - is_read: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_read") - ) + is_read: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_read")) # Whether this activity has been seen. Only set for feed groups with notification config (track_seen/track_read enabled). - is_seen: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_seen") - ) - is_watched: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_watched") - ) - moderation_action: str | None = dc_field( - default=None, metadata=dc_config(field_name="moderation_action") - ) + is_seen: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_seen")) + is_watched: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_watched")) + moderation_action: str | None = dc_field(default=None, metadata=dc_config(field_name="moderation_action")) # Which activity selector provided this activity (e.g., 'following', 'popular', 'interest'). Only set when using multiple activity selectors with ranking. - selector_source: str | None = dc_field( - default=None, metadata=dc_config(field_name="selector_source") - ) + selector_source: str | None = dc_field(default=None, metadata=dc_config(field_name="selector_source")) # Text content of the activity text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) # If visibility is 'tag', this is the tag name - visibility_tag: str | None = dc_field( - default=None, metadata=dc_config(field_name="visibility_tag") - ) + visibility_tag: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility_tag")) # Reactions from users the current user follows or has mutual follows with - friend_reactions: "list[FeedsReactionResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="friend_reactions") - ) + friend_reactions: 'list[FeedsReactionResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="friend_reactions")) # Recent shares of the activity, one entry per share (org-gated) - latest_shares: "list[ShareResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="latest_shares") - ) - current_feed: "FeedResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="current_feed") - ) - i18n: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="i18n") - ) - location: "Location | None" = dc_field( - default=None, metadata=dc_config(field_name="location") - ) - metrics: "dict[str, int] | None" = dc_field( - default=None, metadata=dc_config(field_name="metrics") - ) - moderation: "ModerationV2Response | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation") - ) - notification_context: "NotificationContext | None" = dc_field( - default=None, metadata=dc_config(field_name="notification_context") - ) - parent: "ActivityResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="parent") - ) - poll: "PollResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="poll") - ) + latest_shares: 'list[ShareResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_shares")) + current_feed: 'FeedResponse | None' = dc_field(default=None, metadata=dc_config(field_name="current_feed")) + i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) + location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) + metrics: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="metrics")) + moderation: 'ModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) + notification_context: 'NotificationContext | None' = dc_field(default=None, metadata=dc_config(field_name="notification_context")) + parent: 'ActivityResponse | None' = dc_field(default=None, metadata=dc_config(field_name="parent")) + poll: 'PollResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll")) # Variable values used at ranking time. Only included when include_score_vars is enabled in enrichment options. - score_vars: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="score_vars") - ) - + score_vars: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="score_vars")) @dataclass class ActivityRestoredEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of the event - type: str = dc_field( - default="feeds.activity.restored", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.activity.restored", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ActivitySelectorConfig(DataClassJsonMixin): # Type of selector. One of: popular, proximity, following, current_feed, query, interest, follow_suggestion type: str = dc_field(metadata=dc_config(field_name="type")) # Time threshold for activity selection (string). Expected RFC3339 format (e.g., 2006-01-02T15:04:05Z07:00). Cannot be used together with cutoff_window - cutoff_time: str | None = dc_field( - default=None, metadata=dc_config(field_name="cutoff_time") - ) + cutoff_time: str | None = dc_field(default=None, metadata=dc_config(field_name="cutoff_time")) # Flexible relative time window for activity selection (e.g., '1h', '3d', '1y'). Activities older than this duration will be filtered out. Cannot be used together with cutoff_time - cutoff_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="cutoff_window") - ) + cutoff_window: str | None = dc_field(default=None, metadata=dc_config(field_name="cutoff_window")) # Minimum popularity threshold. For the 'popular' selector, omit to use the default (5); values below 1 are rejected - min_popularity: int | None = dc_field( - default=None, metadata=dc_config(field_name="min_popularity") - ) + min_popularity: int | None = dc_field(default=None, metadata=dc_config(field_name="min_popularity")) # Sort parameters for activity selection - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter for activity selection - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) - params: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="params") - ) - + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + params: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="params")) @dataclass class ActivitySelectorConfigResponse(DataClassJsonMixin): # Type of selector type: str = dc_field(metadata=dc_config(field_name="type")) # Time threshold for activity selection (timestamp) - cutoff_time: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="cutoff_time", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + cutoff_time: datetime | None = dc_field(default=None, metadata=dc_config(field_name="cutoff_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Flexible relative time window for activity selection (e.g., '1h', '3d', '1y') - cutoff_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="cutoff_window") - ) + cutoff_window: str | None = dc_field(default=None, metadata=dc_config(field_name="cutoff_window")) # Minimum popularity threshold. For the 'popular' selector, values below 1 are normalized to the default (5) at read time. - min_popularity: int | None = dc_field( - default=None, metadata=dc_config(field_name="min_popularity") - ) + min_popularity: int | None = dc_field(default=None, metadata=dc_config(field_name="min_popularity")) # Sort parameters for activity selection - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter for activity selection - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) # Generic params for selector-specific configuration - params: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="params") - ) - + params: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="params")) @dataclass class ActivityUnpinnedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The ID of the feed fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - pinned_activity: "PinActivityResponse" = dc_field( - metadata=dc_config(field_name="pinned_activity") - ) + pinned_activity: 'PinActivityResponse' = dc_field(metadata=dc_config(field_name="pinned_activity")) # The type of event: "feeds.activity.unpinned" in this case - type: str = dc_field( - default="feeds.activity.unpinned", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.activity.unpinned", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ActivityUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of the event - type: str = dc_field( - default="feeds.activity.updated", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.activity.updated", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class AddActivityRequest(DataClassJsonMixin): @@ -1272,164 +660,90 @@ class AddActivityRequest(DataClassJsonMixin): feeds: list[str] = dc_field(metadata=dc_config(field_name="feeds")) # Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field( - default=None, metadata=dc_config(field_name="copy_custom_to_notification") - ) + copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) # Whether to create notification activities for mentioned users - create_notification_activity: bool | None = dc_field( - default=None, metadata=dc_config(field_name="create_notification_activity") - ) - create_users: bool | None = dc_field( - default=None, metadata=dc_config(field_name="create_users") - ) - enrich_own_fields: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enrich_own_fields") - ) + create_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_notification_activity")) + create_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_users")) + enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) # Expiration time for the activity - expires_at: str | None = dc_field( - default=None, metadata=dc_config(field_name="expires_at") - ) - force_moderation: bool | None = dc_field( - default=None, metadata=dc_config(field_name="force_moderation") - ) + expires_at: str | None = dc_field(default=None, metadata=dc_config(field_name="expires_at")) + force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) # Optional ID for the activity id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # ID of parent activity for replies/comments - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) # ID of a poll to attach to activity - poll_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="poll_id") - ) + poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) # Controls who can add comments/replies to this activity. One of: everyone, people_i_follow, nobody - restrict_replies: str | None = dc_field( - default=None, metadata=dc_config(field_name="restrict_replies") - ) + restrict_replies: str | None = dc_field(default=None, metadata=dc_config(field_name="restrict_replies")) # Whether to skip URL enrichment for the activity - skip_enrich_url: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_enrich_url") - ) + skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) # Whether to skip push notifications - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) # Text content of the activity text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) # ID of the user creating the activity - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Visibility setting for the activity. One of: public, private, tag - visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="visibility") - ) + visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility")) # If visibility is 'tag', this is the tag name and is required - visibility_tag: str | None = dc_field( - default=None, metadata=dc_config(field_name="visibility_tag") - ) + visibility_tag: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility_tag")) # List of attachments for the activity - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) # Collections that this activity references - collection_refs: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="collection_refs") - ) + collection_refs: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="collection_refs")) # Collections to create or update as part of this request, so an activity and the collections it references can be written in one call. Their refs (name:id) are added to collection_refs automatically; you do not need to restate them, and they count toward the same per-activity collection-reference limit, which is the effective cap here. A collection that already exists has its custom data updated. Use collection_refs instead when the collection already exists and you are only referencing it, which requires no collection permissions. - collections: "list[CollectionRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="collections") - ) + collections: 'list[CollectionRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="collections")) # Tags for filtering activities - filter_tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_tags") - ) + filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) # Tags for indicating user interests - interest_tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="interest_tags") - ) + interest_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="interest_tags")) # List of users mentioned in the activity - mentioned_user_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_user_ids") - ) + mentioned_user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_user_ids")) # Custom data for the activity - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - location: "Location | None" = dc_field( - default=None, metadata=dc_config(field_name="location") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) # Additional data for search indexing - search_data: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="search_data") - ) - + search_data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="search_data")) @dataclass class AddActivityResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) # Number of mention notification activities created for mentioned users - mention_notifications_created: int | None = dc_field( - default=None, metadata=dc_config(field_name="mention_notifications_created") - ) - + mention_notifications_created: int | None = dc_field(default=None, metadata=dc_config(field_name="mention_notifications_created")) @dataclass class AddBookmarkRequest(DataClassJsonMixin): # ID of the folder to add the bookmark to - folder_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="folder_id") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + folder_id: str | None = dc_field(default=None, metadata=dc_config(field_name="folder_id")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Custom data for the bookmark - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - new_folder: "AddFolderRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="new_folder") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + new_folder: 'AddFolderRequest | None' = dc_field(default=None, metadata=dc_config(field_name="new_folder")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class AddBookmarkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) - + bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) @dataclass class AddCommentBookmarkRequest(DataClassJsonMixin): # ID of the folder to add the bookmark to - folder_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="folder_id") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + folder_id: str | None = dc_field(default=None, metadata=dc_config(field_name="folder_id")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Custom data for the bookmark - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - new_folder: "AddFolderRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="new_folder") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + new_folder: 'AddFolderRequest | None' = dc_field(default=None, metadata=dc_config(field_name="new_folder")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class AddCommentBookmarkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) - + bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) @dataclass class AddCommentReactionRequest(DataClassJsonMixin): @@ -1437,164 +751,93 @@ class AddCommentReactionRequest(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) # Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field( - default=None, metadata=dc_config(field_name="copy_custom_to_notification") - ) + copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) # Whether to create a notification activity for this reaction - create_notification_activity: bool | None = dc_field( - default=None, metadata=dc_config(field_name="create_notification_activity") - ) + create_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_notification_activity")) # Whether to enforce unique reactions per user (remove other reaction types from the user when adding this one) - enforce_unique: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enforce_unique") - ) - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + enforce_unique: bool | None = dc_field(default=None, metadata=dc_config(field_name="enforce_unique")) + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Optional list of feeds to create a reference (share) activity of the commented-on activity in. The reference activity's type mirrors the reaction type. - target_feeds: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="target_feeds") - ) + target_feeds: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="target_feeds")) # Optional custom data to add to the reaction - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class AddCommentReactionResponse(DataClassJsonMixin): # Duration of the request duration: str = dc_field(metadata=dc_config(field_name="duration")) - comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) - reaction: "FeedsReactionResponse" = dc_field( - metadata=dc_config(field_name="reaction") - ) + comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) + reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) # Whether notification creation was accepted for asynchronous processing - notification_accepted: bool | None = dc_field( - default=None, metadata=dc_config(field_name="notification_accepted") - ) + notification_accepted: bool | None = dc_field(default=None, metadata=dc_config(field_name="notification_accepted")) # Deprecated. Mirrors notification_accepted; use notification_accepted for async enqueue status Deprecated: use notification_accepted # Deprecated - notification_created: bool | None = dc_field( - default=None, metadata=dc_config(field_name="notification_created") - ) + notification_created: bool | None = dc_field(default=None, metadata=dc_config(field_name="notification_created")) # ID of the async notification-creation task; poll GET /tasks/{id} for its status - notification_task_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="notification_task_id") - ) - reference_activity: "ActivityResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="reference_activity") - ) - + notification_task_id: str | None = dc_field(default=None, metadata=dc_config(field_name="notification_task_id")) + reference_activity: 'ActivityResponse | None' = dc_field(default=None, metadata=dc_config(field_name="reference_activity")) @dataclass class AddCommentRequest(DataClassJsonMixin): # Text content of the comment - comment: str | None = dc_field( - default=None, metadata=dc_config(field_name="comment") - ) + comment: str | None = dc_field(default=None, metadata=dc_config(field_name="comment")) # Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field( - default=None, metadata=dc_config(field_name="copy_custom_to_notification") - ) + copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) # Whether to create a notification activity for this comment - create_notification_activity: bool | None = dc_field( - default=None, metadata=dc_config(field_name="create_notification_activity") - ) + create_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_notification_activity")) # If true, forces moderation to run for server-side requests. By default, server-side requests skip moderation. Client-side requests always run moderation regardless of this field. - force_moderation: bool | None = dc_field( - default=None, metadata=dc_config(field_name="force_moderation") - ) + force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) # Optional custom ID for the comment (max 255 characters). If not provided, a UUID will be generated. id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # ID of the object to comment on. Required for root comments - object_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="object_id") - ) + object_id: str | None = dc_field(default=None, metadata=dc_config(field_name="object_id")) # Type of the object to comment on. Required for root comments - object_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="object_type") - ) + object_type: str | None = dc_field(default=None, metadata=dc_config(field_name="object_type")) # ID of parent comment for replies. When provided, object_id and object_type are automatically inherited from the parent comment. - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) # Whether to skip URL enrichment for this comment - skip_enrich_url: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_enrich_url") - ) - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Media attachments for the reply - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) # List of users mentioned in the reply - mentioned_user_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_user_ids") - ) + mentioned_user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_user_ids")) # Custom data for the comment - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class AddCommentResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) + comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) # Number of mention notification activities created for mentioned users - mention_notifications_created: int | None = dc_field( - default=None, metadata=dc_config(field_name="mention_notifications_created") - ) + mention_notifications_created: int | None = dc_field(default=None, metadata=dc_config(field_name="mention_notifications_created")) # Whether a notification activity was successfully created - notification_created: bool | None = dc_field( - default=None, metadata=dc_config(field_name="notification_created") - ) - + notification_created: bool | None = dc_field(default=None, metadata=dc_config(field_name="notification_created")) @dataclass class AddCommentsBatchRequest(DataClassJsonMixin): # List of comments to add - comments: "list[AddCommentRequest]" = dc_field( - metadata=dc_config(field_name="comments") - ) - + comments: 'list[AddCommentRequest]' = dc_field(metadata=dc_config(field_name="comments")) @dataclass class AddCommentsBatchResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of comments added - comments: "list[CommentResponse]" = dc_field( - metadata=dc_config(field_name="comments") - ) - + comments: 'list[CommentResponse]' = dc_field(metadata=dc_config(field_name="comments")) @dataclass class AddFolderRequest(DataClassJsonMixin): # Name of the folder name: str = dc_field(metadata=dc_config(field_name="name")) # Custom data for the folder - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class AddReactionRequest(DataClassJsonMixin): @@ -1602,245 +845,135 @@ class AddReactionRequest(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) # Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field( - default=None, metadata=dc_config(field_name="copy_custom_to_notification") - ) + copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) # Whether to create a notification activity for this reaction - create_notification_activity: bool | None = dc_field( - default=None, metadata=dc_config(field_name="create_notification_activity") - ) + create_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_notification_activity")) # Server-side only. If true, auto-creates the reacting user identified by user_id when they don't already exist. Default: false. - create_users: bool | None = dc_field( - default=None, metadata=dc_config(field_name="create_users") - ) + create_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_users")) # Whether to enforce unique reactions per user (remove other reaction types from the user when adding this one) - enforce_unique: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enforce_unique") - ) - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + enforce_unique: bool | None = dc_field(default=None, metadata=dc_config(field_name="enforce_unique")) + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Optional list of feeds to create a reference (share) activity of the original activity in. The reference activity's type mirrors the reaction type. - target_feeds: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="target_feeds") - ) + target_feeds: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="target_feeds")) # Custom data for the reaction - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class AddReactionResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) - reaction: "FeedsReactionResponse" = dc_field( - metadata=dc_config(field_name="reaction") - ) + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) # Whether notification creation was accepted for asynchronous processing - notification_accepted: bool | None = dc_field( - default=None, metadata=dc_config(field_name="notification_accepted") - ) + notification_accepted: bool | None = dc_field(default=None, metadata=dc_config(field_name="notification_accepted")) # Deprecated. Mirrors notification_accepted; use notification_accepted for async enqueue status Deprecated: use notification_accepted # Deprecated - notification_created: bool | None = dc_field( - default=None, metadata=dc_config(field_name="notification_created") - ) + notification_created: bool | None = dc_field(default=None, metadata=dc_config(field_name="notification_created")) # ID of the async notification-creation task; poll GET /tasks/{id} for its status - notification_task_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="notification_task_id") - ) - reference_activity: "ActivityResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="reference_activity") - ) - + notification_task_id: str | None = dc_field(default=None, metadata=dc_config(field_name="notification_task_id")) + reference_activity: 'ActivityResponse | None' = dc_field(default=None, metadata=dc_config(field_name="reference_activity")) @dataclass class AddSegmentTargetsRequest(DataClassJsonMixin): # Target IDs target_ids: list[str] = dc_field(metadata=dc_config(field_name="target_ids")) - @dataclass class AddUserGroupMembersRequest(DataClassJsonMixin): # List of user IDs to add as members member_ids: list[str] = dc_field(metadata=dc_config(field_name="member_ids")) # Whether to add the members as group admins. Defaults to false - as_admin: bool | None = dc_field( - default=None, metadata=dc_config(field_name="as_admin") - ) - team_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="team_id") - ) - + as_admin: bool | None = dc_field(default=None, metadata=dc_config(field_name="as_admin")) + team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="team_id")) @dataclass class AddUserGroupMembersResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - user_group: "UserGroupResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user_group") - ) - + user_group: 'UserGroupResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) @dataclass class AggregatedActivityResponse(DataClassJsonMixin): # Number of activities in this aggregation activity_count: int = dc_field(metadata=dc_config(field_name="activity_count")) # When the aggregation was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Grouping identifier group: str = dc_field(metadata=dc_config(field_name="group")) # Ranking score for this aggregation score: float = dc_field(metadata=dc_config(field_name="score")) # When the aggregation was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Number of unique users in this aggregation user_count: int = dc_field(metadata=dc_config(field_name="user_count")) # Whether this activity group has been truncated due to exceeding the group size limit - user_count_truncated: bool = dc_field( - metadata=dc_config(field_name="user_count_truncated") - ) + user_count_truncated: bool = dc_field(metadata=dc_config(field_name="user_count_truncated")) # List of activities in this aggregation - activities: "list[ActivityResponse]" = dc_field( - metadata=dc_config(field_name="activities") - ) + activities: 'list[ActivityResponse]' = dc_field(metadata=dc_config(field_name="activities")) # Whether this aggregated group has been read. Only set for feed groups with notification config (track_seen/track_read enabled). - is_read: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_read") - ) + is_read: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_read")) # Whether this aggregated group has been seen. Only set for feed groups with notification config (track_seen/track_read enabled). - is_seen: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_seen") - ) - is_watched: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_watched") - ) - + is_seen: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_seen")) + is_watched: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_watched")) @dataclass class AggregationConfig(DataClassJsonMixin): # Order of member activities inside each aggregated group for non-stories feeds: created_at_desc (newest first, default) or created_at_asc (oldest first). Stories feeds ignore this and always use oldest first. - activities_sort: str | None = dc_field( - default=None, metadata=dc_config(field_name="activities_sort") - ) + activities_sort: str | None = dc_field(default=None, metadata=dc_config(field_name="activities_sort")) # Format for activity aggregation format: str | None = dc_field(default=None, metadata=dc_config(field_name="format")) # Strategy for computing aggregated group scores from member activity scores when ranking is enabled. Valid values: sum, max, avg - score_strategy: str | None = dc_field( - default=None, metadata=dc_config(field_name="score_strategy") - ) - + score_strategy: str | None = dc_field(default=None, metadata=dc_config(field_name="score_strategy")) @dataclass class AnalyzeImageField(DataClassJsonMixin): # Per-image action: keep | flag | remove. action: str | None = dc_field(default=None, metadata=dc_config(field_name="action")) # Highest confidence (0–1) across detected classifications + sub-classifications. Convenience aggregate over the nested values in `classifications`. - confidence: float | None = dc_field( - default=None, metadata=dc_config(field_name="confidence") - ) + confidence: float | None = dc_field(default=None, metadata=dc_config(field_name="confidence")) # Set when moderation couldn't be determined for this image — action is absent. error: str | None = dc_field(default=None, metadata=dc_config(field_name="error")) # Echo of `content_ids[label]` when supplied on the request; omitted otherwise. id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # Hierarchical list of L1 (parent) classifications. Each entry: `name`, `confidence` (0–1), and nested `subclassifications` (L2 leaves with their own confidence). Resolved against the app's effective taxonomy (custom taxonomy when configured, otherwise the standard Bodyguard catalogue). - classifications: "list[Classification] | None" = dc_field( - default=None, metadata=dc_config(field_name="classifications") - ) + classifications: 'list[Classification] | None' = dc_field(default=None, metadata=dc_config(field_name="classifications")) # Flat list of Bodyguard OCR text-moderation labels on the image's extracted text (e.g. VULGARITY, PII). Each entry: `name` + `severity`. Populated when BG's OCR pipeline returned non-empty results for this image. - ocr_classifications: "list[Classification] | None" = dc_field( - default=None, metadata=dc_config(field_name="ocr_classifications") - ) - + ocr_classifications: 'list[Classification] | None' = dc_field(default=None, metadata=dc_config(field_name="ocr_classifications")) @dataclass class AnalyzeRequest(DataClassJsonMixin): # When true, the response carries no verdicts (status `pending`) and per-modality results arrive via `moderation.text_analysis.complete` and `moderation.image_analysis.complete` webhooks. Image moderation runs on a background worker; text moderation runs synchronously and is then delivered via webhook. - async_response: bool | None = dc_field( - default=None, metadata=dc_config(field_name="async_response") - ) + async_response: bool | None = dc_field(default=None, metadata=dc_config(field_name="async_response")) # Moderation policy key. Optional in stateful mode, required in stateless mode. - config_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="config_key") - ) + config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) # Original timestamp when the content was produced. Used as the `published_at` timestamp on per-content log entries that surface in `matched_contents` on aggregation-rule webhooks. - content_published_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="content_published_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + content_published_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="content_published_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # ID of the user who created the content. Required with entity_type + entity_id; omit all three for stateless mode. - entity_creator_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_creator_id") - ) + entity_creator_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_creator_id")) # Caller-supplied content identifier. Required with entity_type + entity_creator_id; omit all three for stateless mode. - entity_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_id") - ) + entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) # Caller-defined entity type. Required with entity_id + entity_creator_id; omit all three for stateless mode. - entity_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_type") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Optional map from a content label (either a `texts` key or an `image:` multipart label) to a caller-supplied per-instance identifier. Echoed on per-field verdicts and surfaced in `matched_contents` when an aggregation rule fires. - content_ids: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="content_ids") - ) + content_ids: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="content_ids")) # Arbitrary metadata surfaced in the dashboard. - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # Named text fields to moderate, keyed by caller label (e.g. title, description). - texts: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="texts") - ) + texts: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="texts")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class AnalyzeResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - # Always `complete` — /analyze is sync-only and the full verdict is in the response. + # `complete` (all fields screened), `partial` (mix of verdicts and per-field errors), or `pending` (async). status: str = dc_field(metadata=dc_config(field_name="status")) # Per-image moderation verdicts keyed by caller label. - images: "dict[str, AnalyzeImageField] | None" = dc_field( - default=None, metadata=dc_config(field_name="images") - ) + images: 'dict[str, AnalyzeImageField] | None' = dc_field(default=None, metadata=dc_config(field_name="images")) # Per-text-field moderation verdicts keyed by caller label. - texts: "dict[str, AnalyzeTextField] | None" = dc_field( - default=None, metadata=dc_config(field_name="texts") - ) - + texts: 'dict[str, AnalyzeTextField] | None' = dc_field(default=None, metadata=dc_config(field_name="texts")) @dataclass class AnalyzeTextField(DataClassJsonMixin): @@ -1851,92 +984,44 @@ class AnalyzeTextField(DataClassJsonMixin): # Echo of `content_ids[label]` when supplied on the request; omitted otherwise. id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # Detected language code. - language: str | None = dc_field( - default=None, metadata=dc_config(field_name="language") - ) + language: str | None = dc_field(default=None, metadata=dc_config(field_name="language")) # Aggregate severity across the field: LOW | MEDIUM | HIGH | CRITICAL. - severity: str | None = dc_field( - default=None, metadata=dc_config(field_name="severity") - ) + severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) # Flat list of detected Bodyguard text labels (e.g. INSULT, VULGARITY). Each entry carries `name` and `severity`. - classifications: "list[Classification] | None" = dc_field( - default=None, metadata=dc_config(field_name="classifications") - ) - + classifications: 'list[Classification] | None' = dc_field(default=None, metadata=dc_config(field_name="classifications")) @dataclass class AppResponseFields(DataClassJsonMixin): - allow_multi_user_devices: bool = dc_field( - metadata=dc_config(field_name="allow_multi_user_devices") - ) - async_url_enrich_enabled: bool = dc_field( - metadata=dc_config(field_name="async_url_enrich_enabled") - ) - auto_translation_enabled: bool = dc_field( - metadata=dc_config(field_name="auto_translation_enabled") - ) + allow_multi_user_devices: bool = dc_field(metadata=dc_config(field_name="allow_multi_user_devices")) + async_url_enrich_enabled: bool = dc_field(metadata=dc_config(field_name="async_url_enrich_enabled")) + auto_translation_enabled: bool = dc_field(metadata=dc_config(field_name="auto_translation_enabled")) campaign_enabled: bool = dc_field(metadata=dc_config(field_name="campaign_enabled")) - cdn_expiration_seconds: int = dc_field( - metadata=dc_config(field_name="cdn_expiration_seconds") - ) - custom_action_handler_url: str = dc_field( - metadata=dc_config(field_name="custom_action_handler_url") - ) - disable_auth_checks: bool = dc_field( - metadata=dc_config(field_name="disable_auth_checks") - ) - disable_permissions_checks: bool = dc_field( - metadata=dc_config(field_name="disable_permissions_checks") - ) - enforce_unique_usernames: str = dc_field( - metadata=dc_config(field_name="enforce_unique_usernames") - ) - feed_audit_logs_enabled: bool = dc_field( - metadata=dc_config(field_name="feed_audit_logs_enabled") - ) - guest_user_creation_disabled: bool = dc_field( - metadata=dc_config(field_name="guest_user_creation_disabled") - ) + cdn_expiration_seconds: int = dc_field(metadata=dc_config(field_name="cdn_expiration_seconds")) + custom_action_handler_url: str = dc_field(metadata=dc_config(field_name="custom_action_handler_url")) + disable_auth_checks: bool = dc_field(metadata=dc_config(field_name="disable_auth_checks")) + disable_permissions_checks: bool = dc_field(metadata=dc_config(field_name="disable_permissions_checks")) + enforce_unique_usernames: str = dc_field(metadata=dc_config(field_name="enforce_unique_usernames")) + feed_audit_logs_enabled: bool = dc_field(metadata=dc_config(field_name="feed_audit_logs_enabled")) + guest_user_creation_disabled: bool = dc_field(metadata=dc_config(field_name="guest_user_creation_disabled")) id: int = dc_field(metadata=dc_config(field_name="id")) - image_moderation_enabled: bool = dc_field( - metadata=dc_config(field_name="image_moderation_enabled") - ) - max_aggregated_activities_length: int = dc_field( - metadata=dc_config(field_name="max_aggregated_activities_length") - ) - member_custom_on_messages_enabled: bool = dc_field( - metadata=dc_config(field_name="member_custom_on_messages_enabled") - ) - moderation_audio_call_moderation_enabled: bool = dc_field( - metadata=dc_config(field_name="moderation_audio_call_moderation_enabled") - ) - moderation_enabled: bool = dc_field( - metadata=dc_config(field_name="moderation_enabled") - ) - moderation_llm_configurability_enabled: bool = dc_field( - metadata=dc_config(field_name="moderation_llm_configurability_enabled") - ) - moderation_multitenant_blocklist_enabled: bool = dc_field( - metadata=dc_config(field_name="moderation_multitenant_blocklist_enabled") - ) - moderation_video_call_moderation_enabled: bool = dc_field( - metadata=dc_config(field_name="moderation_video_call_moderation_enabled") - ) - moderation_webhook_url: str = dc_field( - metadata=dc_config(field_name="moderation_webhook_url") - ) - multi_tenant_enabled: bool = dc_field( - metadata=dc_config(field_name="multi_tenant_enabled") - ) + image_moderation_enabled: bool = dc_field(metadata=dc_config(field_name="image_moderation_enabled")) + max_aggregated_activities_length: int = dc_field(metadata=dc_config(field_name="max_aggregated_activities_length")) + member_custom_on_mentioned_users_enabled: bool = dc_field(metadata=dc_config(field_name="member_custom_on_mentioned_users_enabled")) + member_custom_on_messages_enabled: bool = dc_field(metadata=dc_config(field_name="member_custom_on_messages_enabled")) + member_custom_on_typing_events_enabled: bool = dc_field(metadata=dc_config(field_name="member_custom_on_typing_events_enabled")) + moderation_audio_call_moderation_enabled: bool = dc_field(metadata=dc_config(field_name="moderation_audio_call_moderation_enabled")) + moderation_enabled: bool = dc_field(metadata=dc_config(field_name="moderation_enabled")) + moderation_keyframe_video_enabled: bool = dc_field(metadata=dc_config(field_name="moderation_keyframe_video_enabled")) + moderation_llm_configurability_enabled: bool = dc_field(metadata=dc_config(field_name="moderation_llm_configurability_enabled")) + moderation_multitenant_blocklist_enabled: bool = dc_field(metadata=dc_config(field_name="moderation_multitenant_blocklist_enabled")) + moderation_video_call_moderation_enabled: bool = dc_field(metadata=dc_config(field_name="moderation_video_call_moderation_enabled")) + moderation_webhook_url: str = dc_field(metadata=dc_config(field_name="moderation_webhook_url")) + multi_tenant_enabled: bool = dc_field(metadata=dc_config(field_name="multi_tenant_enabled")) name: str = dc_field(metadata=dc_config(field_name="name")) organization: str = dc_field(metadata=dc_config(field_name="organization")) - permission_version: str = dc_field( - metadata=dc_config(field_name="permission_version") - ) + permission_version: str = dc_field(metadata=dc_config(field_name="permission_version")) placement: str = dc_field(metadata=dc_config(field_name="placement")) - reminders_interval: int = dc_field( - metadata=dc_config(field_name="reminders_interval") - ) + reminders_interval: int = dc_field(metadata=dc_config(field_name="reminders_interval")) sns_key: str = dc_field(metadata=dc_config(field_name="sns_key")) sns_secret: str = dc_field(metadata=dc_config(field_name="sns_secret")) sns_topic_arn: str = dc_field(metadata=dc_config(field_name="sns_topic_arn")) @@ -1944,163 +1029,56 @@ class AppResponseFields(DataClassJsonMixin): sqs_secret: str = dc_field(metadata=dc_config(field_name="sqs_secret")) sqs_url: str = dc_field(metadata=dc_config(field_name="sqs_url")) suspended: bool = dc_field(metadata=dc_config(field_name="suspended")) - suspended_explanation: str = dc_field( - metadata=dc_config(field_name="suspended_explanation") - ) + suspended_explanation: str = dc_field(metadata=dc_config(field_name="suspended_explanation")) use_hook_v2: bool = dc_field(metadata=dc_config(field_name="use_hook_v2")) - user_response_time_enabled: bool = dc_field( - metadata=dc_config(field_name="user_response_time_enabled") - ) + user_response_time_enabled: bool = dc_field(metadata=dc_config(field_name="user_response_time_enabled")) webhook_url: str = dc_field(metadata=dc_config(field_name="webhook_url")) - event_hooks: "list[EventHook]" = dc_field( - metadata=dc_config(field_name="event_hooks") - ) - user_search_disallowed_roles: list[str] = dc_field( - metadata=dc_config(field_name="user_search_disallowed_roles") - ) - webhook_events: list[str] = dc_field( - metadata=dc_config(field_name="webhook_events") - ) - call_types: "dict[str, CallType | None]" = dc_field( - metadata=dc_config(field_name="call_types") - ) - channel_configs: "dict[str, ChannelConfig | None]" = dc_field( - metadata=dc_config(field_name="channel_configs") - ) - file_upload_config: "FileUploadConfig" = dc_field( - metadata=dc_config(field_name="file_upload_config") - ) - grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) - image_upload_config: "FileUploadConfig" = dc_field( - metadata=dc_config(field_name="image_upload_config") - ) - policies: "dict[str, list[Policy]]" = dc_field( - metadata=dc_config(field_name="policies") - ) - push_notifications: "PushNotificationFields" = dc_field( - metadata=dc_config(field_name="push_notifications") - ) - before_message_send_hook_attempt_timeout_ms: int | None = dc_field( - default=None, - metadata=dc_config(field_name="before_message_send_hook_attempt_timeout_ms"), - ) - before_message_send_hook_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="before_message_send_hook_url") - ) - chat_primary_use_case: str | None = dc_field( - default=None, metadata=dc_config(field_name="chat_primary_use_case") - ) - moderation_onboarding_complete: bool | None = dc_field( - default=None, metadata=dc_config(field_name="moderation_onboarding_complete") - ) - moderation_s3_image_access_role_arn: str | None = dc_field( - default=None, - metadata=dc_config(field_name="moderation_s3_image_access_role_arn"), - ) - revoke_tokens_issued_before: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="revoke_tokens_issued_before", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - video_primary_use_case: str | None = dc_field( - default=None, metadata=dc_config(field_name="video_primary_use_case") - ) - allowed_flag_reasons: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="allowed_flag_reasons") - ) - geofences: "list[GeofenceResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="geofences") - ) - image_moderation_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="image_moderation_labels") - ) - activity_metrics_config: "dict[str, int] | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_metrics_config") - ) - datadog_info: "DataDogInfo | None" = dc_field( - default=None, metadata=dc_config(field_name="datadog_info") - ) - moderation_dashboard_preferences: "ModerationDashboardPreferences | None" = ( - dc_field( - default=None, - metadata=dc_config(field_name="moderation_dashboard_preferences"), - ) - ) - + event_hooks: 'list[EventHook]' = dc_field(metadata=dc_config(field_name="event_hooks")) + user_search_disallowed_roles: list[str] = dc_field(metadata=dc_config(field_name="user_search_disallowed_roles")) + webhook_events: list[str] = dc_field(metadata=dc_config(field_name="webhook_events")) + call_types: 'dict[str, CallType | None]' = dc_field(metadata=dc_config(field_name="call_types")) + channel_configs: 'dict[str, ChannelConfig | None]' = dc_field(metadata=dc_config(field_name="channel_configs")) + file_upload_config: 'FileUploadConfig' = dc_field(metadata=dc_config(field_name="file_upload_config")) + grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) + image_upload_config: 'FileUploadConfig' = dc_field(metadata=dc_config(field_name="image_upload_config")) + policies: 'dict[str, list[Policy]]' = dc_field(metadata=dc_config(field_name="policies")) + push_notifications: 'PushNotificationFields' = dc_field(metadata=dc_config(field_name="push_notifications")) + before_message_send_hook_attempt_timeout_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="before_message_send_hook_attempt_timeout_ms")) + before_message_send_hook_url: str | None = dc_field(default=None, metadata=dc_config(field_name="before_message_send_hook_url")) + chat_primary_use_case: str | None = dc_field(default=None, metadata=dc_config(field_name="chat_primary_use_case")) + moderation_onboarding_complete: bool | None = dc_field(default=None, metadata=dc_config(field_name="moderation_onboarding_complete")) + moderation_s3_image_access_role_arn: str | None = dc_field(default=None, metadata=dc_config(field_name="moderation_s3_image_access_role_arn")) + revoke_tokens_issued_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="revoke_tokens_issued_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + video_primary_use_case: str | None = dc_field(default=None, metadata=dc_config(field_name="video_primary_use_case")) + allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) + geofences: 'list[GeofenceResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="geofences")) + image_moderation_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="image_moderation_labels")) + activity_metrics_config: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_metrics_config")) + datadog_info: 'DataDogInfo | None' = dc_field(default=None, metadata=dc_config(field_name="datadog_info")) + moderation_dashboard_preferences: 'ModerationDashboardPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_dashboard_preferences")) @dataclass class AppealAcceptedEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="appeal.accepted", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - appeal: "AppealItemResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="appeal") - ) - + type: str = dc_field(default="appeal.accepted", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + appeal: 'AppealItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="appeal")) @dataclass class AppealCreatedEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="appeal.created", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - appeal: "AppealItemResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="appeal") - ) - + type: str = dc_field(default="appeal.created", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + appeal: 'AppealItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="appeal")) @dataclass class AppealItemResponse(DataClassJsonMixin): # Reason Text of the Appeal Item appeal_reason: str = dc_field(metadata=dc_config(field_name="appeal_reason")) # When the flag was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # ID of the entity entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) # Type of entity @@ -2109,104 +1087,44 @@ class AppealItemResponse(DataClassJsonMixin): # Status of the Appeal Item status: str = dc_field(metadata=dc_config(field_name="status")) # When the flag was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Text severity level assigned by the AI provider - ai_text_severity: str | None = dc_field( - default=None, metadata=dc_config(field_name="ai_text_severity") - ) + ai_text_severity: str | None = dc_field(default=None, metadata=dc_config(field_name="ai_text_severity")) # CID of the channel the entity belongs to, if applicable - channel_cid: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_cid") - ) + channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) # Moderation policy key that was applied - config_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="config_key") - ) + config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) # Decision Reason of the Appeal Item - decision_reason: str | None = dc_field( - default=None, metadata=dc_config(field_name="decision_reason") - ) + decision_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="decision_reason")) # Action recommended by the automated moderation system (e.g. flag, remove, shadow) - recommended_action: str | None = dc_field( - default=None, metadata=dc_config(field_name="recommended_action") - ) + recommended_action: str | None = dc_field(default=None, metadata=dc_config(field_name="recommended_action")) # ID of the review queue item linked to this appeal, if the appeal was submitted with one - review_queue_item_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="review_queue_item_id") - ) + review_queue_item_id: str | None = dc_field(default=None, metadata=dc_config(field_name="review_queue_item_id")) # Overall content severity score (1–100) - severity: int | None = dc_field( - default=None, metadata=dc_config(field_name="severity") - ) + severity: int | None = dc_field(default=None, metadata=dc_config(field_name="severity")) # Full chronological history of all moderation actions on the review queue item - actions: "list[ActionLogResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="actions") - ) + actions: 'list[ActionLogResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="actions")) # Attachments(e.g. Images) of the Appeal Item - attachments: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) + attachments: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="attachments")) # Classification labels from automated and manual review - flag_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="flag_labels") - ) + flag_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="flag_labels")) # Types of flags applied to the entity (e.g. user_report, bodyguard) - flag_types: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="flag_types") - ) + flag_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="flag_types")) # Per-provider flag records explaining why the action was taken - flags: "list[ModerationFlagResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="flags") - ) - entity_content: "ModerationPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="entity_content") - ) - moderation_action: "ActionLogResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation_action") - ) - original_moderation_action: "ActionLogResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="original_moderation_action") - ) + flags: 'list[ModerationFlagResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="flags")) + entity_content: 'ModerationPayload | None' = dc_field(default=None, metadata=dc_config(field_name="entity_content")) + moderation_action: 'ActionLogResponse | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_action")) + original_moderation_action: 'ActionLogResponse | None' = dc_field(default=None, metadata=dc_config(field_name="original_moderation_action")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class AppealRejectedEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="appeal.rejected", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - appeal: "AppealItemResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="appeal") - ) - + type: str = dc_field(default="appeal.rejected", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + appeal: 'AppealItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="appeal")) @dataclass class AppealRequest(DataClassJsonMixin): @@ -2217,21 +1135,12 @@ class AppealRequest(DataClassJsonMixin): # Type of entity being appealed (e.g., message, user) entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) # ID of the review queue item (flagged message) that triggered the ban. Applicable only for user ban appeals. - review_queue_item_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="review_queue_item_id") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + review_queue_item_id: str | None = dc_field(default=None, metadata=dc_config(field_name="review_queue_item_id")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Array of Attachment URLs(e.g., images) - attachments: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) + attachments: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="attachments")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class AppealResponse(DataClassJsonMixin): @@ -2239,472 +1148,169 @@ class AppealResponse(DataClassJsonMixin): appeal_id: str = dc_field(metadata=dc_config(field_name="appeal_id")) duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class AsyncBulkImageModerationEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - finished_at: datetime = dc_field( - metadata=dc_config( - field_name="finished_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - started_at: datetime = dc_field( - metadata=dc_config( - field_name="started_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + finished_at: datetime = dc_field(metadata=dc_config(field_name="finished_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + started_at: datetime = dc_field(metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) url: str = dc_field(metadata=dc_config(field_name="url")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="export.bulk_image_moderation.success", - metadata=dc_config(field_name="type"), - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="export.bulk_image_moderation.success", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class AsyncExportChannelsEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - finished_at: datetime = dc_field( - metadata=dc_config( - field_name="finished_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - started_at: datetime = dc_field( - metadata=dc_config( - field_name="started_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + finished_at: datetime = dc_field(metadata=dc_config(field_name="finished_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + started_at: datetime = dc_field(metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) url: str = dc_field(metadata=dc_config(field_name="url")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="export.channels.success", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="export.channels.success", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class AsyncExportErrorEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) error: str = dc_field(metadata=dc_config(field_name="error")) - finished_at: datetime = dc_field( - metadata=dc_config( - field_name="finished_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - started_at: datetime = dc_field( - metadata=dc_config( - field_name="started_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + finished_at: datetime = dc_field(metadata=dc_config(field_name="finished_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + started_at: datetime = dc_field(metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="export.channels.error", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="export.bulk_image_moderation.error", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class AsyncExportModerationLogsEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - finished_at: datetime = dc_field( - metadata=dc_config( - field_name="finished_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - started_at: datetime = dc_field( - metadata=dc_config( - field_name="started_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + finished_at: datetime = dc_field(metadata=dc_config(field_name="finished_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + started_at: datetime = dc_field(metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) url: str = dc_field(metadata=dc_config(field_name="url")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="export.moderation_logs.success", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="export.moderation_logs.success", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class AsyncExportReviewQueueEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - finished_at: datetime = dc_field( - metadata=dc_config( - field_name="finished_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - started_at: datetime = dc_field( - metadata=dc_config( - field_name="started_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + finished_at: datetime = dc_field(metadata=dc_config(field_name="finished_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + started_at: datetime = dc_field(metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) url: str = dc_field(metadata=dc_config(field_name="url")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="export.review_queue.success", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="export.review_queue.success", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class AsyncExportUsersEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - finished_at: datetime = dc_field( - metadata=dc_config( - field_name="finished_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - started_at: datetime = dc_field( - metadata=dc_config( - field_name="started_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + finished_at: datetime = dc_field(metadata=dc_config(field_name="finished_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + started_at: datetime = dc_field(metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) url: str = dc_field(metadata=dc_config(field_name="url")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="export.users.success", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="export.users.success", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class AsyncModerationCallbackConfig(DataClassJsonMixin): mode: str | None = dc_field(default=None, metadata=dc_config(field_name="mode")) - server_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="server_url") - ) - + server_url: str | None = dc_field(default=None, metadata=dc_config(field_name="server_url")) @dataclass class AsyncModerationConfiguration(DataClassJsonMixin): - timeout_ms: int | None = dc_field( - default=None, metadata=dc_config(field_name="timeout_ms") - ) - callback: "AsyncModerationCallbackConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="callback") - ) - + timeout_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="timeout_ms")) + callback: 'AsyncModerationCallbackConfig | None' = dc_field(default=None, metadata=dc_config(field_name="callback")) @dataclass class Attachment(DataClassJsonMixin): custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - asset_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="asset_url") - ) - author_icon: str | None = dc_field( - default=None, metadata=dc_config(field_name="author_icon") - ) - author_link: str | None = dc_field( - default=None, metadata=dc_config(field_name="author_link") - ) - author_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="author_name") - ) + asset_url: str | None = dc_field(default=None, metadata=dc_config(field_name="asset_url")) + author_icon: str | None = dc_field(default=None, metadata=dc_config(field_name="author_icon")) + author_link: str | None = dc_field(default=None, metadata=dc_config(field_name="author_link")) + author_name: str | None = dc_field(default=None, metadata=dc_config(field_name="author_name")) color: str | None = dc_field(default=None, metadata=dc_config(field_name="color")) - fallback: str | None = dc_field( - default=None, metadata=dc_config(field_name="fallback") - ) + fallback: str | None = dc_field(default=None, metadata=dc_config(field_name="fallback")) footer: str | None = dc_field(default=None, metadata=dc_config(field_name="footer")) - footer_icon: str | None = dc_field( - default=None, metadata=dc_config(field_name="footer_icon") - ) - image_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="image_url") - ) - og_scrape_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="og_scrape_url") - ) - original_height: int | None = dc_field( - default=None, metadata=dc_config(field_name="original_height") - ) - original_width: int | None = dc_field( - default=None, metadata=dc_config(field_name="original_width") - ) - pretext: str | None = dc_field( - default=None, metadata=dc_config(field_name="pretext") - ) + footer_icon: str | None = dc_field(default=None, metadata=dc_config(field_name="footer_icon")) + image_url: str | None = dc_field(default=None, metadata=dc_config(field_name="image_url")) + og_scrape_url: str | None = dc_field(default=None, metadata=dc_config(field_name="og_scrape_url")) + original_height: int | None = dc_field(default=None, metadata=dc_config(field_name="original_height")) + original_width: int | None = dc_field(default=None, metadata=dc_config(field_name="original_width")) + pretext: str | None = dc_field(default=None, metadata=dc_config(field_name="pretext")) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) - thumb_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="thumb_url") - ) + thumb_url: str | None = dc_field(default=None, metadata=dc_config(field_name="thumb_url")) title: str | None = dc_field(default=None, metadata=dc_config(field_name="title")) - title_link: str | None = dc_field( - default=None, metadata=dc_config(field_name="title_link") - ) + title_link: str | None = dc_field(default=None, metadata=dc_config(field_name="title_link")) # Attachment type (e.g. image, video, url) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - actions: "list[Action] | None" = dc_field( - default=None, metadata=dc_config(field_name="actions") - ) - fields: "list[Field] | None" = dc_field( - default=None, metadata=dc_config(field_name="fields") - ) - giphy: "Images | None" = dc_field( - default=None, metadata=dc_config(field_name="giphy") - ) - + actions: 'list[Action] | None' = dc_field(default=None, metadata=dc_config(field_name="actions")) + fields: 'list[Field] | None' = dc_field(default=None, metadata=dc_config(field_name="fields")) + giphy: 'Images | None' = dc_field(default=None, metadata=dc_config(field_name="giphy")) @dataclass class Audience(DataClassJsonMixin): - avg_concurrent_viewers: int = dc_field( - metadata=dc_config(field_name="avg_concurrent_viewers") - ) + avg_concurrent_viewers: int = dc_field(metadata=dc_config(field_name="avg_concurrent_viewers")) hours_watched: float = dc_field(metadata=dc_config(field_name="hours_watched")) - peak_concurrent_viewers: int = dc_field( - metadata=dc_config(field_name="peak_concurrent_viewers") - ) + peak_concurrent_viewers: int = dc_field(metadata=dc_config(field_name="peak_concurrent_viewers")) unique_viewers: int = dc_field(metadata=dc_config(field_name="unique_viewers")) - viewer_connections: int = dc_field( - metadata=dc_config(field_name="viewer_connections") - ) - concurrency_by_minute: "list[ConcurrencyMinute]" = dc_field( - metadata=dc_config(field_name="concurrency_by_minute") - ) - peak_at: str | None = dc_field( - default=None, metadata=dc_config(field_name="peak_at") - ) - ramp_up_min_to_90pct_peak: int | None = dc_field( - default=None, metadata=dc_config(field_name="ramp_up_min_to_90pct_peak") - ) - retention_at_90pct_mark: float | None = dc_field( - default=None, metadata=dc_config(field_name="retention_at_90pct_mark") - ) - retention_at_midpoint: float | None = dc_field( - default=None, metadata=dc_config(field_name="retention_at_midpoint") - ) + viewer_connections: int = dc_field(metadata=dc_config(field_name="viewer_connections")) + concurrency_by_minute: 'list[ConcurrencyMinute]' = dc_field(metadata=dc_config(field_name="concurrency_by_minute")) + peak_at: str | None = dc_field(default=None, metadata=dc_config(field_name="peak_at")) + ramp_up_min_to_90pct_peak: int | None = dc_field(default=None, metadata=dc_config(field_name="ramp_up_min_to_90pct_peak")) + retention_at_90pct_mark: float | None = dc_field(default=None, metadata=dc_config(field_name="retention_at_90pct_mark")) + retention_at_midpoint: float | None = dc_field(default=None, metadata=dc_config(field_name="retention_at_midpoint")) shape: str | None = dc_field(default=None, metadata=dc_config(field_name="shape")) - @dataclass class AudioSettings(DataClassJsonMixin): - access_request_enabled: bool = dc_field( - metadata=dc_config(field_name="access_request_enabled") - ) + access_request_enabled: bool = dc_field(metadata=dc_config(field_name="access_request_enabled")) default_device: str = dc_field(metadata=dc_config(field_name="default_device")) - hifi_audio_enabled: bool = dc_field( - metadata=dc_config(field_name="hifi_audio_enabled") - ) + hifi_audio_enabled: bool = dc_field(metadata=dc_config(field_name="hifi_audio_enabled")) mic_default_on: bool = dc_field(metadata=dc_config(field_name="mic_default_on")) opus_dtx_enabled: bool = dc_field(metadata=dc_config(field_name="opus_dtx_enabled")) - redundant_coding_enabled: bool = dc_field( - metadata=dc_config(field_name="redundant_coding_enabled") - ) - speaker_default_on: bool = dc_field( - metadata=dc_config(field_name="speaker_default_on") - ) - noise_cancellation: "NoiseCancellationSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="noise_cancellation") - ) - + redundant_coding_enabled: bool = dc_field(metadata=dc_config(field_name="redundant_coding_enabled")) + speaker_default_on: bool = dc_field(metadata=dc_config(field_name="speaker_default_on")) + noise_cancellation: 'NoiseCancellationSettings | None' = dc_field(default=None, metadata=dc_config(field_name="noise_cancellation")) @dataclass class AudioSettingsRequest(DataClassJsonMixin): default_device: str = dc_field(metadata=dc_config(field_name="default_device")) - access_request_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="access_request_enabled") - ) - hifi_audio_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hifi_audio_enabled") - ) - mic_default_on: bool | None = dc_field( - default=None, metadata=dc_config(field_name="mic_default_on") - ) - opus_dtx_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="opus_dtx_enabled") - ) - redundant_coding_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="redundant_coding_enabled") - ) - speaker_default_on: bool | None = dc_field( - default=None, metadata=dc_config(field_name="speaker_default_on") - ) - noise_cancellation: "NoiseCancellationSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="noise_cancellation") - ) - + access_request_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="access_request_enabled")) + hifi_audio_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="hifi_audio_enabled")) + mic_default_on: bool | None = dc_field(default=None, metadata=dc_config(field_name="mic_default_on")) + opus_dtx_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="opus_dtx_enabled")) + redundant_coding_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="redundant_coding_enabled")) + speaker_default_on: bool | None = dc_field(default=None, metadata=dc_config(field_name="speaker_default_on")) + noise_cancellation: 'NoiseCancellationSettings | None' = dc_field(default=None, metadata=dc_config(field_name="noise_cancellation")) @dataclass class AudioSettingsResponse(DataClassJsonMixin): - access_request_enabled: bool = dc_field( - metadata=dc_config(field_name="access_request_enabled") - ) + access_request_enabled: bool = dc_field(metadata=dc_config(field_name="access_request_enabled")) default_device: str = dc_field(metadata=dc_config(field_name="default_device")) - hifi_audio_enabled: bool = dc_field( - metadata=dc_config(field_name="hifi_audio_enabled") - ) + hifi_audio_enabled: bool = dc_field(metadata=dc_config(field_name="hifi_audio_enabled")) mic_default_on: bool = dc_field(metadata=dc_config(field_name="mic_default_on")) opus_dtx_enabled: bool = dc_field(metadata=dc_config(field_name="opus_dtx_enabled")) - redundant_coding_enabled: bool = dc_field( - metadata=dc_config(field_name="redundant_coding_enabled") - ) - speaker_default_on: bool = dc_field( - metadata=dc_config(field_name="speaker_default_on") - ) - noise_cancellation: "NoiseCancellationSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="noise_cancellation") - ) - + redundant_coding_enabled: bool = dc_field(metadata=dc_config(field_name="redundant_coding_enabled")) + speaker_default_on: bool = dc_field(metadata=dc_config(field_name="speaker_default_on")) + noise_cancellation: 'NoiseCancellationSettings | None' = dc_field(default=None, metadata=dc_config(field_name="noise_cancellation")) @dataclass class AutomodDetailsResponse(DataClassJsonMixin): action: str | None = dc_field(default=None, metadata=dc_config(field_name="action")) - original_message_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="original_message_type") - ) - image_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="image_labels") - ) - message_details: "FlagMessageDetailsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message_details") - ) + original_message_type: str | None = dc_field(default=None, metadata=dc_config(field_name="original_message_type")) + image_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="image_labels")) + message_details: 'FlagMessageDetailsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message_details")) # Result of the message moderation - result: "MessageModerationResult | None" = dc_field( - default=None, metadata=dc_config(field_name="result") - ) - + result: 'MessageModerationResult | None' = dc_field(default=None, metadata=dc_config(field_name="result")) @dataclass class AutomodPlatformCircumventionConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - rules: "list[AutomodRule] | None" = dc_field( - default=None, metadata=dc_config(field_name="rules") - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + rules: 'list[AutomodRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) @dataclass class AutomodRule(DataClassJsonMixin): @@ -2712,17 +1318,11 @@ class AutomodRule(DataClassJsonMixin): label: str = dc_field(metadata=dc_config(field_name="label")) threshold: float = dc_field(metadata=dc_config(field_name="threshold")) - @dataclass class AutomodSemanticFiltersConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - rules: "list[AutomodSemanticFiltersRule] | None" = dc_field( - default=None, metadata=dc_config(field_name="rules") - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + rules: 'list[AutomodSemanticFiltersRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) @dataclass class AutomodSemanticFiltersRule(DataClassJsonMixin): @@ -2730,17 +1330,11 @@ class AutomodSemanticFiltersRule(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) threshold: float = dc_field(metadata=dc_config(field_name="threshold")) - @dataclass class AutomodToxicityConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - rules: "list[AutomodRule] | None" = dc_field( - default=None, metadata=dc_config(field_name="rules") - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + rules: 'list[AutomodRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) @dataclass class AzureRequest(DataClassJsonMixin): @@ -2749,208 +1343,103 @@ class AzureRequest(DataClassJsonMixin): # The client id abs_client_id: str = dc_field(metadata=dc_config(field_name="abs_client_id")) # The client secret - abs_client_secret: str = dc_field( - metadata=dc_config(field_name="abs_client_secret") - ) + abs_client_secret: str = dc_field(metadata=dc_config(field_name="abs_client_secret")) # The tenant id abs_tenant_id: str = dc_field(metadata=dc_config(field_name="abs_tenant_id")) - @dataclass class BackstageSettings(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - join_ahead_time_seconds: int | None = dc_field( - default=None, metadata=dc_config(field_name="join_ahead_time_seconds") - ) - + join_ahead_time_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="join_ahead_time_seconds")) @dataclass class BackstageSettingsRequest(DataClassJsonMixin): - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - join_ahead_time_seconds: int | None = dc_field( - default=None, metadata=dc_config(field_name="join_ahead_time_seconds") - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + join_ahead_time_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="join_ahead_time_seconds")) @dataclass class BackstageSettingsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - join_ahead_time_seconds: int | None = dc_field( - default=None, metadata=dc_config(field_name="join_ahead_time_seconds") - ) - + join_ahead_time_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="join_ahead_time_seconds")) @dataclass class BanActionRequestPayload(DataClassJsonMixin): # Also ban user from all channels this moderator creates in the future - ban_from_future_channels: bool | None = dc_field( - default=None, metadata=dc_config(field_name="ban_from_future_channels") - ) + ban_from_future_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="ban_from_future_channels")) # Ban only from specific channel - channel_ban_only: bool | None = dc_field( - default=None, metadata=dc_config(field_name="channel_ban_only") - ) - channel_cid: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_cid") - ) + channel_ban_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="channel_ban_only")) + channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) # Message deletion mode: soft, pruning, or hard - delete_messages: str | None = dc_field( - default=None, metadata=dc_config(field_name="delete_messages") - ) + delete_messages: str | None = dc_field(default=None, metadata=dc_config(field_name="delete_messages")) # Whether to ban by IP address - ip_ban: bool | None = dc_field( - default=None, metadata=dc_config(field_name="ip_ban") - ) + ip_ban: bool | None = dc_field(default=None, metadata=dc_config(field_name="ip_ban")) # Reason for the ban reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) # Whether this is a shadow ban - shadow: bool | None = dc_field( - default=None, metadata=dc_config(field_name="shadow") - ) + shadow: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow")) # Optional: ban user directly without review item - target_user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="target_user_id") - ) + target_user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="target_user_id")) # Duration of ban in minutes - timeout: int | None = dc_field( - default=None, metadata=dc_config(field_name="timeout") - ) - + timeout: int | None = dc_field(default=None, metadata=dc_config(field_name="timeout")) @dataclass class BanInfoResponse(DataClassJsonMixin): # When the ban was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The channel this ban applies to. Empty if this is an app-wide (global) ban rather than a per-channel ban. - channel_cid: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_cid") - ) + channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) # When the ban expires - expires: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="expires", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Reason for the ban reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) # Whether this is a shadow ban - shadow: bool | None = dc_field( - default=None, metadata=dc_config(field_name="shadow") - ) - channel: "ChannelMetadata | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) + shadow: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow")) + channel: 'ChannelMetadata | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) # User response object - created_by: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) + created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class BanOptions(DataClassJsonMixin): - delete_messages: str | None = dc_field( - default=None, metadata=dc_config(field_name="delete_messages") - ) - duration: int | None = dc_field( - default=None, metadata=dc_config(field_name="duration") - ) - ip_ban: bool | None = dc_field( - default=None, metadata=dc_config(field_name="ip_ban") - ) + delete_messages: str | None = dc_field(default=None, metadata=dc_config(field_name="delete_messages")) + duration: int | None = dc_field(default=None, metadata=dc_config(field_name="duration")) + ip_ban: bool | None = dc_field(default=None, metadata=dc_config(field_name="ip_ban")) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - shadow_ban: bool | None = dc_field( - default=None, metadata=dc_config(field_name="shadow_ban") - ) - + shadow_ban: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow_ban")) @dataclass class BanRequest(DataClassJsonMixin): # ID of the user to ban target_user_id: str = dc_field(metadata=dc_config(field_name="target_user_id")) # ID of the user performing the ban - banned_by_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="banned_by_id") - ) + banned_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="banned_by_id")) # Channel where the ban applies - channel_cid: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_cid") - ) - delete_messages: str | None = dc_field( - default=None, metadata=dc_config(field_name="delete_messages") - ) + channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) + delete_messages: str | None = dc_field(default=None, metadata=dc_config(field_name="delete_messages")) # Whether to ban the user's IP address - ip_ban: bool | None = dc_field( - default=None, metadata=dc_config(field_name="ip_ban") - ) + ip_ban: bool | None = dc_field(default=None, metadata=dc_config(field_name="ip_ban")) # Optional explanation for the ban reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) # Whether this is a shadow ban - shadow: bool | None = dc_field( - default=None, metadata=dc_config(field_name="shadow") - ) + shadow: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow")) # Duration of the ban in minutes - timeout: int | None = dc_field( - default=None, metadata=dc_config(field_name="timeout") - ) + timeout: int | None = dc_field(default=None, metadata=dc_config(field_name="timeout")) # User request object - banned_by: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="banned_by") - ) - + banned_by: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="banned_by")) @dataclass class BanResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - expires: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="expires", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - shadow: bool | None = dc_field( - default=None, metadata=dc_config(field_name="shadow") - ) + shadow: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow")) # User response object - banned_by: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="banned_by") - ) + banned_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="banned_by")) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class BatchQueryActivityReactionsRequest(DataClassJsonMixin): @@ -2960,33 +1449,21 @@ class BatchQueryActivityReactionsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Server-side only. The user whose reactions to fetch; defaults to the authenticated user for client-side requests - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Optional filter on reaction_type or created_at - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class BatchQueryActivityReactionsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - reactions: "list[FeedsReactionResponse]" = dc_field( - metadata=dc_config(field_name="reactions") - ) + reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="reactions")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class BatchQueryCommentReactionsRequest(DataClassJsonMixin): # Comment IDs to fetch the user's reactions for (max 100) @@ -2995,52 +1472,32 @@ class BatchQueryCommentReactionsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Server-side only. The user whose reactions to fetch; defaults to the authenticated user for client-side requests - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Optional filter on reaction_type or created_at - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class BatchQueryCommentReactionsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - reactions: "list[FeedsReactionResponse]" = dc_field( - metadata=dc_config(field_name="reactions") - ) + reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="reactions")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class BlockActionRequestPayload(DataClassJsonMixin): # Reason for blocking reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - @dataclass class BlockListConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - match_substring: bool | None = dc_field( - default=None, metadata=dc_config(field_name="match_substring") - ) - rules: "list[BlockListRule] | None" = dc_field( - default=None, metadata=dc_config(field_name="rules") - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + match_substring: bool | None = dc_field(default=None, metadata=dc_config(field_name="match_substring")) + rules: 'list[BlockListRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) @dataclass class BlockListOptions(DataClassJsonMixin): @@ -3049,21 +1506,12 @@ class BlockListOptions(DataClassJsonMixin): # Blocklist name blocklist: str = dc_field(metadata=dc_config(field_name="blocklist")) - @dataclass class BlockListResponse(DataClassJsonMixin): - is_confusable_folding_enabled: bool = dc_field( - metadata=dc_config(field_name="is_confusable_folding_enabled") - ) - is_leet_check_enabled: bool = dc_field( - metadata=dc_config(field_name="is_leet_check_enabled") - ) - is_plural_check_enabled: bool = dc_field( - metadata=dc_config(field_name="is_plural_check_enabled") - ) - is_substring_matching_enabled: bool = dc_field( - metadata=dc_config(field_name="is_substring_matching_enabled") - ) + is_confusable_folding_enabled: bool = dc_field(metadata=dc_config(field_name="is_confusable_folding_enabled")) + is_leet_check_enabled: bool = dc_field(metadata=dc_config(field_name="is_leet_check_enabled")) + is_plural_check_enabled: bool = dc_field(metadata=dc_config(field_name="is_plural_check_enabled")) + is_substring_matching_enabled: bool = dc_field(metadata=dc_config(field_name="is_substring_matching_enabled")) # Block list name name: str = dc_field(metadata=dc_config(field_name="name")) # Block list type. One of: regex, domain, domain_allowlist, email, email_allowlist, word @@ -3071,31 +1519,12 @@ class BlockListResponse(DataClassJsonMixin): # List of words to block words: list[str] = dc_field(metadata=dc_config(field_name="words")) # Date/time of creation - created_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) - owner_user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="owner_user_id") - ) + owner_user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="owner_user_id")) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Date/time of the last update - updated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class BlockListRule(DataClassJsonMixin): @@ -3103,370 +1532,173 @@ class BlockListRule(DataClassJsonMixin): name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - @dataclass class BlockUserRequest(DataClassJsonMixin): # the user to block user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - @dataclass class BlockUserResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class BlockUsersRequest(DataClassJsonMixin): # User id to block blocked_user_id: str = dc_field(metadata=dc_config(field_name="blocked_user_id")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class BlockUsersResponse(DataClassJsonMixin): # User id who blocked another user - blocked_by_user_id: str = dc_field( - metadata=dc_config(field_name="blocked_by_user_id") - ) + blocked_by_user_id: str = dc_field(metadata=dc_config(field_name="blocked_by_user_id")) # User id who got blocked blocked_user_id: str = dc_field(metadata=dc_config(field_name="blocked_user_id")) # Timestamp when the user was blocked - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class BlockedUserEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.blocked_user" in this case - type: str = dc_field( - default="call.blocked_user", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="call.blocked_user", metadata=dc_config(field_name="type")) # User response object - blocked_by_user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="blocked_by_user") - ) - + blocked_by_user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="blocked_by_user")) @dataclass class BlockedUserResponse(DataClassJsonMixin): # ID of the user who got blocked blocked_user_id: str = dc_field(metadata=dc_config(field_name="blocked_user_id")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # ID of the user who blocked another user user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # User response object - blocked_user: "UserResponse" = dc_field( - metadata=dc_config(field_name="blocked_user") - ) + blocked_user: 'UserResponse' = dc_field(metadata=dc_config(field_name="blocked_user")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) @dataclass class BodyguardImageAnalysisConfig(DataClassJsonMixin): - rules: "list[BodyguardRule] | None" = dc_field( - default=None, metadata=dc_config(field_name="rules") - ) - + rules: 'list[BodyguardRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) @dataclass class BodyguardProfileSummary(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) - display_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="display_name") - ) - text_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="text_type") - ) - + display_name: str | None = dc_field(default=None, metadata=dc_config(field_name="display_name")) + text_type: str | None = dc_field(default=None, metadata=dc_config(field_name="text_type")) @dataclass class BodyguardRule(DataClassJsonMixin): label: str = dc_field(metadata=dc_config(field_name="label")) action: str | None = dc_field(default=None, metadata=dc_config(field_name="action")) - severity_rules: "list[BodyguardSeverityRule] | None" = dc_field( - default=None, metadata=dc_config(field_name="severity_rules") - ) - + severity_rules: 'list[BodyguardSeverityRule] | None' = dc_field(default=None, metadata=dc_config(field_name="severity_rules")) @dataclass class BodyguardSeverityRule(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) severity: str = dc_field(metadata=dc_config(field_name="severity")) - @dataclass class BookmarkAddedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.bookmark.added" in this case - type: str = dc_field( - default="feeds.bookmark.added", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.bookmark.added", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class BookmarkDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.bookmark.deleted" in this case - type: str = dc_field( - default="feeds.bookmark.deleted", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.bookmark.deleted", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class BookmarkFolderDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - bookmark_folder: "BookmarkFolderResponse" = dc_field( - metadata=dc_config(field_name="bookmark_folder") - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + bookmark_folder: 'BookmarkFolderResponse' = dc_field(metadata=dc_config(field_name="bookmark_folder")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.bookmark_folder.deleted" in this case - type: str = dc_field( - default="feeds.bookmark_folder.deleted", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.bookmark_folder.deleted", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class BookmarkFolderResponse(DataClassJsonMixin): # When the folder was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Unique identifier for the folder id: str = dc_field(metadata=dc_config(field_name="id")) # Name of the folder name: str = dc_field(metadata=dc_config(field_name="name")) # When the folder was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # Custom data for the folder - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class BookmarkFolderUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - bookmark_folder: "BookmarkFolderResponse" = dc_field( - metadata=dc_config(field_name="bookmark_folder") - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + bookmark_folder: 'BookmarkFolderResponse' = dc_field(metadata=dc_config(field_name="bookmark_folder")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.bookmark_folder.updated" in this case - type: str = dc_field( - default="feeds.bookmark_folder.updated", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.bookmark_folder.updated", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class BookmarkResponse(DataClassJsonMixin): # When the bookmark was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # ID of the bookmarked object object_id: str = dc_field(metadata=dc_config(field_name="object_id")) # Type of the bookmarked object (activity or comment) object_type: str = dc_field(metadata=dc_config(field_name="object_type")) # When the bookmark was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - activity_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="activity_id") - ) - comment: "CommentResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="comment") - ) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + activity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="activity_id")) + comment: 'CommentResponse | None' = dc_field(default=None, metadata=dc_config(field_name="comment")) # Custom data for the bookmark - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - folder: "BookmarkFolderResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="folder") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + folder: 'BookmarkFolderResponse | None' = dc_field(default=None, metadata=dc_config(field_name="folder")) @dataclass class BookmarkUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.bookmark.updated" in this case - type: str = dc_field( - default="feeds.bookmark.updated", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.bookmark.updated", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class Bound(DataClassJsonMixin): inclusive: bool = dc_field(metadata=dc_config(field_name="inclusive")) value: float = dc_field(metadata=dc_config(field_name="value")) - @dataclass class BroadcastDailyRollup(DataClassJsonMixin): broadcasts: int = dc_field(metadata=dc_config(field_name="broadcasts")) @@ -3474,36 +1706,26 @@ class BroadcastDailyRollup(DataClassJsonMixin): dead_air_s: int = dc_field(metadata=dc_config(field_name="dead_air_s")) hours_watched: float = dc_field(metadata=dc_config(field_name="hours_watched")) incident_windows: int = dc_field(metadata=dc_config(field_name="incident_windows")) - max_peak_concurrent_viewers: int = dc_field( - metadata=dc_config(field_name="max_peak_concurrent_viewers") - ) + max_peak_concurrent_viewers: int = dc_field(metadata=dc_config(field_name="max_peak_concurrent_viewers")) note: str = dc_field(metadata=dc_config(field_name="note")) schema_version: str = dc_field(metadata=dc_config(field_name="schema_version")) source_drops: int = dc_field(metadata=dc_config(field_name="source_drops")) - unique_viewers_sum: int = dc_field( - metadata=dc_config(field_name="unique_viewers_sum") - ) - top_broadcasts: "list[TopBroadcast]" = dc_field( - metadata=dc_config(field_name="top_broadcasts") - ) - poor_viewers_by_cause: "PoorByCause" = dc_field( - metadata=dc_config(field_name="poor_viewers_by_cause") - ) - + unique_viewers_sum: int = dc_field(metadata=dc_config(field_name="unique_viewers_sum")) + top_broadcasts: 'list[TopBroadcast]' = dc_field(metadata=dc_config(field_name="top_broadcasts")) + poor_viewers_by_cause: 'PoorByCause' = dc_field(metadata=dc_config(field_name="poor_viewers_by_cause")) @dataclass class BroadcastDigest(DataClassJsonMixin): schema_version: str = dc_field(metadata=dc_config(field_name="schema_version")) - audience: "Audience" = dc_field(metadata=dc_config(field_name="audience")) - broadcast: "BroadcastInfo" = dc_field(metadata=dc_config(field_name="broadcast")) - coverage: "Coverage" = dc_field(metadata=dc_config(field_name="coverage")) - joins: "Joins" = dc_field(metadata=dc_config(field_name="joins")) - poor_tail: "PoorTail" = dc_field(metadata=dc_config(field_name="poor_tail")) - quality: "Quality" = dc_field(metadata=dc_config(field_name="quality")) - segments: "Segments" = dc_field(metadata=dc_config(field_name="segments")) - source: "SourceHealth" = dc_field(metadata=dc_config(field_name="source")) - viewers: "ViewerBehavior" = dc_field(metadata=dc_config(field_name="viewers")) - + audience: 'Audience' = dc_field(metadata=dc_config(field_name="audience")) + broadcast: 'BroadcastInfo' = dc_field(metadata=dc_config(field_name="broadcast")) + coverage: 'Coverage' = dc_field(metadata=dc_config(field_name="coverage")) + joins: 'Joins' = dc_field(metadata=dc_config(field_name="joins")) + poor_tail: 'PoorTail' = dc_field(metadata=dc_config(field_name="poor_tail")) + quality: 'Quality' = dc_field(metadata=dc_config(field_name="quality")) + segments: 'Segments' = dc_field(metadata=dc_config(field_name="segments")) + source: 'SourceHealth' = dc_field(metadata=dc_config(field_name="source")) + viewers: 'ViewerBehavior' = dc_field(metadata=dc_config(field_name="viewers")) @dataclass class BroadcastInfo(DataClassJsonMixin): @@ -3515,72 +1737,42 @@ class BroadcastInfo(DataClassJsonMixin): ended_at: str = dc_field(metadata=dc_config(field_name="ended_at")) started_at: str = dc_field(metadata=dc_config(field_name="started_at")) creators: list[str] = dc_field(metadata=dc_config(field_name="creators")) - source_mode: str | None = dc_field( - default=None, metadata=dc_config(field_name="source_mode") - ) - + source_mode: str | None = dc_field(default=None, metadata=dc_config(field_name="source_mode")) @dataclass class BroadcastSegment(DataClassJsonMixin): key: str = dc_field(metadata=dc_config(field_name="key")) sessions: int = dc_field(metadata=dc_config(field_name="sessions")) - avg_quality_score: float | None = dc_field( - default=None, metadata=dc_config(field_name="avg_quality_score") - ) - p5_quality_score: float | None = dc_field( - default=None, metadata=dc_config(field_name="p5_quality_score") - ) - poor_pct: float | None = dc_field( - default=None, metadata=dc_config(field_name="poor_pct") - ) - share_pct: float | None = dc_field( - default=None, metadata=dc_config(field_name="share_pct") - ) - watch_share_pct: float | None = dc_field( - default=None, metadata=dc_config(field_name="watch_share_pct") - ) - + avg_quality_score: float | None = dc_field(default=None, metadata=dc_config(field_name="avg_quality_score")) + p5_quality_score: float | None = dc_field(default=None, metadata=dc_config(field_name="p5_quality_score")) + poor_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="poor_pct")) + share_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="share_pct")) + watch_share_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="watch_share_pct")) @dataclass class BroadcastSettings(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - hls: "HLSSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="hls") - ) - rtmp: "RTMPSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="rtmp") - ) - + hls: 'HLSSettings | None' = dc_field(default=None, metadata=dc_config(field_name="hls")) + rtmp: 'RTMPSettings | None' = dc_field(default=None, metadata=dc_config(field_name="rtmp")) @dataclass class BroadcastSettingsRequest(DataClassJsonMixin): - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - hls: "HLSSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="hls") - ) - rtmp: "RTMPSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="rtmp") - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + hls: 'HLSSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="hls")) + rtmp: 'RTMPSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="rtmp")) @dataclass class BroadcastSettingsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) # HLSSettings is the payload for HLS settings - hls: "HLSSettingsResponse" = dc_field(metadata=dc_config(field_name="hls")) + hls: 'HLSSettingsResponse' = dc_field(metadata=dc_config(field_name="hls")) # RTMPSettingsResponse is the payload for RTMP settings - rtmp: "RTMPSettingsResponse" = dc_field(metadata=dc_config(field_name="rtmp")) - + rtmp: 'RTMPSettingsResponse' = dc_field(metadata=dc_config(field_name="rtmp")) @dataclass class BrowserDataResponse(DataClassJsonMixin): name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - version: str | None = dc_field( - default=None, metadata=dc_config(field_name="version") - ) - + version: str | None = dc_field(default=None, metadata=dc_config(field_name="version")) @dataclass class BulkActionAppealsRequest(DataClassJsonMixin): @@ -3588,72 +1780,45 @@ class BulkActionAppealsRequest(DataClassJsonMixin): action_type: str = dc_field(metadata=dc_config(field_name="action_type")) # List of appeal UUIDs to process appeal_ids: list[str] = dc_field(metadata=dc_config(field_name="appeal_ids")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Configuration for mark reviewed action - mark_reviewed: "MarkReviewedRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="mark_reviewed") - ) + mark_reviewed: 'MarkReviewedRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="mark_reviewed")) # Configuration for rejecting an appeal - reject_appeal: "RejectAppealRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="reject_appeal") - ) + reject_appeal: 'RejectAppealRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="reject_appeal")) # Configuration for restore action. State-aware: reverses whichever of a delete, a block, or a shadow block currently applies to the content (including both a delete and a block/shadow block at once). - restore: "RestoreActionRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="restore") - ) + restore: 'RestoreActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="restore")) # Configuration for unban moderation action - unban: "UnbanActionRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="unban") - ) + unban: 'UnbanActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="unban")) # Deprecated: use restore instead — it now also reverses a block or shadow block. Configuration for unblock action. - unblock: "UnblockActionRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="unblock") - ) + unblock: 'UnblockActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="unblock")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class BulkActionAppealsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Appeals that could not be processed, with per-item error messages - errors: "list[BulkAppealError]" = dc_field(metadata=dc_config(field_name="errors")) + errors: 'list[BulkAppealError]' = dc_field(metadata=dc_config(field_name="errors")) # Successfully processed appeals - results: "list[BulkAppealResult]" = dc_field( - metadata=dc_config(field_name="results") - ) - + results: 'list[BulkAppealResult]' = dc_field(metadata=dc_config(field_name="results")) @dataclass class BulkAppealError(DataClassJsonMixin): appeal_id: str = dc_field(metadata=dc_config(field_name="appeal_id")) error: str = dc_field(metadata=dc_config(field_name="error")) - @dataclass class BulkAppealResult(DataClassJsonMixin): appeal_id: str = dc_field(metadata=dc_config(field_name="appeal_id")) - appeal_item: "AppealItemResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="appeal_item") - ) - + appeal_item: 'AppealItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="appeal_item")) @dataclass class BulkDeleteActionConfigRequest(DataClassJsonMixin): # UUIDs of the action configs to delete ids: list[str] = dc_field(metadata=dc_config(field_name="ids")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class BulkDeleteActionConfigResponse(DataClassJsonMixin): @@ -3661,50 +1826,34 @@ class BulkDeleteActionConfigResponse(DataClassJsonMixin): deleted: int = dc_field(metadata=dc_config(field_name="deleted")) duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class BulkImageModerationRequest(DataClassJsonMixin): # URL to CSV file containing image URLs to moderate csv_file: str = dc_field(metadata=dc_config(field_name="csv_file")) - @dataclass class BulkImageModerationResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # ID of the task for processing the bulk image moderation task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - @dataclass class BulkUpsertActionConfigRequest(DataClassJsonMixin): # List of action configs to create or update - action_configs: "list[UpsertActionConfigItem]" = dc_field( - metadata=dc_config(field_name="action_configs") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + action_configs: 'list[UpsertActionConfigItem]' = dc_field(metadata=dc_config(field_name="action_configs")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class BulkUpsertActionConfigResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # The created or updated action configs in the same order as the request - action_configs: "list[ModerationActionConfigResponse]" = dc_field( - metadata=dc_config(field_name="action_configs") - ) - + action_configs: 'list[ModerationActionConfigResponse]' = dc_field(metadata=dc_config(field_name="action_configs")) @dataclass class BypassActionRequest(DataClassJsonMixin): - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) @dataclass class BypassRequest(DataClassJsonMixin): @@ -3713,175 +1862,85 @@ class BypassRequest(DataClassJsonMixin): # ID of the user to update target_user_id: str = dc_field(metadata=dc_config(field_name="target_user_id")) - @dataclass class BypassResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class CallAcceptedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.accepted" in this case type: str = dc_field(default="call.accepted", metadata=dc_config(field_name="type")) - @dataclass class CallActionOptions(DataClassJsonMixin): - duration: int | None = dc_field( - default=None, metadata=dc_config(field_name="duration") - ) - flag_reason: str | None = dc_field( - default=None, metadata=dc_config(field_name="flag_reason") - ) - kick_reason: str | None = dc_field( - default=None, metadata=dc_config(field_name="kick_reason") - ) - mute_audio: bool | None = dc_field( - default=None, metadata=dc_config(field_name="mute_audio") - ) - mute_video: bool | None = dc_field( - default=None, metadata=dc_config(field_name="mute_video") - ) + duration: int | None = dc_field(default=None, metadata=dc_config(field_name="duration")) + flag_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="flag_reason")) + kick_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="kick_reason")) + mute_audio: bool | None = dc_field(default=None, metadata=dc_config(field_name="mute_audio")) + mute_video: bool | None = dc_field(default=None, metadata=dc_config(field_name="mute_video")) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - warning_text: str | None = dc_field( - default=None, metadata=dc_config(field_name="warning_text") - ) - + warning_text: str | None = dc_field(default=None, metadata=dc_config(field_name="warning_text")) @dataclass class CallClosedCaption(DataClassJsonMixin): - end_time: datetime = dc_field( - metadata=dc_config( - field_name="end_time", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + end_time: datetime = dc_field(metadata=dc_config(field_name="end_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) id: str = dc_field(metadata=dc_config(field_name="id")) language: str = dc_field(metadata=dc_config(field_name="language")) speaker_id: str = dc_field(metadata=dc_config(field_name="speaker_id")) - start_time: datetime = dc_field( - metadata=dc_config( - field_name="start_time", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + start_time: datetime = dc_field(metadata=dc_config(field_name="start_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) text: str = dc_field(metadata=dc_config(field_name="text")) translated: bool = dc_field(metadata=dc_config(field_name="translated")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - service: str | None = dc_field( - default=None, metadata=dc_config(field_name="service") - ) - + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + service: str | None = dc_field(default=None, metadata=dc_config(field_name="service")) @dataclass class CallClosedCaptionsFailedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The type of event: "call.closed_captions_failed" in this case - type: str = dc_field( - default="call.closed_captions_failed", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.closed_captions_failed", metadata=dc_config(field_name="type")) @dataclass class CallClosedCaptionsStartedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The type of event: "call.closed_captions_started" in this case - type: str = dc_field( - default="call.closed_captions_started", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.closed_captions_started", metadata=dc_config(field_name="type")) @dataclass class CallClosedCaptionsStoppedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The type of event: "call.transcription_stopped" in this case - type: str = dc_field( - default="call.closed_captions_stopped", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.closed_captions_stopped", metadata=dc_config(field_name="type")) @dataclass class CallCreatedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # the members added to this call - members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) + members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.created" in this case type: str = dc_field(default="call.created", metadata=dc_config(field_name="type")) - @dataclass class CallCustomPropertyParameters(DataClassJsonMixin): - operator: str | None = dc_field( - default=None, metadata=dc_config(field_name="operator") - ) - property_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="property_key") - ) - + operator: str | None = dc_field(default=None, metadata=dc_config(field_name="operator")) + property_key: str | None = dc_field(default=None, metadata=dc_config(field_name="property_key")) @dataclass class CallDTMFEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The DTMF digit (0-9, *, #, A-D) digit: str = dc_field(metadata=dc_config(field_name="digit")) # Duration of the digit press in milliseconds @@ -3889,118 +1948,60 @@ class CallDTMFEvent(DataClassJsonMixin): # Monotonically increasing sequence number for ordering DTMF events within a session seq_number: int = dc_field(metadata=dc_config(field_name="seq_number")) # When the digit press ended and was detected - timestamp: datetime = dc_field( - metadata=dc_config( - field_name="timestamp", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + timestamp: datetime = dc_field(metadata=dc_config(field_name="timestamp", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.dtmf" in this case type: str = dc_field(default="call.dtmf", metadata=dc_config(field_name="type")) - @dataclass class CallDeletedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.deleted" in this case type: str = dc_field(default="call.deleted", metadata=dc_config(field_name="type")) - @dataclass class CallDurationReport(DataClassJsonMixin): - histogram: "list[ReportByHistogramBucket]" = dc_field( - metadata=dc_config(field_name="histogram") - ) - + histogram: 'list[ReportByHistogramBucket]' = dc_field(metadata=dc_config(field_name="histogram")) @dataclass class CallDurationReportResponse(DataClassJsonMixin): - daily: "list[DailyAggregateCallDurationReportResponse]" = dc_field( - metadata=dc_config(field_name="daily") - ) - + daily: 'list[DailyAggregateCallDurationReportResponse]' = dc_field(metadata=dc_config(field_name="daily")) @dataclass class CallEndedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.ended" in this case type: str = dc_field(default="call.ended", metadata=dc_config(field_name="type")) # The reason why the call ended, if available reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) # The list of members in the call - members: "list[MemberResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="members") - ) + members: 'list[MemberResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class CallFrameRecordingFailedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.frame_recording_failed" in this case - type: str = dc_field( - default="call.frame_recording_failed", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.frame_recording_failed", metadata=dc_config(field_name="type")) @dataclass class CallFrameRecordingFrameReadyEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) # The time the frame was captured - captured_at: datetime = dc_field( - metadata=dc_config( - field_name="captured_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + captured_at: datetime = dc_field(metadata=dc_config(field_name="captured_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) @@ -4009,288 +2010,154 @@ class CallFrameRecordingFrameReadyEvent(DataClassJsonMixin): # The URL of the frame url: str = dc_field(metadata=dc_config(field_name="url")) # The users in the frame - users: "dict[str, UserResponse]" = dc_field(metadata=dc_config(field_name="users")) + users: 'dict[str, UserResponse]' = dc_field(metadata=dc_config(field_name="users")) # The type of event: "call.frame_recording_ready" in this case - type: str = dc_field( - default="call.frame_recording_ready", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.frame_recording_ready", metadata=dc_config(field_name="type")) @dataclass class CallFrameRecordingStartedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.frame_recording_started" in this case - type: str = dc_field( - default="call.frame_recording_started", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.frame_recording_started", metadata=dc_config(field_name="type")) @dataclass class CallFrameRecordingStoppedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.frame_recording_stopped" in this case - type: str = dc_field( - default="call.frame_recording_stopped", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.frame_recording_stopped", metadata=dc_config(field_name="type")) @dataclass class CallHLSBroadcastingFailedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The type of event: "call.hls_broadcasting_failed" in this case - type: str = dc_field( - default="call.hls_broadcasting_failed", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.hls_broadcasting_failed", metadata=dc_config(field_name="type")) @dataclass class CallHLSBroadcastingStartedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) hls_playlist_url: str = dc_field(metadata=dc_config(field_name="hls_playlist_url")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.hls_broadcasting_started" in this case - type: str = dc_field( - default="call.hls_broadcasting_started", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.hls_broadcasting_started", metadata=dc_config(field_name="type")) @dataclass class CallHLSBroadcastingStoppedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The type of event: "call.hls_broadcasting_stopped" in this case - type: str = dc_field( - default="call.hls_broadcasting_stopped", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.hls_broadcasting_stopped", metadata=dc_config(field_name="type")) @dataclass class CallIngressResponse(DataClassJsonMixin): # RTMP input settings - rtmp: "RTMPIngress" = dc_field(metadata=dc_config(field_name="rtmp")) - srt: "SRTIngress" = dc_field(metadata=dc_config(field_name="srt")) - whip: "WHIPIngress" = dc_field(metadata=dc_config(field_name="whip")) - + rtmp: 'RTMPIngress' = dc_field(metadata=dc_config(field_name="rtmp")) + srt: 'SRTIngress' = dc_field(metadata=dc_config(field_name="srt")) + whip: 'WHIPIngress' = dc_field(metadata=dc_config(field_name="whip")) @dataclass class CallLevelEventPayload(DataClassJsonMixin): event_type: str = dc_field(metadata=dc_config(field_name="event_type")) timestamp: int = dc_field(metadata=dc_config(field_name="timestamp")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - payload: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="payload") - ) - + payload: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="payload")) @dataclass class CallLiveStartedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.live_started" in this case - type: str = dc_field( - default="call.live_started", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.live_started", metadata=dc_config(field_name="type")) @dataclass class CallMemberAddedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # the members added to this call - members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) + members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.member_added" in this case - type: str = dc_field( - default="call.member_added", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.member_added", metadata=dc_config(field_name="type")) @dataclass class CallMemberRemovedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # the list of member IDs removed from the call members: list[str] = dc_field(metadata=dc_config(field_name="members")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.member_removed" in this case - type: str = dc_field( - default="call.member_removed", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.member_removed", metadata=dc_config(field_name="type")) @dataclass class CallMemberUpdatedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The list of members that were updated - members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) + members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.member_updated" in this case - type: str = dc_field( - default="call.member_updated", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.member_updated", metadata=dc_config(field_name="type")) @dataclass class CallMemberUpdatedPermissionEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The list of members that were updated - members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) + members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # The capabilities by role for this call - capabilities_by_role: "dict[str, list[str]]" = dc_field( - metadata=dc_config(field_name="capabilities_by_role") - ) + capabilities_by_role: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="capabilities_by_role")) # The type of event: "call.member_added" in this case - type: str = dc_field( - default="call.member_updated_permission", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.member_updated_permission", metadata=dc_config(field_name="type")) @dataclass class CallMissedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) notify_user: bool = dc_field(metadata=dc_config(field_name="notify_user")) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) # List of members who missed the call - members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) + members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.notification" in this case type: str = dc_field(default="call.missed", metadata=dc_config(field_name="type")) - @dataclass class CallModerationBlurEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The user ID whose video stream is being blurred user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # Custom data associated with the moderation action custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "call.moderation_blur" in this case - type: str = dc_field( - default="call.moderation_blur", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.moderation_blur", metadata=dc_config(field_name="type")) @dataclass class CallModerationWarningEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The warning message message: str = dc_field(metadata=dc_config(field_name="message")) # The user ID who is receiving the warning @@ -4298,286 +2165,136 @@ class CallModerationWarningEvent(DataClassJsonMixin): # Custom data associated with the moderation action custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "call.moderation_warning" in this case - type: str = dc_field( - default="call.moderation_warning", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.moderation_warning", metadata=dc_config(field_name="type")) @dataclass class CallNotificationEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) # Call members - members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) + members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.notification" in this case - type: str = dc_field( - default="call.notification", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.notification", metadata=dc_config(field_name="type")) @dataclass class CallParticipantCountReport(DataClassJsonMixin): - histogram: "list[ReportByHistogramBucket]" = dc_field( - metadata=dc_config(field_name="histogram") - ) - + histogram: 'list[ReportByHistogramBucket]' = dc_field(metadata=dc_config(field_name="histogram")) @dataclass class CallParticipantCountReportResponse(DataClassJsonMixin): - daily: "list[DailyAggregateCallParticipantCountReportResponse]" = dc_field( - metadata=dc_config(field_name="daily") - ) - + daily: 'list[DailyAggregateCallParticipantCountReportResponse]' = dc_field(metadata=dc_config(field_name="daily")) @dataclass class CallParticipantResponse(DataClassJsonMixin): - joined_at: datetime = dc_field( - metadata=dc_config( - field_name="joined_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + joined_at: datetime = dc_field(metadata=dc_config(field_name="joined_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) role: str = dc_field(metadata=dc_config(field_name="role")) user_session_id: str = dc_field(metadata=dc_config(field_name="user_session_id")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) @dataclass class CallParticipantTimeline(DataClassJsonMixin): severity: str = dc_field(metadata=dc_config(field_name="severity")) - timestamp: datetime = dc_field( - metadata=dc_config( - field_name="timestamp", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + timestamp: datetime = dc_field(metadata=dc_config(field_name="timestamp", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) type: str = dc_field(metadata=dc_config(field_name="type")) data: dict[str, object] = dc_field(metadata=dc_config(field_name="data")) - @dataclass class CallReactionEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - reaction: "VideoReactionResponse" = dc_field( - metadata=dc_config(field_name="reaction") - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + reaction: 'VideoReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) # The type of event: "call.reaction_new" in this case - type: str = dc_field( - default="call.reaction_new", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.reaction_new", metadata=dc_config(field_name="type")) @dataclass class CallRecording(DataClassJsonMixin): - end_time: datetime = dc_field( - metadata=dc_config( - field_name="end_time", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + end_time: datetime = dc_field(metadata=dc_config(field_name="end_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) filename: str = dc_field(metadata=dc_config(field_name="filename")) recording_type: str = dc_field(metadata=dc_config(field_name="recording_type")) session_id: str = dc_field(metadata=dc_config(field_name="session_id")) - start_time: datetime = dc_field( - metadata=dc_config( - field_name="start_time", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + start_time: datetime = dc_field(metadata=dc_config(field_name="start_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) url: str = dc_field(metadata=dc_config(field_name="url")) - @dataclass class CallRecordingFailedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # The type of recording recording_type: str = dc_field(metadata=dc_config(field_name="recording_type")) # The type of event: "call.recording_failed" in this case - type: str = dc_field( - default="call.recording_failed", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.recording_failed", metadata=dc_config(field_name="type")) @dataclass class CallRecordingReadyEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # The type of recording recording_type: str = dc_field(metadata=dc_config(field_name="recording_type")) # CallRecording represents a recording of a call. - call_recording: "CallRecording" = dc_field( - metadata=dc_config(field_name="call_recording") - ) + call_recording: 'CallRecording' = dc_field(metadata=dc_config(field_name="call_recording")) # The type of event: "call.recording_ready" in this case - type: str = dc_field( - default="call.recording_ready", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.recording_ready", metadata=dc_config(field_name="type")) @dataclass class CallRecordingStartedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # The type of recording recording_type: str = dc_field(metadata=dc_config(field_name="recording_type")) # The type of event: "call.recording_started" in this case - type: str = dc_field( - default="call.recording_started", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.recording_started", metadata=dc_config(field_name="type")) @dataclass class CallRecordingStoppedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # The type of recording recording_type: str = dc_field(metadata=dc_config(field_name="recording_type")) # The type of event: "call.recording_stopped" in this case - type: str = dc_field( - default="call.recording_stopped", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.recording_stopped", metadata=dc_config(field_name="type")) @dataclass class CallRejectedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.rejected" in this case type: str = dc_field(default="call.rejected", metadata=dc_config(field_name="type")) # Provides information about why the call was rejected. You can provide any value, but the Stream API and SDKs use these default values: rejected, cancel, timeout and busy reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - @dataclass class CallReportResponse(DataClassJsonMixin): score: float = dc_field(metadata=dc_config(field_name="score")) - ended_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="ended_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - started_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="started_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + started_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class CallRequest(DataClassJsonMixin): - channel_cid: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_cid") - ) - created_by_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="created_by_id") - ) - starts_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="starts_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) + created_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_id")) + starts_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="starts_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) video: bool | None = dc_field(default=None, metadata=dc_config(field_name="video")) - members: "list[MemberRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="members") - ) + members: 'list[MemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) # User request object - created_by: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - settings_override: "CallSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="settings_override") - ) - + created_by: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + settings_override: 'CallSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="settings_override")) @dataclass class CallResponse(DataClassJsonMixin): @@ -4586,17 +2303,8 @@ class CallResponse(DataClassJsonMixin): # The unique identifier for a call (:) cid: str = dc_field(metadata=dc_config(field_name="cid")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - current_session_id: str = dc_field( - metadata=dc_config(field_name="current_session_id") - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + current_session_id: str = dc_field(metadata=dc_config(field_name="current_session_id")) # Call ID id: str = dc_field(metadata=dc_config(field_name="id")) recording: bool = dc_field(metadata=dc_config(field_name="recording")) @@ -4605,598 +2313,259 @@ class CallResponse(DataClassJsonMixin): # The type of call type: str = dc_field(metadata=dc_config(field_name="type")) # Date/time of the last update - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - blocked_user_ids: list[str] = dc_field( - metadata=dc_config(field_name="blocked_user_ids") - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + blocked_user_ids: list[str] = dc_field(metadata=dc_config(field_name="blocked_user_ids")) # User response object - created_by: "UserResponse" = dc_field(metadata=dc_config(field_name="created_by")) + created_by: 'UserResponse' = dc_field(metadata=dc_config(field_name="created_by")) # Custom data for this object custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - egress: "EgressResponse" = dc_field(metadata=dc_config(field_name="egress")) + egress: 'EgressResponse' = dc_field(metadata=dc_config(field_name="egress")) # CallIngressResponse is the payload for ingress settings - ingress: "CallIngressResponse" = dc_field(metadata=dc_config(field_name="ingress")) - settings: "CallSettingsResponse" = dc_field( - metadata=dc_config(field_name="settings") - ) - channel_cid: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_cid") - ) + ingress: 'CallIngressResponse' = dc_field(metadata=dc_config(field_name="ingress")) + settings: 'CallSettingsResponse' = dc_field(metadata=dc_config(field_name="settings")) + channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) # Date/time when the call ended - ended_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="ended_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - join_ahead_time_seconds: int | None = dc_field( - default=None, metadata=dc_config(field_name="join_ahead_time_seconds") - ) + ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + join_ahead_time_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="join_ahead_time_seconds")) # 10-digit routing number for SIP routing - routing_number: str | None = dc_field( - default=None, metadata=dc_config(field_name="routing_number") - ) + routing_number: str | None = dc_field(default=None, metadata=dc_config(field_name="routing_number")) # Date/time when the call will start - starts_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="starts_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + starts_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="starts_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - session: "CallSessionResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="session") - ) - thumbnails: "ThumbnailResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="thumbnails") - ) - + session: 'CallSessionResponse | None' = dc_field(default=None, metadata=dc_config(field_name="session")) + thumbnails: 'ThumbnailResponse | None' = dc_field(default=None, metadata=dc_config(field_name="thumbnails")) @dataclass class CallRingEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) video: bool = dc_field(metadata=dc_config(field_name="video")) # Call members - members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) + members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.notification" in this case type: str = dc_field(default="call.ring", metadata=dc_config(field_name="type")) - @dataclass class CallRtmpBroadcastFailedEvent(DataClassJsonMixin): # The unique identifier for a call (:) call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Name of the given RTMP broadcast name: str = dc_field(metadata=dc_config(field_name="name")) # The type of event: "call.rtmp_broadcast_failed" in this case - type: str = dc_field( - default="call.rtmp_broadcast_failed", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.rtmp_broadcast_failed", metadata=dc_config(field_name="type")) @dataclass class CallRtmpBroadcastStartedEvent(DataClassJsonMixin): # The unique identifier for a call (:) call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Name of the given RTMP broadcast name: str = dc_field(metadata=dc_config(field_name="name")) # The type of event: "call.rtmp_broadcast_started" in this case - type: str = dc_field( - default="call.rtmp_broadcast_started", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.rtmp_broadcast_started", metadata=dc_config(field_name="type")) @dataclass class CallRtmpBroadcastStoppedEvent(DataClassJsonMixin): # The unique identifier for a call (:) call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Name of the given RTMP broadcast name: str = dc_field(metadata=dc_config(field_name="name")) # The type of event: "call.rtmp_broadcast_stopped" in this case - type: str = dc_field( - default="call.rtmp_broadcast_stopped", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.rtmp_broadcast_stopped", metadata=dc_config(field_name="type")) @dataclass class CallRuleActionSequence(DataClassJsonMixin): - violation_number: int | None = dc_field( - default=None, metadata=dc_config(field_name="violation_number") - ) - actions: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="actions") - ) - call_options: "CallActionOptions | None" = dc_field( - default=None, metadata=dc_config(field_name="call_options") - ) - + violation_number: int | None = dc_field(default=None, metadata=dc_config(field_name="violation_number")) + actions: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="actions")) + call_options: 'CallActionOptions | None' = dc_field(default=None, metadata=dc_config(field_name="call_options")) @dataclass class CallSessionEndedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.session_ended" in this case - type: str = dc_field( - default="call.session_ended", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.session_ended", metadata=dc_config(field_name="type")) @dataclass class CallSessionParticipantCountsUpdatedEvent(DataClassJsonMixin): - anonymous_participant_count: int = dc_field( - metadata=dc_config(field_name="anonymous_participant_count") - ) + anonymous_participant_count: int = dc_field(metadata=dc_config(field_name="anonymous_participant_count")) call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) - participants_count_by_role: "dict[str, int]" = dc_field( - metadata=dc_config(field_name="participants_count_by_role") - ) + participants_count_by_role: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="participants_count_by_role")) # The type of event: "call.session_participant_count_updated" in this case - type: str = dc_field( - default="call.session_participant_count_updated", - metadata=dc_config(field_name="type"), - ) - + type: str = dc_field(default="call.session_participant_count_updated", metadata=dc_config(field_name="type")) @dataclass class CallSessionParticipantJoinedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) - participant: "CallParticipantResponse" = dc_field( - metadata=dc_config(field_name="participant") - ) + participant: 'CallParticipantResponse' = dc_field(metadata=dc_config(field_name="participant")) # The type of event: "call.session_participant_joined" in this case - type: str = dc_field( - default="call.session_participant_joined", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.session_participant_joined", metadata=dc_config(field_name="type")) @dataclass class CallSessionParticipantLeftEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The duration participant was in the session in seconds duration_seconds: int = dc_field(metadata=dc_config(field_name="duration_seconds")) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) - participant: "CallParticipantResponse" = dc_field( - metadata=dc_config(field_name="participant") - ) + participant: 'CallParticipantResponse' = dc_field(metadata=dc_config(field_name="participant")) # The type of event: "call.session_participant_left" in this case - type: str = dc_field( - default="call.session_participant_left", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="call.session_participant_left", metadata=dc_config(field_name="type")) # The reason why the participant left the session reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - @dataclass class CallSessionResponse(DataClassJsonMixin): - anonymous_participant_count: int = dc_field( - metadata=dc_config(field_name="anonymous_participant_count") - ) + anonymous_participant_count: int = dc_field(metadata=dc_config(field_name="anonymous_participant_count")) id: str = dc_field(metadata=dc_config(field_name="id")) - participants: "list[CallParticipantResponse]" = dc_field( - metadata=dc_config(field_name="participants") - ) - accepted_by: "dict[str, datetime]" = dc_field( - metadata=dc_config( - field_name="accepted_by", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - missed_by: "dict[str, datetime]" = dc_field( - metadata=dc_config( - field_name="missed_by", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - participants_count_by_role: "dict[str, int]" = dc_field( - metadata=dc_config(field_name="participants_count_by_role") - ) - rejected_by: "dict[str, datetime]" = dc_field( - metadata=dc_config( - field_name="rejected_by", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - ended_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="ended_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - live_ended_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="live_ended_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - live_started_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="live_started_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - started_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="started_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - timer_ends_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="timer_ends_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + participants: 'list[CallParticipantResponse]' = dc_field(metadata=dc_config(field_name="participants")) + accepted_by: 'dict[str, datetime]' = dc_field(metadata=dc_config(field_name="accepted_by", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + missed_by: 'dict[str, datetime]' = dc_field(metadata=dc_config(field_name="missed_by", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + participants_count_by_role: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="participants_count_by_role")) + rejected_by: 'dict[str, datetime]' = dc_field(metadata=dc_config(field_name="rejected_by", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + live_ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="live_ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + live_started_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="live_started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + started_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + timer_ends_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="timer_ends_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class CallSessionStartedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.session_started" in this case - type: str = dc_field( - default="call.session_started", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.session_started", metadata=dc_config(field_name="type")) @dataclass class CallSettings(DataClassJsonMixin): - audio: "AudioSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="audio") - ) - backstage: "BackstageSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="backstage") - ) - broadcasting: "BroadcastSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="broadcasting") - ) - frame_recording: "FrameRecordSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="frame_recording") - ) - geofencing: "GeofenceSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="geofencing") - ) - individual_recording: "IndividualRecordSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="individual_recording") - ) - ingress: "IngressSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="ingress") - ) - limits: "LimitsSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="limits") - ) - raw_recording: "RawRecordSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="raw_recording") - ) - recording: "RecordSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="recording") - ) - ring: "RingSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="ring") - ) - screensharing: "ScreensharingSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="screensharing") - ) - session: "SessionSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="session") - ) - thumbnails: "ThumbnailsSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="thumbnails") - ) - transcription: "TranscriptionSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="transcription") - ) - video: "VideoSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="video") - ) - + audio: 'AudioSettings | None' = dc_field(default=None, metadata=dc_config(field_name="audio")) + backstage: 'BackstageSettings | None' = dc_field(default=None, metadata=dc_config(field_name="backstage")) + broadcasting: 'BroadcastSettings | None' = dc_field(default=None, metadata=dc_config(field_name="broadcasting")) + frame_recording: 'FrameRecordSettings | None' = dc_field(default=None, metadata=dc_config(field_name="frame_recording")) + geofencing: 'GeofenceSettings | None' = dc_field(default=None, metadata=dc_config(field_name="geofencing")) + individual_recording: 'IndividualRecordSettings | None' = dc_field(default=None, metadata=dc_config(field_name="individual_recording")) + ingress: 'IngressSettings | None' = dc_field(default=None, metadata=dc_config(field_name="ingress")) + limits: 'LimitsSettings | None' = dc_field(default=None, metadata=dc_config(field_name="limits")) + raw_recording: 'RawRecordSettings | None' = dc_field(default=None, metadata=dc_config(field_name="raw_recording")) + recording: 'RecordSettings | None' = dc_field(default=None, metadata=dc_config(field_name="recording")) + ring: 'RingSettings | None' = dc_field(default=None, metadata=dc_config(field_name="ring")) + screensharing: 'ScreensharingSettings | None' = dc_field(default=None, metadata=dc_config(field_name="screensharing")) + session: 'SessionSettings | None' = dc_field(default=None, metadata=dc_config(field_name="session")) + thumbnails: 'ThumbnailsSettings | None' = dc_field(default=None, metadata=dc_config(field_name="thumbnails")) + transcription: 'TranscriptionSettings | None' = dc_field(default=None, metadata=dc_config(field_name="transcription")) + video: 'VideoSettings | None' = dc_field(default=None, metadata=dc_config(field_name="video")) @dataclass class CallSettingsRequest(DataClassJsonMixin): - audio: "AudioSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="audio") - ) - backstage: "BackstageSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="backstage") - ) - broadcasting: "BroadcastSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="broadcasting") - ) - encryption: "EncryptionSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="encryption") - ) - frame_recording: "FrameRecordingSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="frame_recording") - ) - geofencing: "GeofenceSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="geofencing") - ) - individual_recording: "IndividualRecordingSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="individual_recording") - ) - ingress: "IngressSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="ingress") - ) - limits: "LimitsSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="limits") - ) - raw_recording: "RawRecordingSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="raw_recording") - ) - recording: "RecordSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="recording") - ) - ring: "RingSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="ring") - ) - screensharing: "ScreensharingSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="screensharing") - ) - session: "SessionSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="session") - ) - thumbnails: "ThumbnailsSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="thumbnails") - ) - transcription: "TranscriptionSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="transcription") - ) - video: "VideoSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="video") - ) - + audio: 'AudioSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="audio")) + backstage: 'BackstageSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="backstage")) + broadcasting: 'BroadcastSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="broadcasting")) + encryption: 'EncryptionSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="encryption")) + frame_recording: 'FrameRecordingSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="frame_recording")) + geofencing: 'GeofenceSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="geofencing")) + individual_recording: 'IndividualRecordingSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="individual_recording")) + ingress: 'IngressSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="ingress")) + limits: 'LimitsSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="limits")) + raw_recording: 'RawRecordingSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="raw_recording")) + recording: 'RecordSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="recording")) + ring: 'RingSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="ring")) + screensharing: 'ScreensharingSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="screensharing")) + session: 'SessionSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="session")) + thumbnails: 'ThumbnailsSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="thumbnails")) + transcription: 'TranscriptionSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="transcription")) + video: 'VideoSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="video")) @dataclass class CallSettingsResponse(DataClassJsonMixin): - audio: "AudioSettingsResponse" = dc_field(metadata=dc_config(field_name="audio")) - backstage: "BackstageSettingsResponse" = dc_field( - metadata=dc_config(field_name="backstage") - ) + audio: 'AudioSettingsResponse' = dc_field(metadata=dc_config(field_name="audio")) + backstage: 'BackstageSettingsResponse' = dc_field(metadata=dc_config(field_name="backstage")) # BroadcastSettingsResponse is the payload for broadcasting settings - broadcasting: "BroadcastSettingsResponse" = dc_field( - metadata=dc_config(field_name="broadcasting") - ) + broadcasting: 'BroadcastSettingsResponse' = dc_field(metadata=dc_config(field_name="broadcasting")) # EncryptionSettings is the payload for end-to-end encryption settings - encryption: "EncryptionSettingsResponse" = dc_field( - metadata=dc_config(field_name="encryption") - ) - frame_recording: "FrameRecordingSettingsResponse" = dc_field( - metadata=dc_config(field_name="frame_recording") - ) - geofencing: "GeofenceSettingsResponse" = dc_field( - metadata=dc_config(field_name="geofencing") - ) - individual_recording: "IndividualRecordingSettingsResponse" = dc_field( - metadata=dc_config(field_name="individual_recording") - ) - limits: "LimitsSettingsResponse" = dc_field(metadata=dc_config(field_name="limits")) - raw_recording: "RawRecordingSettingsResponse" = dc_field( - metadata=dc_config(field_name="raw_recording") - ) + encryption: 'EncryptionSettingsResponse' = dc_field(metadata=dc_config(field_name="encryption")) + frame_recording: 'FrameRecordingSettingsResponse' = dc_field(metadata=dc_config(field_name="frame_recording")) + geofencing: 'GeofenceSettingsResponse' = dc_field(metadata=dc_config(field_name="geofencing")) + individual_recording: 'IndividualRecordingSettingsResponse' = dc_field(metadata=dc_config(field_name="individual_recording")) + limits: 'LimitsSettingsResponse' = dc_field(metadata=dc_config(field_name="limits")) + raw_recording: 'RawRecordingSettingsResponse' = dc_field(metadata=dc_config(field_name="raw_recording")) # RecordSettings is the payload for recording settings - recording: "RecordSettingsResponse" = dc_field( - metadata=dc_config(field_name="recording") - ) - ring: "RingSettingsResponse" = dc_field(metadata=dc_config(field_name="ring")) - screensharing: "ScreensharingSettingsResponse" = dc_field( - metadata=dc_config(field_name="screensharing") - ) - session: "SessionSettingsResponse" = dc_field( - metadata=dc_config(field_name="session") - ) - thumbnails: "ThumbnailsSettingsResponse" = dc_field( - metadata=dc_config(field_name="thumbnails") - ) - transcription: "TranscriptionSettingsResponse" = dc_field( - metadata=dc_config(field_name="transcription") - ) - video: "VideoSettingsResponse" = dc_field(metadata=dc_config(field_name="video")) - ingress: "IngressSettingsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="ingress") - ) - + recording: 'RecordSettingsResponse' = dc_field(metadata=dc_config(field_name="recording")) + ring: 'RingSettingsResponse' = dc_field(metadata=dc_config(field_name="ring")) + screensharing: 'ScreensharingSettingsResponse' = dc_field(metadata=dc_config(field_name="screensharing")) + session: 'SessionSettingsResponse' = dc_field(metadata=dc_config(field_name="session")) + thumbnails: 'ThumbnailsSettingsResponse' = dc_field(metadata=dc_config(field_name="thumbnails")) + transcription: 'TranscriptionSettingsResponse' = dc_field(metadata=dc_config(field_name="transcription")) + video: 'VideoSettingsResponse' = dc_field(metadata=dc_config(field_name="video")) + ingress: 'IngressSettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="ingress")) @dataclass class CallStateResponseFields(DataClassJsonMixin): # List of call members - members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) - own_capabilities: "list[OwnCapability]" = dc_field( - metadata=dc_config(field_name="own_capabilities") - ) + members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + own_capabilities: 'list[OwnCapability]' = dc_field(metadata=dc_config(field_name="own_capabilities")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) - + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) @dataclass class CallStatsLocation(DataClassJsonMixin): - accuracy_radius_meters: int | None = dc_field( - default=None, metadata=dc_config(field_name="accuracy_radius_meters") - ) + accuracy_radius_meters: int | None = dc_field(default=None, metadata=dc_config(field_name="accuracy_radius_meters")) city: str | None = dc_field(default=None, metadata=dc_config(field_name="city")) - continent: str | None = dc_field( - default=None, metadata=dc_config(field_name="continent") - ) - country: str | None = dc_field( - default=None, metadata=dc_config(field_name="country") - ) - country_iso_code: str | None = dc_field( - default=None, metadata=dc_config(field_name="country_iso_code") - ) - latitude: float | None = dc_field( - default=None, metadata=dc_config(field_name="latitude") - ) - longitude: float | None = dc_field( - default=None, metadata=dc_config(field_name="longitude") - ) - subdivision: str | None = dc_field( - default=None, metadata=dc_config(field_name="subdivision") - ) - + continent: str | None = dc_field(default=None, metadata=dc_config(field_name="continent")) + country: str | None = dc_field(default=None, metadata=dc_config(field_name="country")) + country_iso_code: str | None = dc_field(default=None, metadata=dc_config(field_name="country_iso_code")) + latitude: float | None = dc_field(default=None, metadata=dc_config(field_name="latitude")) + longitude: float | None = dc_field(default=None, metadata=dc_config(field_name="longitude")) + subdivision: str | None = dc_field(default=None, metadata=dc_config(field_name="subdivision")) @dataclass class CallStatsMapLocation(DataClassJsonMixin): count: int = dc_field(metadata=dc_config(field_name="count")) live_count: int = dc_field(metadata=dc_config(field_name="live_count")) - location: "CallStatsLocation | None" = dc_field( - default=None, metadata=dc_config(field_name="location") - ) - + location: 'CallStatsLocation | None' = dc_field(default=None, metadata=dc_config(field_name="location")) @dataclass class CallStatsMapPublisher(DataClassJsonMixin): is_live: bool = dc_field(metadata=dc_config(field_name="is_live")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) user_session_id: str = dc_field(metadata=dc_config(field_name="user_session_id")) - published_tracks: "PublishedTrackFlags" = dc_field( - metadata=dc_config(field_name="published_tracks") - ) + published_tracks: 'PublishedTrackFlags' = dc_field(metadata=dc_config(field_name="published_tracks")) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - publisher_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="publisher_type") - ) - location: "CallStatsLocation | None" = dc_field( - default=None, metadata=dc_config(field_name="location") - ) - + publisher_type: str | None = dc_field(default=None, metadata=dc_config(field_name="publisher_type")) + location: 'CallStatsLocation | None' = dc_field(default=None, metadata=dc_config(field_name="location")) @dataclass class CallStatsMapPublishers(DataClassJsonMixin): - publishers: "list[CallStatsMapPublisher]" = dc_field( - metadata=dc_config(field_name="publishers") - ) - + publishers: 'list[CallStatsMapPublisher]' = dc_field(metadata=dc_config(field_name="publishers")) @dataclass class CallStatsMapSFUs(DataClassJsonMixin): - locations: "list[SFULocationResponse]" = dc_field( - metadata=dc_config(field_name="locations") - ) - + locations: 'list[SFULocationResponse]' = dc_field(metadata=dc_config(field_name="locations")) @dataclass class CallStatsMapSubscriber(DataClassJsonMixin): @@ -5204,893 +2573,380 @@ class CallStatsMapSubscriber(DataClassJsonMixin): user_id: str = dc_field(metadata=dc_config(field_name="user_id")) user_session_id: str = dc_field(metadata=dc_config(field_name="user_session_id")) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - location: "CallStatsLocation | None" = dc_field( - default=None, metadata=dc_config(field_name="location") - ) - + location: 'CallStatsLocation | None' = dc_field(default=None, metadata=dc_config(field_name="location")) @dataclass class CallStatsMapSubscribers(DataClassJsonMixin): - locations: "list[CallStatsMapLocation]" = dc_field( - metadata=dc_config(field_name="locations") - ) - participants: "list[CallStatsMapSubscriber] | None" = dc_field( - default=None, metadata=dc_config(field_name="participants") - ) - + locations: 'list[CallStatsMapLocation]' = dc_field(metadata=dc_config(field_name="locations")) + participants: 'list[CallStatsMapSubscriber] | None' = dc_field(default=None, metadata=dc_config(field_name="participants")) @dataclass class CallStatsParticipant(DataClassJsonMixin): user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - sessions: "list[CallStatsParticipantSession]" = dc_field( - metadata=dc_config(field_name="sessions") - ) - latest_activity_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="latest_activity_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + sessions: 'list[CallStatsParticipantSession]' = dc_field(metadata=dc_config(field_name="sessions")) + latest_activity_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="latest_activity_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - roles: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="roles") - ) - + roles: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="roles")) @dataclass class CallStatsParticipantCounts(DataClassJsonMixin): live_sessions: int = dc_field(metadata=dc_config(field_name="live_sessions")) participants: int = dc_field(metadata=dc_config(field_name="participants")) - peak_concurrent_sessions: int = dc_field( - metadata=dc_config(field_name="peak_concurrent_sessions") - ) - peak_concurrent_users: int = dc_field( - metadata=dc_config(field_name="peak_concurrent_users") - ) + peak_concurrent_sessions: int = dc_field(metadata=dc_config(field_name="peak_concurrent_sessions")) + peak_concurrent_users: int = dc_field(metadata=dc_config(field_name="peak_concurrent_users")) publishers: int = dc_field(metadata=dc_config(field_name="publishers")) sessions: int = dc_field(metadata=dc_config(field_name="sessions")) sfus_used: int = dc_field(metadata=dc_config(field_name="sfus_used")) - average_jitter_ms: int | None = dc_field( - default=None, metadata=dc_config(field_name="average_jitter_ms") - ) - average_latency_ms: int | None = dc_field( - default=None, metadata=dc_config(field_name="average_latency_ms") - ) - avg_user_rating: float | None = dc_field( - default=None, metadata=dc_config(field_name="avg_user_rating") - ) - call_event_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="call_event_count") - ) - cq_score: int | None = dc_field( - default=None, metadata=dc_config(field_name="cq_score") - ) - max_freezes_duration_ms: int | None = dc_field( - default=None, metadata=dc_config(field_name="max_freezes_duration_ms") - ) - min_user_rating: int | None = dc_field( - default=None, metadata=dc_config(field_name="min_user_rating") - ) - total_participant_duration: int | None = dc_field( - default=None, metadata=dc_config(field_name="total_participant_duration") - ) - + average_jitter_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="average_jitter_ms")) + average_latency_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="average_latency_ms")) + avg_user_rating: float | None = dc_field(default=None, metadata=dc_config(field_name="avg_user_rating")) + call_event_count: int | None = dc_field(default=None, metadata=dc_config(field_name="call_event_count")) + cq_score: int | None = dc_field(default=None, metadata=dc_config(field_name="cq_score")) + max_freezes_duration_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="max_freezes_duration_ms")) + min_user_rating: int | None = dc_field(default=None, metadata=dc_config(field_name="min_user_rating")) + total_participant_duration: int | None = dc_field(default=None, metadata=dc_config(field_name="total_participant_duration")) @dataclass class CallStatsParticipantSession(DataClassJsonMixin): is_live: bool = dc_field(metadata=dc_config(field_name="is_live")) user_session_id: str = dc_field(metadata=dc_config(field_name="user_session_id")) - published_tracks: "PublishedTrackFlags" = dc_field( - metadata=dc_config(field_name="published_tracks") - ) - browser: str | None = dc_field( - default=None, metadata=dc_config(field_name="browser") - ) - browser_version: str | None = dc_field( - default=None, metadata=dc_config(field_name="browser_version") - ) - cq_score: int | None = dc_field( - default=None, metadata=dc_config(field_name="cq_score") - ) - current_ip: str | None = dc_field( - default=None, metadata=dc_config(field_name="current_ip") - ) - current_sfu: str | None = dc_field( - default=None, metadata=dc_config(field_name="current_sfu") - ) - distance_to_sfu_kilometers: float | None = dc_field( - default=None, metadata=dc_config(field_name="distance_to_sfu_kilometers") - ) - ended_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="ended_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - freezes_duration_ms: int | None = dc_field( - default=None, metadata=dc_config(field_name="freezes_duration_ms") - ) - ingress: str | None = dc_field( - default=None, metadata=dc_config(field_name="ingress") - ) - jitter_ms: int | None = dc_field( - default=None, metadata=dc_config(field_name="jitter_ms") - ) - latency_ms: int | None = dc_field( - default=None, metadata=dc_config(field_name="latency_ms") - ) + published_tracks: 'PublishedTrackFlags' = dc_field(metadata=dc_config(field_name="published_tracks")) + browser: str | None = dc_field(default=None, metadata=dc_config(field_name="browser")) + browser_version: str | None = dc_field(default=None, metadata=dc_config(field_name="browser_version")) + cq_score: int | None = dc_field(default=None, metadata=dc_config(field_name="cq_score")) + current_ip: str | None = dc_field(default=None, metadata=dc_config(field_name="current_ip")) + current_sfu: str | None = dc_field(default=None, metadata=dc_config(field_name="current_sfu")) + distance_to_sfu_kilometers: float | None = dc_field(default=None, metadata=dc_config(field_name="distance_to_sfu_kilometers")) + ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + freezes_duration_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="freezes_duration_ms")) + ingress: str | None = dc_field(default=None, metadata=dc_config(field_name="ingress")) + jitter_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="jitter_ms")) + latency_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="latency_ms")) os: str | None = dc_field(default=None, metadata=dc_config(field_name="os")) - publisher_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="publisher_type") - ) + publisher_type: str | None = dc_field(default=None, metadata=dc_config(field_name="publisher_type")) sdk: str | None = dc_field(default=None, metadata=dc_config(field_name="sdk")) - sdk_version: str | None = dc_field( - default=None, metadata=dc_config(field_name="sdk_version") - ) - started_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="started_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - unified_session_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="unified_session_id") - ) - webrtc_version: str | None = dc_field( - default=None, metadata=dc_config(field_name="webrtc_version") - ) - location: "CallStatsLocation | None" = dc_field( - default=None, metadata=dc_config(field_name="location") - ) - + sdk_version: str | None = dc_field(default=None, metadata=dc_config(field_name="sdk_version")) + started_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + unified_session_id: str | None = dc_field(default=None, metadata=dc_config(field_name="unified_session_id")) + webrtc_version: str | None = dc_field(default=None, metadata=dc_config(field_name="webrtc_version")) + location: 'CallStatsLocation | None' = dc_field(default=None, metadata=dc_config(field_name="location")) @dataclass class CallStatsReportReadyEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) - counts: "CallStatsParticipantCounts" = dc_field( - metadata=dc_config(field_name="counts") - ) + counts: 'CallStatsParticipantCounts' = dc_field(metadata=dc_config(field_name="counts")) # The type of event, "call.report_ready" in this case - type: str = dc_field( - default="call.stats_report_ready", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="call.stats_report_ready", metadata=dc_config(field_name="type")) # Whether participants_overview is truncated by the server-side limit - is_trimmed: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_trimmed") - ) + is_trimmed: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_trimmed")) # Top participant sessions overview - participants_overview: "list[CallStatsParticipant] | None" = dc_field( - default=None, metadata=dc_config(field_name="participants_overview") - ) - + participants_overview: 'list[CallStatsParticipant] | None' = dc_field(default=None, metadata=dc_config(field_name="participants_overview")) @dataclass class CallStatsReportSummaryResponse(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - call_duration_seconds: int = dc_field( - metadata=dc_config(field_name="call_duration_seconds") - ) + call_duration_seconds: int = dc_field(metadata=dc_config(field_name="call_duration_seconds")) call_session_id: str = dc_field(metadata=dc_config(field_name="call_session_id")) call_status: str = dc_field(metadata=dc_config(field_name="call_status")) - first_stats_time: datetime = dc_field( - metadata=dc_config( - field_name="first_stats_time", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - created_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - min_user_rating: int | None = dc_field( - default=None, metadata=dc_config(field_name="min_user_rating") - ) - quality_score: int | None = dc_field( - default=None, metadata=dc_config(field_name="quality_score") - ) - + first_stats_time: datetime = dc_field(metadata=dc_config(field_name="first_stats_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + min_user_rating: int | None = dc_field(default=None, metadata=dc_config(field_name="min_user_rating")) + quality_score: int | None = dc_field(default=None, metadata=dc_config(field_name="quality_score")) @dataclass class CallStatsSessionResponse(DataClassJsonMixin): call_id: str = dc_field(metadata=dc_config(field_name="call_id")) call_session_id: str = dc_field(metadata=dc_config(field_name="call_session_id")) call_type: str = dc_field(metadata=dc_config(field_name="call_type")) - generated_at: datetime = dc_field( - metadata=dc_config( - field_name="generated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - counts: "CallStatsParticipantCounts" = dc_field( - metadata=dc_config(field_name="counts") - ) - call_ended_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="call_ended_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - call_started_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="call_started_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + generated_at: datetime = dc_field(metadata=dc_config(field_name="generated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + counts: 'CallStatsParticipantCounts' = dc_field(metadata=dc_config(field_name="counts")) + call_ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="call_ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + call_started_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="call_started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class CallTranscription(DataClassJsonMixin): - end_time: datetime = dc_field( - metadata=dc_config( - field_name="end_time", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + end_time: datetime = dc_field(metadata=dc_config(field_name="end_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) filename: str = dc_field(metadata=dc_config(field_name="filename")) session_id: str = dc_field(metadata=dc_config(field_name="session_id")) - start_time: datetime = dc_field( - metadata=dc_config( - field_name="start_time", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + start_time: datetime = dc_field(metadata=dc_config(field_name="start_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) url: str = dc_field(metadata=dc_config(field_name="url")) - @dataclass class CallTranscriptionFailedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # The type of event: "call.transcription_failed" in this case - type: str = dc_field( - default="call.transcription_failed", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="call.transcription_failed", metadata=dc_config(field_name="type")) # The error message detailing why transcription failed. error: str | None = dc_field(default=None, metadata=dc_config(field_name="error")) - @dataclass class CallTranscriptionReadyEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # CallTranscription represents a transcription of a call. - call_transcription: "CallTranscription" = dc_field( - metadata=dc_config(field_name="call_transcription") - ) + call_transcription: 'CallTranscription' = dc_field(metadata=dc_config(field_name="call_transcription")) # The type of event: "call.transcription_ready" in this case - type: str = dc_field( - default="call.transcription_ready", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.transcription_ready", metadata=dc_config(field_name="type")) @dataclass class CallTranscriptionStartedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # The type of event: "call.transcription_started" in this case - type: str = dc_field( - default="call.transcription_started", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.transcription_started", metadata=dc_config(field_name="type")) @dataclass class CallTranscriptionStoppedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # The type of event: "call.transcription_stopped" in this case - type: str = dc_field( - default="call.transcription_stopped", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.transcription_stopped", metadata=dc_config(field_name="type")) @dataclass class CallType(DataClassJsonMixin): app: int = dc_field(metadata=dc_config(field_name="app")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) id: int = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) - recording_external_storage: str = dc_field( - metadata=dc_config(field_name="recording_external_storage") - ) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - notification_settings: "NotificationSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="notification_settings") - ) - settings: "CallSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="settings") - ) - + recording_external_storage: str = dc_field(metadata=dc_config(field_name="recording_external_storage")) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + notification_settings: 'NotificationSettings | None' = dc_field(default=None, metadata=dc_config(field_name="notification_settings")) + settings: 'CallSettings | None' = dc_field(default=None, metadata=dc_config(field_name="settings")) @dataclass class CallTypeResponse(DataClassJsonMixin): # the time the call type was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # the name of the call type name: str = dc_field(metadata=dc_config(field_name="name")) # the time the call type was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # the permissions granted to each role - grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) - notification_settings: "NotificationSettingsResponse" = dc_field( - metadata=dc_config(field_name="notification_settings") - ) - settings: "CallSettingsResponse" = dc_field( - metadata=dc_config(field_name="settings") - ) + grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) + notification_settings: 'NotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="notification_settings")) + settings: 'CallSettingsResponse' = dc_field(metadata=dc_config(field_name="settings")) # the external storage for the call type - external_storage: str | None = dc_field( - default=None, metadata=dc_config(field_name="external_storage") - ) - + external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="external_storage")) @dataclass class CallTypeRuleParameters(DataClassJsonMixin): - call_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="call_type") - ) - + call_type: str | None = dc_field(default=None, metadata=dc_config(field_name="call_type")) @dataclass class CallUpdatedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) # The capabilities by role for this call - capabilities_by_role: "dict[str, list[str]]" = dc_field( - metadata=dc_config(field_name="capabilities_by_role") - ) + capabilities_by_role: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="capabilities_by_role")) # The type of event: "call.updated" in this case type: str = dc_field(default="call.updated", metadata=dc_config(field_name="type")) - @dataclass class CallUserFeedbackSubmittedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The rating given by the user (1-5) rating: int = dc_field(metadata=dc_config(field_name="rating")) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # The type of event, "call.user_feedback" in this case - type: str = dc_field( - default="call.user_feedback_submitted", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="call.user_feedback_submitted", metadata=dc_config(field_name="type")) # The reason provided by the user for the rating reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) sdk: str | None = dc_field(default=None, metadata=dc_config(field_name="sdk")) - sdk_version: str | None = dc_field( - default=None, metadata=dc_config(field_name="sdk_version") - ) + sdk_version: str | None = dc_field(default=None, metadata=dc_config(field_name="sdk_version")) # Custom data provided by the user - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class CallUserMutedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) from_user_id: str = dc_field(metadata=dc_config(field_name="from_user_id")) reason: str = dc_field(metadata=dc_config(field_name="reason")) - muted_user_ids: list[str] = dc_field( - metadata=dc_config(field_name="muted_user_ids") - ) + muted_user_ids: list[str] = dc_field(metadata=dc_config(field_name="muted_user_ids")) # The type of event: "call.user_muted" in this case - type: str = dc_field( - default="call.user_muted", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.user_muted", metadata=dc_config(field_name="type")) @dataclass class CallViolationCountParameters(DataClassJsonMixin): - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - time_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="time_window") - ) - + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) @dataclass class CallsPerDayReport(DataClassJsonMixin): count: int = dc_field(metadata=dc_config(field_name="count")) - @dataclass class CallsPerDayReportResponse(DataClassJsonMixin): - daily: "list[DailyAggregateCallsPerDayReportResponse]" = dc_field( - metadata=dc_config(field_name="daily") - ) - + daily: 'list[DailyAggregateCallsPerDayReportResponse]' = dc_field(metadata=dc_config(field_name="daily")) @dataclass class CampaignChannelMember(DataClassJsonMixin): user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - channel_role: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_role") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + channel_role: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_role")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class CampaignChannelTemplate(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - members: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="members") - ) - members_template: "list[CampaignChannelMember] | None" = dc_field( - default=None, metadata=dc_config(field_name="members_template") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + members: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="members")) + members_template: 'list[CampaignChannelMember] | None' = dc_field(default=None, metadata=dc_config(field_name="members_template")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class CampaignCompletedEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="campaign.completed", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - campaign: "CampaignResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="campaign") - ) - + type: str = dc_field(default="campaign.completed", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + campaign: 'CampaignResponse | None' = dc_field(default=None, metadata=dc_config(field_name="campaign")) @dataclass class CampaignMessageTemplate(DataClassJsonMixin): text: str = dc_field(metadata=dc_config(field_name="text")) - poll_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="poll_id") - ) - searchable: bool | None = dc_field( - default=None, metadata=dc_config(field_name="searchable") - ) - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) + searchable: bool | None = dc_field(default=None, metadata=dc_config(field_name="searchable")) + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class CampaignResponse(DataClassJsonMixin): create_channels: bool = dc_field(metadata=dc_config(field_name="create_channels")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) description: str = dc_field(metadata=dc_config(field_name="description")) id: str = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) sender_id: str = dc_field(metadata=dc_config(field_name="sender_id")) sender_mode: str = dc_field(metadata=dc_config(field_name="sender_mode")) - sender_visibility: str = dc_field( - metadata=dc_config(field_name="sender_visibility") - ) + sender_visibility: str = dc_field(metadata=dc_config(field_name="sender_visibility")) show_channels: bool = dc_field(metadata=dc_config(field_name="show_channels")) skip_push: bool = dc_field(metadata=dc_config(field_name="skip_push")) skip_webhook: bool = dc_field(metadata=dc_config(field_name="skip_webhook")) status: str = dc_field(metadata=dc_config(field_name="status")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) segment_ids: list[str] = dc_field(metadata=dc_config(field_name="segment_ids")) - segments: "list[Segment]" = dc_field(metadata=dc_config(field_name="segments")) + segments: 'list[Segment]' = dc_field(metadata=dc_config(field_name="segments")) user_ids: list[str] = dc_field(metadata=dc_config(field_name="user_ids")) - users: "list[UserResponse]" = dc_field(metadata=dc_config(field_name="users")) - stats: "CampaignStatsResponse" = dc_field(metadata=dc_config(field_name="stats")) - scheduled_for: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="scheduled_for", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - stop_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="stop_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - channel_template: "CampaignChannelTemplate | None" = dc_field( - default=None, metadata=dc_config(field_name="channel_template") - ) - message_template: "CampaignMessageTemplate | None" = dc_field( - default=None, metadata=dc_config(field_name="message_template") - ) + users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="users")) + stats: 'CampaignStatsResponse' = dc_field(metadata=dc_config(field_name="stats")) + scheduled_for: datetime | None = dc_field(default=None, metadata=dc_config(field_name="scheduled_for", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + stop_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="stop_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + channel_template: 'CampaignChannelTemplate | None' = dc_field(default=None, metadata=dc_config(field_name="channel_template")) + message_template: 'CampaignMessageTemplate | None' = dc_field(default=None, metadata=dc_config(field_name="message_template")) # User response object - sender: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="sender") - ) - + sender: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="sender")) @dataclass class CampaignStartedEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="campaign.started", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - campaign: "CampaignResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="campaign") - ) - + type: str = dc_field(default="campaign.started", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + campaign: 'CampaignResponse | None' = dc_field(default=None, metadata=dc_config(field_name="campaign")) @dataclass class CampaignStatsResponse(DataClassJsonMixin): progress: float = dc_field(metadata=dc_config(field_name="progress")) - stats_channels_created: int = dc_field( - metadata=dc_config(field_name="stats_channels_created") - ) - stats_completed_at: datetime = dc_field( - metadata=dc_config( - field_name="stats_completed_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - stats_messages_sent: int = dc_field( - metadata=dc_config(field_name="stats_messages_sent") - ) - stats_started_at: datetime = dc_field( - metadata=dc_config( - field_name="stats_started_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + stats_channels_created: int = dc_field(metadata=dc_config(field_name="stats_channels_created")) + stats_completed_at: datetime = dc_field(metadata=dc_config(field_name="stats_completed_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + stats_messages_sent: int = dc_field(metadata=dc_config(field_name="stats_messages_sent")) + stats_started_at: datetime = dc_field(metadata=dc_config(field_name="stats_started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) stats_users_read: int = dc_field(metadata=dc_config(field_name="stats_users_read")) stats_users_sent: int = dc_field(metadata=dc_config(field_name="stats_users_sent")) - @dataclass class CancelImportV2TaskRequest(DataClassJsonMixin): pass - @dataclass class CancelImportV2TaskResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class CastPollVoteRequest(DataClassJsonMixin): - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - vote: "VoteData | None" = dc_field( - default=None, metadata=dc_config(field_name="vote") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + vote: 'VoteData | None' = dc_field(default=None, metadata=dc_config(field_name="vote")) @dataclass class ChangeFeedVisibilityRequest(DataClassJsonMixin): # Feed visibility level: public, visible, followers, members, or private visibility: str = dc_field(metadata=dc_config(field_name="visibility")) # What to do with existing pending follows when loosening visibility from 'followers': auto_approve (default) or reject - pending_follows_action: str | None = dc_field( - default=None, metadata=dc_config(field_name="pending_follows_action") - ) - + pending_follows_action: str | None = dc_field(default=None, metadata=dc_config(field_name="pending_follows_action")) @dataclass class ChangeFeedVisibilityResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed: "FeedResponse" = dc_field(metadata=dc_config(field_name="feed")) - + feed: 'FeedResponse' = dc_field(metadata=dc_config(field_name="feed")) @dataclass class ChannelBatchCompletedEvent(DataClassJsonMixin): - batch_created_at: datetime = dc_field( - metadata=dc_config( - field_name="batch_created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - finished_at: datetime = dc_field( - metadata=dc_config( - field_name="finished_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + batch_created_at: datetime = dc_field(metadata=dc_config(field_name="batch_created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + finished_at: datetime = dc_field(metadata=dc_config(field_name="finished_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) operation: str = dc_field(metadata=dc_config(field_name="operation")) status: str = dc_field(metadata=dc_config(field_name="status")) - success_channels_count: int = dc_field( - metadata=dc_config(field_name="success_channels_count") - ) + success_channels_count: int = dc_field(metadata=dc_config(field_name="success_channels_count")) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - failed_channels: "list[FailedChannelUpdates]" = dc_field( - metadata=dc_config(field_name="failed_channels") - ) + failed_channels: 'list[FailedChannelUpdates]' = dc_field(metadata=dc_config(field_name="failed_channels")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="channel_batch_update.completed", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="channel_batch_update.completed", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class ChannelBatchMemberRequest(DataClassJsonMixin): user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - channel_role: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_role") - ) - + channel_role: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_role")) @dataclass class ChannelBatchStartedEvent(DataClassJsonMixin): - batch_created_at: datetime = dc_field( - metadata=dc_config( - field_name="batch_created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - finished_at: datetime = dc_field( - metadata=dc_config( - field_name="finished_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + batch_created_at: datetime = dc_field(metadata=dc_config(field_name="batch_created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + finished_at: datetime = dc_field(metadata=dc_config(field_name="finished_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) operation: str = dc_field(metadata=dc_config(field_name="operation")) status: str = dc_field(metadata=dc_config(field_name="status")) - success_channels_count: int = dc_field( - metadata=dc_config(field_name="success_channels_count") - ) + success_channels_count: int = dc_field(metadata=dc_config(field_name="success_channels_count")) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - failed_channels: "list[FailedChannelUpdates]" = dc_field( - metadata=dc_config(field_name="failed_channels") - ) + failed_channels: 'list[FailedChannelUpdates]' = dc_field(metadata=dc_config(field_name="failed_channels")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="channel_batch_update.started", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="channel_batch_update.started", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class ChannelBatchUpdateRequest(DataClassJsonMixin): operation: str = dc_field(metadata=dc_config(field_name="operation")) # Filter to apply to the query filter: dict[str, object] = dc_field(metadata=dc_config(field_name="filter")) - members: "list[ChannelBatchMemberRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="members") - ) - data: "ChannelDataUpdate | None" = dc_field( - default=None, metadata=dc_config(field_name="data") - ) - + # `updateData` only. Deletes these keys from each channel's existing custom object, leaving every other custom key untouched. Keys are dot-paths; deleting a key that does not exist is a no-op. Cannot be combined with `data.custom` + custom_unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="custom_unset")) + members: 'list[ChannelBatchMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) + # `updateData` only. Merges these keys into each channel's existing custom object, leaving every other custom key untouched. Keys are dot-paths, so `a.b` sets key `b` inside object `a` (the parent object must already exist). Cannot be combined with `data.custom` + custom_set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom_set")) + data: 'ChannelDataUpdate | None' = dc_field(default=None, metadata=dc_config(field_name="data")) @dataclass class ChannelBatchUpdateResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - task_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="task_id") - ) - + task_id: str | None = dc_field(default=None, metadata=dc_config(field_name="task_id")) @dataclass class ChannelConfig(DataClassJsonMixin): @@ -6098,31 +2954,16 @@ class ChannelConfig(DataClassJsonMixin): automod_behavior: str = dc_field(metadata=dc_config(field_name="automod_behavior")) connect_events: bool = dc_field(metadata=dc_config(field_name="connect_events")) count_messages: bool = dc_field(metadata=dc_config(field_name="count_messages")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom_events: bool = dc_field(metadata=dc_config(field_name="custom_events")) delivery_events: bool = dc_field(metadata=dc_config(field_name="delivery_events")) - mark_messages_pending: bool = dc_field( - metadata=dc_config(field_name="mark_messages_pending") - ) - max_message_length: int = dc_field( - metadata=dc_config(field_name="max_message_length") - ) - message_retention: str = dc_field( - metadata=dc_config(field_name="message_retention") - ) + mark_messages_pending: bool = dc_field(metadata=dc_config(field_name="mark_messages_pending")) + max_message_length: int = dc_field(metadata=dc_config(field_name="max_message_length")) + message_retention: str = dc_field(metadata=dc_config(field_name="message_retention")) mutes: bool = dc_field(metadata=dc_config(field_name="mutes")) name: str = dc_field(metadata=dc_config(field_name="name")) polls: bool = dc_field(metadata=dc_config(field_name="polls")) - push_notifications: bool = dc_field( - metadata=dc_config(field_name="push_notifications") - ) + push_notifications: bool = dc_field(metadata=dc_config(field_name="push_notifications")) quotes: bool = dc_field(metadata=dc_config(field_name="quotes")) reactions: bool = dc_field(metadata=dc_config(field_name="reactions")) read_events: bool = dc_field(metadata=dc_config(field_name="read_events")) @@ -6130,118 +2971,55 @@ class ChannelConfig(DataClassJsonMixin): replies: bool = dc_field(metadata=dc_config(field_name="replies")) search: bool = dc_field(metadata=dc_config(field_name="search")) shared_locations: bool = dc_field(metadata=dc_config(field_name="shared_locations")) - skip_last_msg_update_for_system_msgs: bool = dc_field( - metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs") - ) + skip_last_msg_update_for_system_msgs: bool = dc_field(metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs")) typing_events: bool = dc_field(metadata=dc_config(field_name="typing_events")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) uploads: bool = dc_field(metadata=dc_config(field_name="uploads")) url_enrichment: bool = dc_field(metadata=dc_config(field_name="url_enrichment")) - user_message_reminders: bool = dc_field( - metadata=dc_config(field_name="user_message_reminders") - ) + user_message_reminders: bool = dc_field(metadata=dc_config(field_name="user_message_reminders")) # List of commands that channel supports commands: list[str] = dc_field(metadata=dc_config(field_name="commands")) - blocklist: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist") - ) - blocklist_behavior: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist_behavior") - ) - partition_size: int | None = dc_field( - default=None, metadata=dc_config(field_name="partition_size") - ) - partition_ttl: str | None = dc_field( - default=None, metadata=dc_config(field_name="partition_ttl") - ) - push_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_level") - ) - allowed_flag_reasons: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="allowed_flag_reasons") - ) - blocklists: "list[BlockListOptions] | None" = dc_field( - default=None, metadata=dc_config(field_name="blocklists") - ) + blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) + blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) + partition_size: int | None = dc_field(default=None, metadata=dc_config(field_name="partition_size")) + partition_ttl: str | None = dc_field(default=None, metadata=dc_config(field_name="partition_ttl")) + push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) + allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) + blocklists: 'list[BlockListOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="blocklists")) # Sets thresholds for AI moderation - automod_thresholds: "Thresholds | None" = dc_field( - default=None, metadata=dc_config(field_name="automod_thresholds") - ) - chat_preferences: "ChatPreferences | None" = dc_field( - default=None, metadata=dc_config(field_name="chat_preferences") - ) - + automod_thresholds: 'Thresholds | None' = dc_field(default=None, metadata=dc_config(field_name="automod_thresholds")) + chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) @dataclass class ChannelConfigOverrides(DataClassJsonMixin): - blocklist: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist") - ) - blocklist_behavior: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist_behavior") - ) + blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) + blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) # Enable/disable message counting - count_messages: bool | None = dc_field( - default=None, metadata=dc_config(field_name="count_messages") - ) + count_messages: bool | None = dc_field(default=None, metadata=dc_config(field_name="count_messages")) # Overrides max message length - max_message_length: int | None = dc_field( - default=None, metadata=dc_config(field_name="max_message_length") - ) + max_message_length: int | None = dc_field(default=None, metadata=dc_config(field_name="max_message_length")) # Overrides the push notification level for this channel - push_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_level") - ) + push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) # Enables message quotes - quotes: bool | None = dc_field( - default=None, metadata=dc_config(field_name="quotes") - ) + quotes: bool | None = dc_field(default=None, metadata=dc_config(field_name="quotes")) # Enables or disables reactions - reactions: bool | None = dc_field( - default=None, metadata=dc_config(field_name="reactions") - ) + reactions: bool | None = dc_field(default=None, metadata=dc_config(field_name="reactions")) # Enables message replies (threads) - replies: bool | None = dc_field( - default=None, metadata=dc_config(field_name="replies") - ) + replies: bool | None = dc_field(default=None, metadata=dc_config(field_name="replies")) # Enable/disable shared locations - shared_locations: bool | None = dc_field( - default=None, metadata=dc_config(field_name="shared_locations") - ) + shared_locations: bool | None = dc_field(default=None, metadata=dc_config(field_name="shared_locations")) # Enables or disables typing events - typing_events: bool | None = dc_field( - default=None, metadata=dc_config(field_name="typing_events") - ) + typing_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="typing_events")) # Enables or disables file uploads - uploads: bool | None = dc_field( - default=None, metadata=dc_config(field_name="uploads") - ) + uploads: bool | None = dc_field(default=None, metadata=dc_config(field_name="uploads")) # Enables or disables URL enrichment - url_enrichment: bool | None = dc_field( - default=None, metadata=dc_config(field_name="url_enrichment") - ) + url_enrichment: bool | None = dc_field(default=None, metadata=dc_config(field_name="url_enrichment")) # Enable/disable user message reminders - user_message_reminders: bool | None = dc_field( - default=None, metadata=dc_config(field_name="user_message_reminders") - ) + user_message_reminders: bool | None = dc_field(default=None, metadata=dc_config(field_name="user_message_reminders")) # List of commands that channel supports - commands: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="commands") - ) - chat_preferences: "ChatPreferences | None" = dc_field( - default=None, metadata=dc_config(field_name="chat_preferences") - ) - grants: "dict[str, list[str]] | None" = dc_field( - default=None, metadata=dc_config(field_name="grants") - ) - + commands: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="commands")) + chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) + grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) @dataclass class ChannelConfigWithInfo(DataClassJsonMixin): @@ -6249,31 +3027,16 @@ class ChannelConfigWithInfo(DataClassJsonMixin): automod_behavior: str = dc_field(metadata=dc_config(field_name="automod_behavior")) connect_events: bool = dc_field(metadata=dc_config(field_name="connect_events")) count_messages: bool = dc_field(metadata=dc_config(field_name="count_messages")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom_events: bool = dc_field(metadata=dc_config(field_name="custom_events")) delivery_events: bool = dc_field(metadata=dc_config(field_name="delivery_events")) - mark_messages_pending: bool = dc_field( - metadata=dc_config(field_name="mark_messages_pending") - ) - max_message_length: int = dc_field( - metadata=dc_config(field_name="max_message_length") - ) - message_retention: str = dc_field( - metadata=dc_config(field_name="message_retention") - ) + mark_messages_pending: bool = dc_field(metadata=dc_config(field_name="mark_messages_pending")) + max_message_length: int = dc_field(metadata=dc_config(field_name="max_message_length")) + message_retention: str = dc_field(metadata=dc_config(field_name="message_retention")) mutes: bool = dc_field(metadata=dc_config(field_name="mutes")) name: str = dc_field(metadata=dc_config(field_name="name")) polls: bool = dc_field(metadata=dc_config(field_name="polls")) - push_notifications: bool = dc_field( - metadata=dc_config(field_name="push_notifications") - ) + push_notifications: bool = dc_field(metadata=dc_config(field_name="push_notifications")) quotes: bool = dc_field(metadata=dc_config(field_name="quotes")) reactions: bool = dc_field(metadata=dc_config(field_name="reactions")) read_events: bool = dc_field(metadata=dc_config(field_name="read_events")) @@ -6281,56 +3044,24 @@ class ChannelConfigWithInfo(DataClassJsonMixin): replies: bool = dc_field(metadata=dc_config(field_name="replies")) search: bool = dc_field(metadata=dc_config(field_name="search")) shared_locations: bool = dc_field(metadata=dc_config(field_name="shared_locations")) - skip_last_msg_update_for_system_msgs: bool = dc_field( - metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs") - ) + skip_last_msg_update_for_system_msgs: bool = dc_field(metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs")) typing_events: bool = dc_field(metadata=dc_config(field_name="typing_events")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) uploads: bool = dc_field(metadata=dc_config(field_name="uploads")) url_enrichment: bool = dc_field(metadata=dc_config(field_name="url_enrichment")) - user_message_reminders: bool = dc_field( - metadata=dc_config(field_name="user_message_reminders") - ) - commands: "list[Command]" = dc_field(metadata=dc_config(field_name="commands")) - blocklist: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist") - ) - blocklist_behavior: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist_behavior") - ) - partition_size: int | None = dc_field( - default=None, metadata=dc_config(field_name="partition_size") - ) - partition_ttl: str | None = dc_field( - default=None, metadata=dc_config(field_name="partition_ttl") - ) - push_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_level") - ) - allowed_flag_reasons: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="allowed_flag_reasons") - ) - blocklists: "list[BlockListOptions] | None" = dc_field( - default=None, metadata=dc_config(field_name="blocklists") - ) + user_message_reminders: bool = dc_field(metadata=dc_config(field_name="user_message_reminders")) + commands: 'list[Command]' = dc_field(metadata=dc_config(field_name="commands")) + blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) + blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) + partition_size: int | None = dc_field(default=None, metadata=dc_config(field_name="partition_size")) + partition_ttl: str | None = dc_field(default=None, metadata=dc_config(field_name="partition_ttl")) + push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) + allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) + blocklists: 'list[BlockListOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="blocklists")) # Sets thresholds for AI moderation - automod_thresholds: "Thresholds | None" = dc_field( - default=None, metadata=dc_config(field_name="automod_thresholds") - ) - chat_preferences: "ChatPreferences | None" = dc_field( - default=None, metadata=dc_config(field_name="chat_preferences") - ) - grants: "dict[str, list[str]] | None" = dc_field( - default=None, metadata=dc_config(field_name="grants") - ) - + automod_thresholds: 'Thresholds | None' = dc_field(default=None, metadata=dc_config(field_name="automod_thresholds")) + chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) + grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) @dataclass class ChannelContextResponse(DataClassJsonMixin): @@ -6341,142 +3072,66 @@ class ChannelContextResponse(DataClassJsonMixin): # Channel type type: str = dc_field(metadata=dc_config(field_name="type")) # User response object - created_by: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) - + created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) @dataclass class ChannelCreatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents channel in chat - channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.created" in this case - type: str = dc_field( - default="channel.created", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="channel.created", metadata=dc_config(field_name="type")) # The ID of the channel which was created - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel which was created - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel which was created cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ChannelDataUpdate(DataClassJsonMixin): - auto_translation_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="auto_translation_enabled") - ) - auto_translation_language: str | None = dc_field( - default=None, metadata=dc_config(field_name="auto_translation_language") - ) - disabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="disabled") - ) - frozen: bool | None = dc_field( - default=None, metadata=dc_config(field_name="frozen") - ) + auto_translation_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_enabled")) + auto_translation_language: str | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_language")) + disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="disabled")) + frozen: bool | None = dc_field(default=None, metadata=dc_config(field_name="frozen")) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Channel configuration overrides - config_overrides: "ChannelConfigOverrides | None" = dc_field( - default=None, metadata=dc_config(field_name="config_overrides") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + config_overrides: 'ChannelConfigOverrides | None' = dc_field(default=None, metadata=dc_config(field_name="config_overrides")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class ChannelDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents channel in chat - channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.deleted" in this case - type: str = dc_field( - default="channel.deleted", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="channel.deleted", metadata=dc_config(field_name="type")) # The ID of the channel which was deleted - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel which was deleted - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel which was deleted cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ChannelExport(DataClassJsonMixin): @@ -6484,261 +3139,120 @@ class ChannelExport(DataClassJsonMixin): # Channel ID id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # Date to export messages since - messages_since: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="messages_since", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + messages_since: datetime | None = dc_field(default=None, metadata=dc_config(field_name="messages_since", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Date to export messages until - messages_until: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="messages_until", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + messages_until: datetime | None = dc_field(default=None, metadata=dc_config(field_name="messages_until", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Channel type type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - @dataclass class ChannelFrozenEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.frozen" in this case - type: str = dc_field( - default="channel.frozen", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="channel.frozen", metadata=dc_config(field_name="type")) # The ID of the channel which was frozen - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The type of the channel which was frozen - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel which was frozen cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class ChannelGetOrCreateRequest(DataClassJsonMixin): # Whether this channel will be hidden for the user who created the channel or not - hide_for_creator: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hide_for_creator") - ) + hide_for_creator: bool | None = dc_field(default=None, metadata=dc_config(field_name="hide_for_creator")) # Refresh channel state state: bool | None = dc_field(default=None, metadata=dc_config(field_name="state")) - thread_unread_counts: bool | None = dc_field( - default=None, metadata=dc_config(field_name="thread_unread_counts") - ) + thread_unread_counts: bool | None = dc_field(default=None, metadata=dc_config(field_name="thread_unread_counts")) # Top-level keys of the message sender's channel-member custom data to include under member.custom (max 8 keys, 64 chars each) - member_custom_include: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="member_custom_include") - ) - data: "ChannelInput | None" = dc_field( - default=None, metadata=dc_config(field_name="data") - ) - members: "PaginationParams | None" = dc_field( - default=None, metadata=dc_config(field_name="members") - ) - messages: "MessagePaginationParams | None" = dc_field( - default=None, metadata=dc_config(field_name="messages") - ) - watchers: "PaginationParams | None" = dc_field( - default=None, metadata=dc_config(field_name="watchers") - ) - + member_custom_include: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="member_custom_include")) + data: 'ChannelInput | None' = dc_field(default=None, metadata=dc_config(field_name="data")) + members: 'PaginationParams | None' = dc_field(default=None, metadata=dc_config(field_name="members")) + messages: 'MessagePaginationParams | None' = dc_field(default=None, metadata=dc_config(field_name="messages")) + watchers: 'PaginationParams | None' = dc_field(default=None, metadata=dc_config(field_name="watchers")) @dataclass class ChannelHiddenEvent(DataClassJsonMixin): # Whether the history was cleared clear_history: bool = dc_field(metadata=dc_config(field_name="clear_history")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents channel in chat - channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.hidden" in this case - type: str = dc_field( - default="channel.hidden", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="channel.hidden", metadata=dc_config(field_name="type")) # The ID of the channel which was hidden - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel which was hidden - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel which was hidden cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ChannelInput(DataClassJsonMixin): # Enable or disable auto translation - auto_translation_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="auto_translation_enabled") - ) + auto_translation_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_enabled")) # Language (or comma-separated list of languages) to translate to when auto translation is active - auto_translation_language: str | None = dc_field( - default=None, metadata=dc_config(field_name="auto_translation_language") - ) - created_by_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="created_by_id") - ) - disabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="disabled") - ) + auto_translation_language: str | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_language")) + created_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_id")) + disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="disabled")) # Freeze or unfreeze the channel - frozen: bool | None = dc_field( - default=None, metadata=dc_config(field_name="frozen") - ) + frozen: bool | None = dc_field(default=None, metadata=dc_config(field_name="frozen")) # Team the channel belongs to (if multi-tenant mode is enabled) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - truncated_by_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="truncated_by_id") - ) - filter_tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_tags") - ) - invites: "list[ChannelMemberRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="invites") - ) - members: "list[ChannelMemberRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="members") - ) + truncated_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="truncated_by_id")) + filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) + invites: 'list[ChannelMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="invites")) + members: 'list[ChannelMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) # Channel configuration overrides - config_overrides: "ChannelConfigOverrides | None" = dc_field( - default=None, metadata=dc_config(field_name="config_overrides") - ) + config_overrides: 'ChannelConfigOverrides | None' = dc_field(default=None, metadata=dc_config(field_name="config_overrides")) # User request object - created_by: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + created_by: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class ChannelInputRequest(DataClassJsonMixin): - auto_translation_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="auto_translation_enabled") - ) - auto_translation_language: str | None = dc_field( - default=None, metadata=dc_config(field_name="auto_translation_language") - ) - disabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="disabled") - ) - frozen: bool | None = dc_field( - default=None, metadata=dc_config(field_name="frozen") - ) + auto_translation_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_enabled")) + auto_translation_language: str | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_language")) + disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="disabled")) + frozen: bool | None = dc_field(default=None, metadata=dc_config(field_name="frozen")) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - invites: "list[ChannelMemberRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="invites") - ) - members: "list[ChannelMemberRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="members") - ) + invites: 'list[ChannelMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="invites")) + members: 'list[ChannelMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) # Channel configuration overrides - config_overrides: "ConfigOverridesRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="config_overrides") - ) + config_overrides: 'ConfigOverridesRequest | None' = dc_field(default=None, metadata=dc_config(field_name="config_overrides")) # User request object - created_by: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + created_by: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class ChannelMemberPartialResponse(DataClassJsonMixin): # Role of the member in the channel channel_role: str = dc_field(metadata=dc_config(field_name="channel_role")) # Whether the user muted notifications for this channel - notifications_muted: bool = dc_field( - metadata=dc_config(field_name="notifications_muted") - ) + notifications_muted: bool = dc_field(metadata=dc_config(field_name="notifications_muted")) # Channel-member custom fields projected via `member_custom_include` - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class ChannelMemberRequest(DataClassJsonMixin): - user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # Role of the member in the channel - channel_role: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_role") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + channel_role: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_role")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + user: 'MemberUserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ChannelMemberResponse(DataClassJsonMixin): @@ -6747,142 +3261,49 @@ class ChannelMemberResponse(DataClassJsonMixin): # Role of the member in the channel channel_role: str = dc_field(metadata=dc_config(field_name="channel_role")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - notifications_muted: bool = dc_field( - metadata=dc_config(field_name="notifications_muted") - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + notifications_muted: bool = dc_field(metadata=dc_config(field_name="notifications_muted")) # Whether member is shadow banned in this channel or not shadow_banned: bool = dc_field(metadata=dc_config(field_name="shadow_banned")) # Date/time of the last update - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - archived_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="archived_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + archived_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="archived_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Expiration date of the ban - ban_expires: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="ban_expires", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + ban_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ban_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Whether the member's ban also applies to channels the channel's creator will create in the future (an active future channel ban by the creator targets this member) - ban_from_future_channels: bool | None = dc_field( - default=None, metadata=dc_config(field_name="ban_from_future_channels") - ) - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + ban_from_future_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="ban_from_future_channels")) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Expiration date of the future channel ban; absent when the future channel ban is permanent - future_channel_ban_expires: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="future_channel_ban_expires", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + future_channel_ban_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="future_channel_ban_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Date when invite was accepted - invite_accepted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="invite_accepted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + invite_accepted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="invite_accepted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Date when invite was rejected - invite_rejected_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="invite_rejected_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + invite_rejected_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="invite_rejected_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Whether member was invited or not - invited: bool | None = dc_field( - default=None, metadata=dc_config(field_name="invited") - ) + invited: bool | None = dc_field(default=None, metadata=dc_config(field_name="invited")) # Whether member is channel moderator or not - is_moderator: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_moderator") - ) - pinned_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="pinned_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + is_moderator: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_moderator")) + pinned_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pinned_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Permission level of the member in the channel (DEPRECATED: use channel_role instead). One of: member, moderator, admin, owner role: str | None = dc_field(default=None, metadata=dc_config(field_name="role")) status: str | None = dc_field(default=None, metadata=dc_config(field_name="status")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - deleted_messages: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="deleted_messages") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + deleted_messages: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="deleted_messages")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ChannelMessageCountRuleParameters(DataClassJsonMixin): - operator: str | None = dc_field( - default=None, metadata=dc_config(field_name="operator") - ) - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - + operator: str | None = dc_field(default=None, metadata=dc_config(field_name="operator")) + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) @dataclass class ChannelMessagesResponse(DataClassJsonMixin): # List of messages - messages: "list[MessageResponse]" = dc_field( - metadata=dc_config(field_name="messages") - ) + messages: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="messages")) # Represents channel in chat - channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) - + channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) @dataclass class ChannelMetadata(DataClassJsonMixin): @@ -6890,184 +3311,96 @@ class ChannelMetadata(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) type: str = dc_field(metadata=dc_config(field_name="type")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - last_message_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_message_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="member_count") - ) - message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="message_count") - ) - push_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_level") - ) + last_message_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_message_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="member_count")) + message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="message_count")) + push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - @dataclass class ChannelMute(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Date/time of the last update - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Date/time of mute expiration - expires: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="expires", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ChannelMutedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.muted" in this case type: str = dc_field(default="channel.muted", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The mute objects - mutes: "list[ChannelMute] | None" = dc_field( - default=None, metadata=dc_config(field_name="mutes") - ) - mute: "ChannelMute | None" = dc_field( - default=None, metadata=dc_config(field_name="mute") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - - -ChannelOwnCapabilityType = NewType("ChannelOwnCapabilityType", str) + mutes: 'list[ChannelMute] | None' = dc_field(default=None, metadata=dc_config(field_name="mutes")) + mute: 'ChannelMute | None' = dc_field(default=None, metadata=dc_config(field_name="mute")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) +ChannelOwnCapabilityType = NewType('ChannelOwnCapabilityType', str) class ChannelOwnCapability: - BAN_CHANNEL_MEMBERS: Final[ChannelOwnCapabilityType] = "ban-channel-members" - CAST_POLL_VOTE: Final[ChannelOwnCapabilityType] = "cast-poll-vote" - CONNECT_EVENTS: Final[ChannelOwnCapabilityType] = "connect-events" - CREATE_ATTACHMENT: Final[ChannelOwnCapabilityType] = "create-attachment" - CREATE_MENTION: Final[ChannelOwnCapabilityType] = "create-mention" - DELETE_ANY_MESSAGE: Final[ChannelOwnCapabilityType] = "delete-any-message" - DELETE_CHANNEL: Final[ChannelOwnCapabilityType] = "delete-channel" - DELETE_OWN_MESSAGE: Final[ChannelOwnCapabilityType] = "delete-own-message" - DELIVERY_EVENTS: Final[ChannelOwnCapabilityType] = "delivery-events" - FLAG_MESSAGE: Final[ChannelOwnCapabilityType] = "flag-message" - FREEZE_CHANNEL: Final[ChannelOwnCapabilityType] = "freeze-channel" - JOIN_CHANNEL: Final[ChannelOwnCapabilityType] = "join-channel" - LEAVE_CHANNEL: Final[ChannelOwnCapabilityType] = "leave-channel" - MUTE_CHANNEL: Final[ChannelOwnCapabilityType] = "mute-channel" - NOTIFY_CHANNEL: Final[ChannelOwnCapabilityType] = "notify-channel" - NOTIFY_GROUP: Final[ChannelOwnCapabilityType] = "notify-group" - NOTIFY_HERE: Final[ChannelOwnCapabilityType] = "notify-here" - NOTIFY_ROLE: Final[ChannelOwnCapabilityType] = "notify-role" - PIN_MESSAGE: Final[ChannelOwnCapabilityType] = "pin-message" - QUERY_POLL_VOTES: Final[ChannelOwnCapabilityType] = "query-poll-votes" - QUOTE_MESSAGE: Final[ChannelOwnCapabilityType] = "quote-message" - READ_EVENTS: Final[ChannelOwnCapabilityType] = "read-events" - SEARCH_MESSAGES: Final[ChannelOwnCapabilityType] = "search-messages" - SEND_CUSTOM_EVENTS: Final[ChannelOwnCapabilityType] = "send-custom-events" - SEND_LINKS: Final[ChannelOwnCapabilityType] = "send-links" - SEND_MESSAGE: Final[ChannelOwnCapabilityType] = "send-message" - SEND_POLL: Final[ChannelOwnCapabilityType] = "send-poll" - SEND_REACTION: Final[ChannelOwnCapabilityType] = "send-reaction" - SEND_REPLY: Final[ChannelOwnCapabilityType] = "send-reply" - SEND_RESTRICTED_VISIBILITY_MESSAGE: Final[ChannelOwnCapabilityType] = ( - "send-restricted-visibility-message" - ) - SEND_TYPING_EVENTS: Final[ChannelOwnCapabilityType] = "send-typing-events" - SET_CHANNEL_COOLDOWN: Final[ChannelOwnCapabilityType] = "set-channel-cooldown" - SHARE_LOCATION: Final[ChannelOwnCapabilityType] = "share-location" - SKIP_SLOW_MODE: Final[ChannelOwnCapabilityType] = "skip-slow-mode" - SLOW_MODE: Final[ChannelOwnCapabilityType] = "slow-mode" - TYPING_EVENTS: Final[ChannelOwnCapabilityType] = "typing-events" - UPDATE_ANY_MESSAGE: Final[ChannelOwnCapabilityType] = "update-any-message" - UPDATE_CHANNEL: Final[ChannelOwnCapabilityType] = "update-channel" - UPDATE_CHANNEL_MEMBERS: Final[ChannelOwnCapabilityType] = "update-channel-members" - UPDATE_OWN_MESSAGE: Final[ChannelOwnCapabilityType] = "update-own-message" - UPDATE_THREAD: Final[ChannelOwnCapabilityType] = "update-thread" - UPLOAD_FILE: Final[ChannelOwnCapabilityType] = "upload-file" - + BAN_CHANNEL_MEMBERS: Final[ChannelOwnCapabilityType] = 'ban-channel-members' + CAST_POLL_VOTE: Final[ChannelOwnCapabilityType] = 'cast-poll-vote' + CONNECT_EVENTS: Final[ChannelOwnCapabilityType] = 'connect-events' + CREATE_ATTACHMENT: Final[ChannelOwnCapabilityType] = 'create-attachment' + CREATE_MENTION: Final[ChannelOwnCapabilityType] = 'create-mention' + DELETE_ANY_MESSAGE: Final[ChannelOwnCapabilityType] = 'delete-any-message' + DELETE_CHANNEL: Final[ChannelOwnCapabilityType] = 'delete-channel' + DELETE_OWN_MESSAGE: Final[ChannelOwnCapabilityType] = 'delete-own-message' + DELIVERY_EVENTS: Final[ChannelOwnCapabilityType] = 'delivery-events' + FLAG_MESSAGE: Final[ChannelOwnCapabilityType] = 'flag-message' + FREEZE_CHANNEL: Final[ChannelOwnCapabilityType] = 'freeze-channel' + JOIN_CHANNEL: Final[ChannelOwnCapabilityType] = 'join-channel' + LEAVE_CHANNEL: Final[ChannelOwnCapabilityType] = 'leave-channel' + MUTE_CHANNEL: Final[ChannelOwnCapabilityType] = 'mute-channel' + NOTIFY_CHANNEL: Final[ChannelOwnCapabilityType] = 'notify-channel' + NOTIFY_GROUP: Final[ChannelOwnCapabilityType] = 'notify-group' + NOTIFY_HERE: Final[ChannelOwnCapabilityType] = 'notify-here' + NOTIFY_ROLE: Final[ChannelOwnCapabilityType] = 'notify-role' + PIN_MESSAGE: Final[ChannelOwnCapabilityType] = 'pin-message' + QUERY_POLL_VOTES: Final[ChannelOwnCapabilityType] = 'query-poll-votes' + QUOTE_MESSAGE: Final[ChannelOwnCapabilityType] = 'quote-message' + READ_EVENTS: Final[ChannelOwnCapabilityType] = 'read-events' + SEARCH_MESSAGES: Final[ChannelOwnCapabilityType] = 'search-messages' + SEND_CUSTOM_EVENTS: Final[ChannelOwnCapabilityType] = 'send-custom-events' + SEND_LINKS: Final[ChannelOwnCapabilityType] = 'send-links' + SEND_MESSAGE: Final[ChannelOwnCapabilityType] = 'send-message' + SEND_POLL: Final[ChannelOwnCapabilityType] = 'send-poll' + SEND_REACTION: Final[ChannelOwnCapabilityType] = 'send-reaction' + SEND_REPLY: Final[ChannelOwnCapabilityType] = 'send-reply' + SEND_RESTRICTED_VISIBILITY_MESSAGE: Final[ChannelOwnCapabilityType] = 'send-restricted-visibility-message' + SEND_TYPING_EVENTS: Final[ChannelOwnCapabilityType] = 'send-typing-events' + SET_CHANNEL_COOLDOWN: Final[ChannelOwnCapabilityType] = 'set-channel-cooldown' + SHARE_LOCATION: Final[ChannelOwnCapabilityType] = 'share-location' + SKIP_SLOW_MODE: Final[ChannelOwnCapabilityType] = 'skip-slow-mode' + SLOW_MODE: Final[ChannelOwnCapabilityType] = 'slow-mode' + TYPING_EVENTS: Final[ChannelOwnCapabilityType] = 'typing-events' + UPDATE_ANY_MESSAGE: Final[ChannelOwnCapabilityType] = 'update-any-message' + UPDATE_CHANNEL: Final[ChannelOwnCapabilityType] = 'update-channel' + UPDATE_CHANNEL_MEMBERS: Final[ChannelOwnCapabilityType] = 'update-channel-members' + UPDATE_OWN_MESSAGE: Final[ChannelOwnCapabilityType] = 'update-own-message' + UPDATE_THREAD: Final[ChannelOwnCapabilityType] = 'update-thread' + UPLOAD_FILE: Final[ChannelOwnCapabilityType] = 'upload-file' @dataclass class ChannelPushPreferencesResponse(DataClassJsonMixin): - chat_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="chat_level") - ) - disabled_until: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="disabled_until", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - chat_preferences: "ChatPreferencesResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="chat_preferences") - ) - + chat_level: str | None = dc_field(default=None, metadata=dc_config(field_name="chat_level")) + disabled_until: datetime | None = dc_field(default=None, metadata=dc_config(field_name="disabled_until", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + chat_preferences: 'ChatPreferencesResponse | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) @dataclass class ChannelResponse(DataClassJsonMixin): # Channel CID (:) cid: str = dc_field(metadata=dc_config(field_name="cid")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) disabled: bool = dc_field(metadata=dc_config(field_name="disabled")) # Whether channel is frozen or not frozen: bool = dc_field(metadata=dc_config(field_name="frozen")) @@ -7076,306 +3409,124 @@ class ChannelResponse(DataClassJsonMixin): # Type of the channel type: str = dc_field(metadata=dc_config(field_name="type")) # Date/time of the last update - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Custom data for this object custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Whether auto translation is enabled or not - auto_translation_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="auto_translation_enabled") - ) + auto_translation_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_enabled")) # Language (or comma-separated list of languages) to translate to when auto translation is active - auto_translation_language: str | None = dc_field( - default=None, metadata=dc_config(field_name="auto_translation_language") - ) + auto_translation_language: str | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_language")) # Whether this channel is blocked by current user or not - blocked: bool | None = dc_field( - default=None, metadata=dc_config(field_name="blocked") - ) + blocked: bool | None = dc_field(default=None, metadata=dc_config(field_name="blocked")) # Cooldown period after sending each message - cooldown: int | None = dc_field( - default=None, metadata=dc_config(field_name="cooldown") - ) + cooldown: int | None = dc_field(default=None, metadata=dc_config(field_name="cooldown")) # Date/time of deletion - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Whether this channel is hidden by current user or not - hidden: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hidden") - ) + hidden: bool | None = dc_field(default=None, metadata=dc_config(field_name="hidden")) # Date since when the message history is accessible - hide_messages_before: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="hide_messages_before", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + hide_messages_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="hide_messages_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Date of the last message sent - last_message_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_message_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + last_message_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_message_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Number of members in the channel - member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="member_count") - ) + member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="member_count")) # Number of messages in the channel - message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="message_count") - ) + message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="message_count")) # Date of mute expiration - mute_expires_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="mute_expires_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + mute_expires_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="mute_expires_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Whether this channel is muted or not muted: bool | None = dc_field(default=None, metadata=dc_config(field_name="muted")) # Team the channel belongs to (multi-tenant only) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Date of the latest truncation of the channel - truncated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="truncated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + truncated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="truncated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # List of filter tags associated with the channel - filter_tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_tags") - ) + filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) # List of channel members (max 100) - members: "list[ChannelMemberResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="members") - ) + members: 'list[ChannelMemberResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) # List of channel capabilities of authenticated user - own_capabilities: "list[ChannelOwnCapability] | None" = dc_field( - default=None, metadata=dc_config(field_name="own_capabilities") - ) - config: "ChannelConfigWithInfo | None" = dc_field( - default=None, metadata=dc_config(field_name="config") - ) + own_capabilities: 'list[ChannelOwnCapability] | None' = dc_field(default=None, metadata=dc_config(field_name="own_capabilities")) + config: 'ChannelConfigWithInfo | None' = dc_field(default=None, metadata=dc_config(field_name="config")) # User response object - created_by: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) + created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) # User response object - truncated_by: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="truncated_by") - ) - + truncated_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="truncated_by")) @dataclass class ChannelStateResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - members: "list[ChannelMemberResponse]" = dc_field( - metadata=dc_config(field_name="members") - ) - messages: "list[MessageResponse]" = dc_field( - metadata=dc_config(field_name="messages") - ) - pinned_messages: "list[MessageResponse]" = dc_field( - metadata=dc_config(field_name="pinned_messages") - ) - threads: "list[ThreadStateResponse]" = dc_field( - metadata=dc_config(field_name="threads") - ) - hidden: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hidden") - ) - hide_messages_before: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="hide_messages_before", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - watcher_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="watcher_count") - ) - active_live_locations: "list[SharedLocationResponseData] | None" = dc_field( - default=None, metadata=dc_config(field_name="active_live_locations") - ) - pending_messages: "list[PendingMessageResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="pending_messages") - ) - read: "list[ReadStateResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="read") - ) - watchers: "list[UserResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="watchers") - ) + members: 'list[ChannelMemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + messages: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="messages")) + pinned_messages: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="pinned_messages")) + threads: 'list[ThreadStateResponse]' = dc_field(metadata=dc_config(field_name="threads")) + hidden: bool | None = dc_field(default=None, metadata=dc_config(field_name="hidden")) + hide_messages_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="hide_messages_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + watcher_count: int | None = dc_field(default=None, metadata=dc_config(field_name="watcher_count")) + active_live_locations: 'list[SharedLocationResponseData] | None' = dc_field(default=None, metadata=dc_config(field_name="active_live_locations")) + pending_messages: 'list[PendingMessageResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="pending_messages")) + read: 'list[ReadStateResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="read")) + watchers: 'list[UserResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="watchers")) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) - draft: "DraftResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="draft") - ) - membership: "ChannelMemberResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="membership") - ) - push_preferences: "ChannelPushPreferencesResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="push_preferences") - ) - + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + draft: 'DraftResponse | None' = dc_field(default=None, metadata=dc_config(field_name="draft")) + membership: 'ChannelMemberResponse | None' = dc_field(default=None, metadata=dc_config(field_name="membership")) + push_preferences: 'ChannelPushPreferencesResponse | None' = dc_field(default=None, metadata=dc_config(field_name="push_preferences")) @dataclass class ChannelStateResponseFields(DataClassJsonMixin): # List of channel members - members: "list[ChannelMemberResponse]" = dc_field( - metadata=dc_config(field_name="members") - ) + members: 'list[ChannelMemberResponse]' = dc_field(metadata=dc_config(field_name="members")) # List of channel messages - messages: "list[MessageResponse]" = dc_field( - metadata=dc_config(field_name="messages") - ) + messages: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="messages")) # List of pinned messages in the channel - pinned_messages: "list[MessageResponse]" = dc_field( - metadata=dc_config(field_name="pinned_messages") - ) - threads: "list[ThreadStateResponse]" = dc_field( - metadata=dc_config(field_name="threads") - ) + pinned_messages: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="pinned_messages")) + threads: 'list[ThreadStateResponse]' = dc_field(metadata=dc_config(field_name="threads")) # Whether this channel is hidden or not - hidden: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hidden") - ) + hidden: bool | None = dc_field(default=None, metadata=dc_config(field_name="hidden")) # Messages before this date are hidden from the user - hide_messages_before: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="hide_messages_before", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + hide_messages_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="hide_messages_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Number of channel watchers - watcher_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="watcher_count") - ) + watcher_count: int | None = dc_field(default=None, metadata=dc_config(field_name="watcher_count")) # Active live locations in the channel - active_live_locations: "list[SharedLocationResponseData] | None" = dc_field( - default=None, metadata=dc_config(field_name="active_live_locations") - ) + active_live_locations: 'list[SharedLocationResponseData] | None' = dc_field(default=None, metadata=dc_config(field_name="active_live_locations")) # Pending messages that this user has sent - pending_messages: "list[PendingMessageResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="pending_messages") - ) + pending_messages: 'list[PendingMessageResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="pending_messages")) # List of read states - read: "list[ReadStateResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="read") - ) + read: 'list[ReadStateResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="read")) # List of user who is watching the channel - watchers: "list[UserResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="watchers") - ) + watchers: 'list[UserResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="watchers")) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) - draft: "DraftResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="draft") - ) - membership: "ChannelMemberResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="membership") - ) - push_preferences: "ChannelPushPreferencesResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="push_preferences") - ) - + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + draft: 'DraftResponse | None' = dc_field(default=None, metadata=dc_config(field_name="draft")) + membership: 'ChannelMemberResponse | None' = dc_field(default=None, metadata=dc_config(field_name="membership")) + push_preferences: 'ChannelPushPreferencesResponse | None' = dc_field(default=None, metadata=dc_config(field_name="push_preferences")) @dataclass class ChannelTruncatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents channel in chat - channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.truncated" in this case - type: str = dc_field( - default="channel.truncated", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="channel.truncated", metadata=dc_config(field_name="type")) # The ID of the channel which was truncated - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel which was truncated - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel which was truncated cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="message_id") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="message_id")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ChannelTypeConfig(DataClassJsonMixin): @@ -7383,31 +3534,16 @@ class ChannelTypeConfig(DataClassJsonMixin): automod_behavior: str = dc_field(metadata=dc_config(field_name="automod_behavior")) connect_events: bool = dc_field(metadata=dc_config(field_name="connect_events")) count_messages: bool = dc_field(metadata=dc_config(field_name="count_messages")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom_events: bool = dc_field(metadata=dc_config(field_name="custom_events")) delivery_events: bool = dc_field(metadata=dc_config(field_name="delivery_events")) - mark_messages_pending: bool = dc_field( - metadata=dc_config(field_name="mark_messages_pending") - ) - max_message_length: int = dc_field( - metadata=dc_config(field_name="max_message_length") - ) - message_retention: str = dc_field( - metadata=dc_config(field_name="message_retention") - ) + mark_messages_pending: bool = dc_field(metadata=dc_config(field_name="mark_messages_pending")) + max_message_length: int = dc_field(metadata=dc_config(field_name="max_message_length")) + message_retention: str = dc_field(metadata=dc_config(field_name="message_retention")) mutes: bool = dc_field(metadata=dc_config(field_name="mutes")) name: str = dc_field(metadata=dc_config(field_name="name")) polls: bool = dc_field(metadata=dc_config(field_name="polls")) - push_notifications: bool = dc_field( - metadata=dc_config(field_name="push_notifications") - ) + push_notifications: bool = dc_field(metadata=dc_config(field_name="push_notifications")) quotes: bool = dc_field(metadata=dc_config(field_name="quotes")) reactions: bool = dc_field(metadata=dc_config(field_name="reactions")) read_events: bool = dc_field(metadata=dc_config(field_name="read_events")) @@ -7415,253 +3551,108 @@ class ChannelTypeConfig(DataClassJsonMixin): replies: bool = dc_field(metadata=dc_config(field_name="replies")) search: bool = dc_field(metadata=dc_config(field_name="search")) shared_locations: bool = dc_field(metadata=dc_config(field_name="shared_locations")) - skip_last_msg_update_for_system_msgs: bool = dc_field( - metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs") - ) + skip_last_msg_update_for_system_msgs: bool = dc_field(metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs")) typing_events: bool = dc_field(metadata=dc_config(field_name="typing_events")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) uploads: bool = dc_field(metadata=dc_config(field_name="uploads")) url_enrichment: bool = dc_field(metadata=dc_config(field_name="url_enrichment")) - user_message_reminders: bool = dc_field( - metadata=dc_config(field_name="user_message_reminders") - ) - commands: "list[Command]" = dc_field(metadata=dc_config(field_name="commands")) - permissions: "list[PolicyRequest]" = dc_field( - metadata=dc_config(field_name="permissions") - ) - grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) - blocklist: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist") - ) - blocklist_behavior: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist_behavior") - ) - partition_size: int | None = dc_field( - default=None, metadata=dc_config(field_name="partition_size") - ) - partition_ttl: str | None = dc_field( - default=None, metadata=dc_config(field_name="partition_ttl") - ) - push_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_level") - ) - allowed_flag_reasons: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="allowed_flag_reasons") - ) - blocklists: "list[BlockListOptions] | None" = dc_field( - default=None, metadata=dc_config(field_name="blocklists") - ) + user_message_reminders: bool = dc_field(metadata=dc_config(field_name="user_message_reminders")) + commands: 'list[Command]' = dc_field(metadata=dc_config(field_name="commands")) + permissions: 'list[PolicyRequest]' = dc_field(metadata=dc_config(field_name="permissions")) + grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) + blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) + blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) + partition_size: int | None = dc_field(default=None, metadata=dc_config(field_name="partition_size")) + partition_ttl: str | None = dc_field(default=None, metadata=dc_config(field_name="partition_ttl")) + push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) + allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) + blocklists: 'list[BlockListOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="blocklists")) # Sets thresholds for AI moderation - automod_thresholds: "Thresholds | None" = dc_field( - default=None, metadata=dc_config(field_name="automod_thresholds") - ) - chat_preferences: "ChatPreferences | None" = dc_field( - default=None, metadata=dc_config(field_name="chat_preferences") - ) - + automod_thresholds: 'Thresholds | None' = dc_field(default=None, metadata=dc_config(field_name="automod_thresholds")) + chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) @dataclass class ChannelUnFrozenEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.unfrozen" in this case - type: str = dc_field( - default="channel.unfrozen", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="channel.unfrozen", metadata=dc_config(field_name="type")) # The ID of the channel which was unfrozen - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The type of the channel which was unfrozen - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel which was unfrozen cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class ChannelUnmutedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.unmuted" in this case - type: str = dc_field( - default="channel.unmuted", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + type: str = dc_field(default="channel.unmuted", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The mute objects - mutes: "list[ChannelMute] | None" = dc_field( - default=None, metadata=dc_config(field_name="mutes") - ) - mute: "ChannelMute | None" = dc_field( - default=None, metadata=dc_config(field_name="mute") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + mutes: 'list[ChannelMute] | None' = dc_field(default=None, metadata=dc_config(field_name="mutes")) + mute: 'ChannelMute | None' = dc_field(default=None, metadata=dc_config(field_name="mute")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ChannelUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents channel in chat - channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.updated" in this case - type: str = dc_field( - default="channel.updated", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="channel.updated", metadata=dc_config(field_name="type")) # The ID of the channel which was updated - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel which was updated - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel which was updated cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="message_id") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="message_id")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ChannelVisibleEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents channel in chat - channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.visible" in this case - type: str = dc_field( - default="channel.visible", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="channel.visible", metadata=dc_config(field_name="type")) # The ID of the channel which was shown - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel which was shown - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel which was shown cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ChatActivityStatsResponse(DataClassJsonMixin): - messages: "MessageStatsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="Messages") - ) - + messages: 'MessageStatsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="Messages")) @dataclass class ChatDraftPayloadResponse(DataClassJsonMixin): @@ -7670,74 +3661,32 @@ class ChatDraftPayloadResponse(DataClassJsonMixin): custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) html: str | None = dc_field(default=None, metadata=dc_config(field_name="html")) mml: str | None = dc_field(default=None, metadata=dc_config(field_name="mml")) - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) - poll_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="poll_id") - ) - quoted_message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="quoted_message_id") - ) - show_in_channel: bool | None = dc_field( - default=None, metadata=dc_config(field_name="show_in_channel") - ) - silent: bool | None = dc_field( - default=None, metadata=dc_config(field_name="silent") - ) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) + quoted_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="quoted_message_id")) + show_in_channel: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_in_channel")) + silent: bool | None = dc_field(default=None, metadata=dc_config(field_name="silent")) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) - mentioned_users: "list[UserResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="mentioned_users") - ) - + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + mentioned_users: 'list[UserResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_users")) @dataclass class ChatDraftResponse(DataClassJsonMixin): channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - message: "ChatDraftPayloadResponse" = dc_field( - metadata=dc_config(field_name="message") - ) - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) - parent_message: "ChatMessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="parent_message") - ) - quoted_message: "ChatMessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="quoted_message") - ) - + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + message: 'ChatDraftPayloadResponse' = dc_field(metadata=dc_config(field_name="message")) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + parent_message: 'ChatMessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="parent_message")) + quoted_message: 'ChatMessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="quoted_message")) @dataclass class ChatMessageResponse(DataClassJsonMixin): cid: str = dc_field(metadata=dc_config(field_name="cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - deleted_reply_count: int = dc_field( - metadata=dc_config(field_name="deleted_reply_count") - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_reply_count: int = dc_field(metadata=dc_config(field_name="deleted_reply_count")) html: str = dc_field(metadata=dc_config(field_name="html")) id: str = dc_field(metadata=dc_config(field_name="id")) - mentioned_channel: bool = dc_field( - metadata=dc_config(field_name="mentioned_channel") - ) + mentioned_channel: bool = dc_field(metadata=dc_config(field_name="mentioned_channel")) mentioned_here: bool = dc_field(metadata=dc_config(field_name="mentioned_here")) pinned: bool = dc_field(metadata=dc_config(field_name="pinned")) reply_count: int = dc_field(metadata=dc_config(field_name="reply_count")) @@ -7745,390 +3694,138 @@ class ChatMessageResponse(DataClassJsonMixin): silent: bool = dc_field(metadata=dc_config(field_name="silent")) text: str = dc_field(metadata=dc_config(field_name="text")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - attachments: "list[Attachment]" = dc_field( - metadata=dc_config(field_name="attachments") - ) - latest_reactions: "list[ChatReactionResponse]" = dc_field( - metadata=dc_config(field_name="latest_reactions") - ) - mentioned_users: "list[UserResponse]" = dc_field( - metadata=dc_config(field_name="mentioned_users") - ) - own_reactions: "list[ChatReactionResponse]" = dc_field( - metadata=dc_config(field_name="own_reactions") - ) - restricted_visibility: list[str] = dc_field( - metadata=dc_config(field_name="restricted_visibility") - ) - custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction_counts: "dict[str, int]" = dc_field( - metadata=dc_config(field_name="reaction_counts") - ) - reaction_scores: "dict[str, int]" = dc_field( - metadata=dc_config(field_name="reaction_scores") - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + attachments: 'list[Attachment]' = dc_field(metadata=dc_config(field_name="attachments")) + latest_reactions: 'list[ChatReactionResponse]' = dc_field(metadata=dc_config(field_name="latest_reactions")) + mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) + own_reactions: 'list[ChatReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) + restricted_visibility: list[str] = dc_field(metadata=dc_config(field_name="restricted_visibility")) + custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + reaction_counts: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="reaction_counts")) + reaction_scores: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="reaction_scores")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - command: str | None = dc_field( - default=None, metadata=dc_config(field_name="command") - ) - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - deleted_for_me: bool | None = dc_field( - default=None, metadata=dc_config(field_name="deleted_for_me") - ) - message_text_updated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="message_text_updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + command: str | None = dc_field(default=None, metadata=dc_config(field_name="command")) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_for_me: bool | None = dc_field(default=None, metadata=dc_config(field_name="deleted_for_me")) + message_text_updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="message_text_updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) mml: str | None = dc_field(default=None, metadata=dc_config(field_name="mml")) - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) - pin_expires: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="pin_expires", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - pinned_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="pinned_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - poll_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="poll_id") - ) - quoted_message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="quoted_message_id") - ) - show_in_channel: bool | None = dc_field( - default=None, metadata=dc_config(field_name="show_in_channel") - ) - mentioned_group_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_group_ids") - ) - mentioned_groups: "list[UserGroupResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="mentioned_groups") - ) - mentioned_roles: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_roles") - ) - thread_participants: "list[UserResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="thread_participants") - ) - draft: "ChatDraftResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="draft") - ) - i18n: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="i18n") - ) - image_labels: "dict[str, list[str]] | None" = dc_field( - default=None, metadata=dc_config(field_name="image_labels") - ) - member: "ChannelMemberPartialResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="member") - ) - moderation: "ChatModerationV2Response | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation") - ) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + pin_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pin_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + pinned_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pinned_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) + quoted_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="quoted_message_id")) + show_in_channel: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_in_channel")) + mentioned_group_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_group_ids")) + mentioned_groups: 'list[UserGroupResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_groups")) + mentioned_roles: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_roles")) + thread_participants: 'list[UserResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) + draft: 'ChatDraftResponse | None' = dc_field(default=None, metadata=dc_config(field_name="draft")) + i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) + image_labels: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="image_labels")) + member: 'ChannelMemberPartialResponse | None' = dc_field(default=None, metadata=dc_config(field_name="member")) + moderation: 'ChatModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) # User response object - pinned_by: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="pinned_by") - ) - poll: "PollResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="poll") - ) - quoted_message: "ChatMessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="quoted_message") - ) - reaction_groups: "dict[str, ChatReactionGroupResponse | None] | None" = dc_field( - default=None, metadata=dc_config(field_name="reaction_groups") - ) - reminder: "ChatReminderResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="reminder") - ) - shared_location: "ChatSharedLocationResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="shared_location") - ) - + pinned_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="pinned_by")) + poll: 'PollResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll")) + quoted_message: 'ChatMessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="quoted_message")) + reaction_groups: 'dict[str, ChatReactionGroupResponse | None] | None' = dc_field(default=None, metadata=dc_config(field_name="reaction_groups")) + reminder: 'ChatReminderResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="reminder")) + shared_location: 'ChatSharedLocationResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="shared_location")) @dataclass class ChatModerationV2Response(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) original_text: str = dc_field(metadata=dc_config(field_name="original_text")) - blocklist_matched: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist_matched") - ) - platform_circumvented: bool | None = dc_field( - default=None, metadata=dc_config(field_name="platform_circumvented") - ) - semantic_filter_matched: str | None = dc_field( - default=None, metadata=dc_config(field_name="semantic_filter_matched") - ) - blocklists_matched: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="blocklists_matched") - ) - image_harms: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="image_harms") - ) - text_harms: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="text_harms") - ) - + blocklist_matched: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_matched")) + platform_circumvented: bool | None = dc_field(default=None, metadata=dc_config(field_name="platform_circumvented")) + semantic_filter_matched: str | None = dc_field(default=None, metadata=dc_config(field_name="semantic_filter_matched")) + blocklists_matched: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="blocklists_matched")) + image_harms: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="image_harms")) + text_harms: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="text_harms")) @dataclass class ChatPreferences(DataClassJsonMixin): - channel_mentions: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_mentions") - ) - default_preference: str | None = dc_field( - default=None, metadata=dc_config(field_name="default_preference") - ) - direct_mentions: str | None = dc_field( - default=None, metadata=dc_config(field_name="direct_mentions") - ) - distinct_channel_messages: str | None = dc_field( - default=None, metadata=dc_config(field_name="distinct_channel_messages") - ) - group_mentions: str | None = dc_field( - default=None, metadata=dc_config(field_name="group_mentions") - ) - here_mentions: str | None = dc_field( - default=None, metadata=dc_config(field_name="here_mentions") - ) - role_mentions: str | None = dc_field( - default=None, metadata=dc_config(field_name="role_mentions") - ) - thread_replies: str | None = dc_field( - default=None, metadata=dc_config(field_name="thread_replies") - ) - + channel_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_mentions")) + default_preference: str | None = dc_field(default=None, metadata=dc_config(field_name="default_preference")) + direct_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="direct_mentions")) + distinct_channel_messages: str | None = dc_field(default=None, metadata=dc_config(field_name="distinct_channel_messages")) + group_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="group_mentions")) + here_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="here_mentions")) + role_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="role_mentions")) + thread_replies: str | None = dc_field(default=None, metadata=dc_config(field_name="thread_replies")) @dataclass class ChatPreferencesInput(DataClassJsonMixin): - channel_mentions: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_mentions") - ) - default_preference: str | None = dc_field( - default=None, metadata=dc_config(field_name="default_preference") - ) - direct_mentions: str | None = dc_field( - default=None, metadata=dc_config(field_name="direct_mentions") - ) - group_mentions: str | None = dc_field( - default=None, metadata=dc_config(field_name="group_mentions") - ) - here_mentions: str | None = dc_field( - default=None, metadata=dc_config(field_name="here_mentions") - ) - role_mentions: str | None = dc_field( - default=None, metadata=dc_config(field_name="role_mentions") - ) - thread_replies: str | None = dc_field( - default=None, metadata=dc_config(field_name="thread_replies") - ) - + channel_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_mentions")) + default_preference: str | None = dc_field(default=None, metadata=dc_config(field_name="default_preference")) + direct_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="direct_mentions")) + group_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="group_mentions")) + here_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="here_mentions")) + role_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="role_mentions")) + thread_replies: str | None = dc_field(default=None, metadata=dc_config(field_name="thread_replies")) @dataclass class ChatPreferencesResponse(DataClassJsonMixin): - channel_mentions: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_mentions") - ) - default_preference: str | None = dc_field( - default=None, metadata=dc_config(field_name="default_preference") - ) - direct_mentions: str | None = dc_field( - default=None, metadata=dc_config(field_name="direct_mentions") - ) - group_mentions: str | None = dc_field( - default=None, metadata=dc_config(field_name="group_mentions") - ) - here_mentions: str | None = dc_field( - default=None, metadata=dc_config(field_name="here_mentions") - ) - role_mentions: str | None = dc_field( - default=None, metadata=dc_config(field_name="role_mentions") - ) - thread_replies: str | None = dc_field( - default=None, metadata=dc_config(field_name="thread_replies") - ) - + channel_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_mentions")) + default_preference: str | None = dc_field(default=None, metadata=dc_config(field_name="default_preference")) + direct_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="direct_mentions")) + group_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="group_mentions")) + here_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="here_mentions")) + role_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="role_mentions")) + thread_replies: str | None = dc_field(default=None, metadata=dc_config(field_name="thread_replies")) @dataclass class ChatReactionGroupResponse(DataClassJsonMixin): count: int = dc_field(metadata=dc_config(field_name="count")) - first_reaction_at: datetime = dc_field( - metadata=dc_config( - field_name="first_reaction_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - last_reaction_at: datetime = dc_field( - metadata=dc_config( - field_name="last_reaction_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + first_reaction_at: datetime = dc_field(metadata=dc_config(field_name="first_reaction_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_reaction_at: datetime = dc_field(metadata=dc_config(field_name="last_reaction_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) sum_scores: int = dc_field(metadata=dc_config(field_name="sum_scores")) - latest_reactions_by: "list[ChatReactionGroupUserResponse]" = dc_field( - metadata=dc_config(field_name="latest_reactions_by") - ) - + latest_reactions_by: 'list[ChatReactionGroupUserResponse]' = dc_field(metadata=dc_config(field_name="latest_reactions_by")) @dataclass class ChatReactionGroupUserResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ChatReactionResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) score: int = dc_field(metadata=dc_config(field_name="score")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) @dataclass class ChatReminderResponseData(DataClassJsonMixin): channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - remind_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="remind_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - message: "ChatMessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) + remind_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="remind_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + message: 'ChatMessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ChatSharedLocationResponseData(DataClassJsonMixin): channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - created_by_device_id: str = dc_field( - metadata=dc_config(field_name="created_by_device_id") - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_by_device_id: str = dc_field(metadata=dc_config(field_name="created_by_device_id")) latitude: float = dc_field(metadata=dc_config(field_name="latitude")) longitude: float = dc_field(metadata=dc_config(field_name="longitude")) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - end_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="end_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - message: "ChatMessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - + end_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="end_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + message: 'ChatMessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) @dataclass class CheckExternalStorageResponse(DataClassJsonMixin): @@ -8136,188 +3833,102 @@ class CheckExternalStorageResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) file_url: str = dc_field(metadata=dc_config(field_name="file_url")) - @dataclass class CheckPushRequest(DataClassJsonMixin): # Push message template for APN - apn_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_template") - ) + apn_template: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_template")) # Type of event for push templates (default: message.new). One of: message.new, message.updated, reaction.new, reaction.updated, notification.reminder_due - event_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="event_type") - ) + event_type: str | None = dc_field(default=None, metadata=dc_config(field_name="event_type")) # Push message data template for Firebase - firebase_data_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_data_template") - ) + firebase_data_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_data_template")) # Push message template for Firebase - firebase_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_template") - ) + firebase_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_template")) # Message ID to send push notification for - message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="message_id") - ) + message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="message_id")) # Name of push provider - push_provider_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_provider_name") - ) + push_provider_name: str | None = dc_field(default=None, metadata=dc_config(field_name="push_provider_name")) # Push provider type. One of: firebase, apn, huawei, xiaomi - push_provider_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_provider_type") - ) + push_provider_type: str | None = dc_field(default=None, metadata=dc_config(field_name="push_provider_type")) # Don't require existing devices to render templates - skip_devices: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_devices") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + skip_devices: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_devices")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class CheckPushResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # The event type that was tested - event_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="event_type") - ) - rendered_apn_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="rendered_apn_template") - ) - rendered_firebase_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="rendered_firebase_template") - ) + event_type: str | None = dc_field(default=None, metadata=dc_config(field_name="event_type")) + rendered_apn_template: str | None = dc_field(default=None, metadata=dc_config(field_name="rendered_apn_template")) + rendered_firebase_template: str | None = dc_field(default=None, metadata=dc_config(field_name="rendered_firebase_template")) # Don't require existing devices to render templates - skip_devices: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_devices") - ) + skip_devices: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_devices")) # List of general errors - general_errors: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="general_errors") - ) + general_errors: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="general_errors")) # Object with device errors - device_errors: "dict[str, DeviceErrorInfo] | None" = dc_field( - default=None, metadata=dc_config(field_name="device_errors") - ) - rendered_message: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="rendered_message") - ) - + device_errors: 'dict[str, DeviceErrorInfo] | None' = dc_field(default=None, metadata=dc_config(field_name="device_errors")) + rendered_message: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="rendered_message")) @dataclass class CheckRequest(DataClassJsonMixin): # ID of the user who created the entity - entity_creator_id: str = dc_field( - metadata=dc_config(field_name="entity_creator_id") - ) + entity_creator_id: str = dc_field(metadata=dc_config(field_name="entity_creator_id")) # Unique identifier of the entity to moderate entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) # Type of entity to moderate entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) # Key of the moderation configuration to use - config_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="config_key") - ) + config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) # Team associated with the configuration - config_team: str | None = dc_field( - default=None, metadata=dc_config(field_name="config_team") - ) + config_team: str | None = dc_field(default=None, metadata=dc_config(field_name="config_team")) # Original timestamp when the content was produced (for correlating flagged content with source video timeline) - content_published_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="content_published_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + content_published_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="content_published_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Whether to run moderation in test mode - test_mode: bool | None = dc_field( - default=None, metadata=dc_config(field_name="test_mode") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - config: "ModerationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="config") - ) - moderation_payload: "ModerationPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation_payload") - ) + test_mode: bool | None = dc_field(default=None, metadata=dc_config(field_name="test_mode")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + config: 'ModerationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="config")) + moderation_payload: 'ModerationPayload | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_payload")) # Additional moderation configuration options - options: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="options") - ) + options: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="options")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class CheckResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Suggested action based on moderation results - recommended_action: str = dc_field( - metadata=dc_config(field_name="recommended_action") - ) + recommended_action: str = dc_field(metadata=dc_config(field_name="recommended_action")) # Status of the moderation check (completed or pending) status: str = dc_field(metadata=dc_config(field_name="status")) # ID of the running moderation task - task_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="task_id") - ) + task_id: str | None = dc_field(default=None, metadata=dc_config(field_name="task_id")) # All moderation rules triggered by this check (content, user, and call rules), with their resolved actions - triggered_rules: "list[TriggeredRuleResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="triggered_rules") - ) - item: "ReviewQueueItemResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="item") - ) - triggered_rule: "TriggeredRuleResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="triggered_rule") - ) - + triggered_rules: 'list[TriggeredRuleResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="triggered_rules")) + item: 'ReviewQueueItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="item")) + triggered_rule: 'TriggeredRuleResponse | None' = dc_field(default=None, metadata=dc_config(field_name="triggered_rule")) @dataclass class CheckS3AccessRequest(DataClassJsonMixin): # Optional stream+s3:// reference to test access against s3_url: str | None = dc_field(default=None, metadata=dc_config(field_name="s3_url")) - @dataclass class CheckS3AccessResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Whether the S3 access check succeeded success: bool = dc_field(metadata=dc_config(field_name="success")) # Descriptive message about the check result - message: str | None = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - + message: str | None = dc_field(default=None, metadata=dc_config(field_name="message")) @dataclass class CheckSNSRequest(DataClassJsonMixin): # AWS SNS access key - sns_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="sns_key") - ) + sns_key: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_key")) # AWS SNS key secret - sns_secret: str | None = dc_field( - default=None, metadata=dc_config(field_name="sns_secret") - ) + sns_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_secret")) # AWS SNS topic ARN - sns_topic_arn: str | None = dc_field( - default=None, metadata=dc_config(field_name="sns_topic_arn") - ) - + sns_topic_arn: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_topic_arn")) @dataclass class CheckSNSResponse(DataClassJsonMixin): @@ -8327,26 +3938,16 @@ class CheckSNSResponse(DataClassJsonMixin): # Error text error: str | None = dc_field(default=None, metadata=dc_config(field_name="error")) # Error data - data: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="data") - ) - + data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) @dataclass class CheckSQSRequest(DataClassJsonMixin): # AWS SQS access key - sqs_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="sqs_key") - ) + sqs_key: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_key")) # AWS SQS key secret - sqs_secret: str | None = dc_field( - default=None, metadata=dc_config(field_name="sqs_secret") - ) + sqs_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_secret")) # AWS SQS endpoint URL - sqs_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="sqs_url") - ) - + sqs_url: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_url")) @dataclass class CheckSQSResponse(DataClassJsonMixin): @@ -8356,194 +3957,95 @@ class CheckSQSResponse(DataClassJsonMixin): # Error text error: str | None = dc_field(default=None, metadata=dc_config(field_name="error")) # Error data - data: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="data") - ) - + data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) @dataclass class Classification(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) - confidence: float | None = dc_field( - default=None, metadata=dc_config(field_name="confidence") - ) - severity: str | None = dc_field( - default=None, metadata=dc_config(field_name="severity") - ) - matched_contributors: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="matched_contributors") - ) - subclassifications: "list[Classification] | None" = dc_field( - default=None, metadata=dc_config(field_name="subclassifications") - ) - + confidence: float | None = dc_field(default=None, metadata=dc_config(field_name="confidence")) + severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) + matched_contributors: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="matched_contributors")) + subclassifications: 'list[Classification] | None' = dc_field(default=None, metadata=dc_config(field_name="subclassifications")) @dataclass class ClientEvent(DataClassJsonMixin): # Call session ID associated with the attempt. Required on every event except CoordinatorJoin initiation and CoordinatorJoin failure (where the call session is not yet established); optional on MediaDevicePermission. - call_session_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="call_session_id") - ) + call_session_id: str | None = dc_field(default=None, metadata=dc_config(field_name="call_session_id")) # Camera permission status: INITIATED, FAILED, GRANTED, or NOT_INITIATED. Required on every MediaDevicePermission event. - camera_permission_status: str | None = dc_field( - default=None, metadata=dc_config(field_name="camera_permission_status") - ) + camera_permission_status: str | None = dc_field(default=None, metadata=dc_config(field_name="camera_permission_status")) # UUID generated by the client and shared across every event of the same coordinator connection. Required on every event except JoinInitiated, which is reported before a coordinator connection exists. - coordinator_connect_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="coordinator_connect_id") - ) - # Milliseconds elapsed between the stage attempt's initiation and this event. - elapsed_time: int | None = dc_field( - default=None, metadata=dc_config(field_name="elapsed_time") - ) + coordinator_connect_id: str | None = dc_field(default=None, metadata=dc_config(field_name="coordinator_connect_id")) + # Milliseconds elapsed between the stage attempt's initiation and this event. + elapsed_time: int | None = dc_field(default=None, metadata=dc_config(field_name="elapsed_time")) # Whether the event marks the start (initiated) or resolution (completed) of a stage attempt, or another event-specific value - event_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="event_type") - ) + event_type: str | None = dc_field(default=None, metadata=dc_config(field_name="event_type")) # Terminal state of the peer connection. Required on PeerConnectionConnect failure. - ice_state: str | None = dc_field( - default=None, metadata=dc_config(field_name="ice_state") - ) + ice_state: str | None = dc_field(default=None, metadata=dc_config(field_name="ice_state")) # Call ID associated with the event. Required on every stage except CoordinatorWS, where it is optional. id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # UUID generated by the client and shared across JoinInitiated and the join-lifecycle events (CoordinatorJoin, WSJoin, PeerConnectionConnect) of the same overall join attempt. Required on every join event except CoordinatorWS, which is reported before a join attempt is established. - join_attempt_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="join_attempt_id") - ) + join_attempt_id: str | None = dc_field(default=None, metadata=dc_config(field_name="join_attempt_id")) # Reason the client initiated the join. Optional on CoordinatorJoin events; empty when not provided. - join_reason: str | None = dc_field( - default=None, metadata=dc_config(field_name="join_reason") - ) + join_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="join_reason")) # Microphone permission status: INITIATED, FAILED, GRANTED, or NOT_INITIATED. Required on every MediaDevicePermission event. - microphone_permission_status: str | None = dc_field( - default=None, metadata=dc_config(field_name="microphone_permission_status") - ) + microphone_permission_status: str | None = dc_field(default=None, metadata=dc_config(field_name="microphone_permission_status")) # Resolution of a completed event: success or failure. Required on completed join events; forbidden on initiated join events. - outcome: str | None = dc_field( - default=None, metadata=dc_config(field_name="outcome") - ) + outcome: str | None = dc_field(default=None, metadata=dc_config(field_name="outcome")) # Which peer connection a PeerConnectionConnect event reports on: publish or subscribe. Required on every PeerConnectionConnect event. - peer_connection: str | None = dc_field( - default=None, metadata=dc_config(field_name="peer_connection") - ) + peer_connection: str | None = dc_field(default=None, metadata=dc_config(field_name="peer_connection")) # UTC timestamp at which the ICE connection was established earlier in the session, when applicable - previously_connected_timestamp: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="previously_connected_timestamp", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + previously_connected_timestamp: datetime | None = dc_field(default=None, metadata=dc_config(field_name="previously_connected_timestamp", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Total in-stage retries the client made before resolving (0–1000). Required on completed join events. - retry_count_attempt: int | None = dc_field( - default=None, metadata=dc_config(field_name="retry_count_attempt") - ) + retry_count_attempt: int | None = dc_field(default=None, metadata=dc_config(field_name="retry_count_attempt")) # Failure code string. Required on CoordinatorJoin, CoordinatorWS, WSJoin, and PeerConnectionConnect failure. - retry_failure_code: str | None = dc_field( - default=None, metadata=dc_config(field_name="retry_failure_code") - ) + retry_failure_code: str | None = dc_field(default=None, metadata=dc_config(field_name="retry_failure_code")) # Failure reason string. Required on CoordinatorJoin, CoordinatorWS, WSJoin, and PeerConnectionConnect failure. - retry_failure_reason: str | None = dc_field( - default=None, metadata=dc_config(field_name="retry_failure_reason") - ) + retry_failure_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="retry_failure_reason")) # Screen-share permission status: INITIATED, FAILED, GRANTED, or NOT_INITIATED. Optional on MediaDevicePermission events. - screen_share_status: str | None = dc_field( - default=None, metadata=dc_config(field_name="screen_share_status") - ) + screen_share_status: str | None = dc_field(default=None, metadata=dc_config(field_name="screen_share_status")) # Version of the client SDK - sdk_version: str | None = dc_field( - default=None, metadata=dc_config(field_name="sdk_version") - ) + sdk_version: str | None = dc_field(default=None, metadata=dc_config(field_name="sdk_version")) # Identifier of the SFU the client was attempting to connect to. Required on WSJoin and PeerConnectionConnect failure, and on FirstAudioFrame and FirstVideoFrame. sfu_id: str | None = dc_field(default=None, metadata=dc_config(field_name="sfu_id")) # Discriminator identifying the event kind. JoinInitiated marks the start of a join attempt; join-lifecycle events use CoordinatorJoin, CoordinatorWS, WSJoin, or PeerConnectionConnect; media-readiness events use FirstAudioFrame or FirstVideoFrame; MediaDevicePermission reports device permission results; other values denote generic client events. stage: str | None = dc_field(default=None, metadata=dc_config(field_name="stage")) # UUID generated by the client at initiation. Identical on the matching completion event. Absent on JoinInitiated. - stage_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="stage_id") - ) + stage_id: str | None = dc_field(default=None, metadata=dc_config(field_name="stage_id")) # UTC timestamp at which the event was recorded - timestamp: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="timestamp", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + timestamp: datetime | None = dc_field(default=None, metadata=dc_config(field_name="timestamp", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Identifier of the media track the frame belongs to. Required on FirstVideoFrame; optional on FirstAudioFrame. - track_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="track_id") - ) + track_id: str | None = dc_field(default=None, metadata=dc_config(field_name="track_id")) # Call type associated with the event. Required on every stage except CoordinatorWS, where it is optional. type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) # User agent string of the client SDK - user_agent: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_agent") - ) + user_agent: str | None = dc_field(default=None, metadata=dc_config(field_name="user_agent")) # ID of the user the event was recorded for - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Whether the ICE connection had been established earlier in the same session. Required on every PeerConnectionConnect event so reconnects can be distinguished from fresh connects. - was_previously_connected: bool | None = dc_field( - default=None, metadata=dc_config(field_name="was_previously_connected") - ) - + was_previously_connected: bool | None = dc_field(default=None, metadata=dc_config(field_name="was_previously_connected")) @dataclass class ClientOSDataResponse(DataClassJsonMixin): - architecture: str | None = dc_field( - default=None, metadata=dc_config(field_name="architecture") - ) + architecture: str | None = dc_field(default=None, metadata=dc_config(field_name="architecture")) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - version: str | None = dc_field( - default=None, metadata=dc_config(field_name="version") - ) - + version: str | None = dc_field(default=None, metadata=dc_config(field_name="version")) @dataclass class ClosedCaptionEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # CallClosedCaption represents a closed caption of a call. - closed_caption: "CallClosedCaption" = dc_field( - metadata=dc_config(field_name="closed_caption") - ) + closed_caption: 'CallClosedCaption' = dc_field(metadata=dc_config(field_name="closed_caption")) # The type of event: "call.closed_caption" in this case - type: str = dc_field( - default="call.closed_caption", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.closed_caption", metadata=dc_config(field_name="type")) @dataclass class ClosedCaptionRuleParameters(DataClassJsonMixin): - severity: str | None = dc_field( - default=None, metadata=dc_config(field_name="severity") - ) - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - time_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="time_window") - ) - harm_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="harm_labels") - ) - llm_harm_labels: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="llm_harm_labels") - ) - + severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) + harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) + llm_harm_labels: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="llm_harm_labels")) @dataclass class CollectUserFeedbackRequest(DataClassJsonMixin): @@ -8551,20 +4053,14 @@ class CollectUserFeedbackRequest(DataClassJsonMixin): sdk: str = dc_field(metadata=dc_config(field_name="sdk")) sdk_version: str = dc_field(metadata=dc_config(field_name="sdk_version")) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - user_session_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_session_id") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + user_session_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_session_id")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class CollectUserFeedbackResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class CollectionRequest(DataClassJsonMixin): # Name/type of the collection @@ -8574,10 +4070,7 @@ class CollectionRequest(DataClassJsonMixin): # Unique identifier for the collection within its name (optional, will be auto-generated if not provided) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # ID of the user who owns this collection - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) @dataclass class CollectionResponse(DataClassJsonMixin): @@ -8586,34 +4079,13 @@ class CollectionResponse(DataClassJsonMixin): # Name/type of the collection name: str = dc_field(metadata=dc_config(field_name="name")) # When the collection was created - created_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # When the collection was last updated - updated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # ID of the user who owns this collection - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Custom data for the collection - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class Command(DataClassJsonMixin): @@ -8626,227 +4098,87 @@ class Command(DataClassJsonMixin): # Set name used for grouping commands set: str = dc_field(metadata=dc_config(field_name="set")) # Date/time of creation - created_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Date/time of the last update - updated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class CommentAddedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) - comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.comment.added" in this case - type: str = dc_field( - default="feeds.comment.added", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.comment.added", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class CommentDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) - comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) + comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.comment.deleted" in this case - type: str = dc_field( - default="feeds.comment.deleted", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.comment.deleted", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class CommentReactionAddedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) - comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction: "FeedsReactionResponse" = dc_field( - metadata=dc_config(field_name="reaction") - ) + reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) # The type of event: "feeds.comment.reaction.added" in this case - type: str = dc_field( - default="feeds.comment.reaction.added", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.comment.reaction.added", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class CommentReactionDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) - comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) + comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction: "FeedsReactionResponse" = dc_field( - metadata=dc_config(field_name="reaction") - ) + reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) # The type of reaction that was removed - type: str = dc_field( - default="feeds.comment.reaction.deleted", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="feeds.comment.reaction.deleted", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class CommentReactionUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) - comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction: "FeedsReactionResponse" = dc_field( - metadata=dc_config(field_name="reaction") - ) + reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) # The type of event: "feeds.comment.reaction.updated" in this case - type: str = dc_field( - default="feeds.comment.reaction.updated", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.comment.reaction.updated", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class CommentResponse(DataClassJsonMixin): bookmark_count: int = dc_field(metadata=dc_config(field_name="bookmark_count")) # Confidence score of the comment - confidence_score: float = dc_field( - metadata=dc_config(field_name="confidence_score") - ) + confidence_score: float = dc_field(metadata=dc_config(field_name="confidence_score")) # When the comment was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Number of downvotes for this comment downvote_count: int = dc_field(metadata=dc_config(field_name="downvote_count")) # Unique identifier for the comment @@ -8864,160 +4196,70 @@ class CommentResponse(DataClassJsonMixin): # Status of the comment. One of: active, deleted, removed, hidden status: str = dc_field(metadata=dc_config(field_name="status")) # When the comment was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Number of upvotes for this comment upvote_count: int = dc_field(metadata=dc_config(field_name="upvote_count")) # Users mentioned in the comment - mentioned_users: "list[UserResponse]" = dc_field( - metadata=dc_config(field_name="mentioned_users") - ) + mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) # Current user's reactions to this activity - own_reactions: "list[FeedsReactionResponse]" = dc_field( - metadata=dc_config(field_name="own_reactions") - ) + own_reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # Controversy score of the comment - controversy_score: float | None = dc_field( - default=None, metadata=dc_config(field_name="controversy_score") - ) + controversy_score: float | None = dc_field(default=None, metadata=dc_config(field_name="controversy_score")) # When the comment was deleted - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # When the comment was last edited - edited_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="edited_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + edited_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="edited_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # ID of parent comment for nested replies - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) # Text content of the comment text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) # Attachments associated with the comment - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) # Recent reactions to the comment - latest_reactions: "list[FeedsReactionResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="latest_reactions") - ) + latest_reactions: 'list[FeedsReactionResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_reactions")) # Custom data for the comment - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - i18n: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="i18n") - ) - moderation: "ModerationV2Response | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) + moderation: 'ModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) # Grouped reactions by type - reaction_groups: "dict[str, FeedsReactionGroupResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="reaction_groups") - ) - + reaction_groups: 'dict[str, FeedsReactionGroupResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="reaction_groups")) @dataclass class CommentRestoredEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) - comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) + comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.comment.restored" in this case - type: str = dc_field( - default="feeds.comment.restored", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.comment.restored", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class CommentUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) - comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) + comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.comment.updated" in this case - type: str = dc_field( - default="feeds.comment.updated", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.comment.updated", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class CommitMessageRequest(DataClassJsonMixin): pass - @dataclass class CompositeRecordingResponse(DataClassJsonMixin): status: str = dc_field(metadata=dc_config(field_name="status")) - @dataclass class ConcurrencyMinute(DataClassJsonMixin): joins: int = dc_field(metadata=dc_config(field_name="joins")) @@ -9026,188 +4268,87 @@ class ConcurrencyMinute(DataClassJsonMixin): min: int = dc_field(metadata=dc_config(field_name="min")) minute: str = dc_field(metadata=dc_config(field_name="minute")) - @dataclass class ConfigOverridesRequest(DataClassJsonMixin): # Blocklist name - blocklist: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist") - ) + blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) # Blocklist behavior. One of: flag, block - blocklist_behavior: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist_behavior") - ) + blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) # Enable/disable message counting - count_messages: bool | None = dc_field( - default=None, metadata=dc_config(field_name="count_messages") - ) + count_messages: bool | None = dc_field(default=None, metadata=dc_config(field_name="count_messages")) # Maximum message length - max_message_length: int | None = dc_field( - default=None, metadata=dc_config(field_name="max_message_length") - ) - push_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_level") - ) + max_message_length: int | None = dc_field(default=None, metadata=dc_config(field_name="max_message_length")) + push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) # Enable/disable quotes - quotes: bool | None = dc_field( - default=None, metadata=dc_config(field_name="quotes") - ) + quotes: bool | None = dc_field(default=None, metadata=dc_config(field_name="quotes")) # Enable/disable reactions - reactions: bool | None = dc_field( - default=None, metadata=dc_config(field_name="reactions") - ) + reactions: bool | None = dc_field(default=None, metadata=dc_config(field_name="reactions")) # Enable/disable replies - replies: bool | None = dc_field( - default=None, metadata=dc_config(field_name="replies") - ) + replies: bool | None = dc_field(default=None, metadata=dc_config(field_name="replies")) # Enable/disable shared locations - shared_locations: bool | None = dc_field( - default=None, metadata=dc_config(field_name="shared_locations") - ) + shared_locations: bool | None = dc_field(default=None, metadata=dc_config(field_name="shared_locations")) # Enable/disable typing events - typing_events: bool | None = dc_field( - default=None, metadata=dc_config(field_name="typing_events") - ) + typing_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="typing_events")) # Enable/disable uploads - uploads: bool | None = dc_field( - default=None, metadata=dc_config(field_name="uploads") - ) + uploads: bool | None = dc_field(default=None, metadata=dc_config(field_name="uploads")) # Enable/disable URL enrichment - url_enrichment: bool | None = dc_field( - default=None, metadata=dc_config(field_name="url_enrichment") - ) + url_enrichment: bool | None = dc_field(default=None, metadata=dc_config(field_name="url_enrichment")) # Enable/disable user message reminders - user_message_reminders: bool | None = dc_field( - default=None, metadata=dc_config(field_name="user_message_reminders") - ) + user_message_reminders: bool | None = dc_field(default=None, metadata=dc_config(field_name="user_message_reminders")) # List of available commands - commands: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="commands") - ) - chat_preferences: "ChatPreferences | None" = dc_field( - default=None, metadata=dc_config(field_name="chat_preferences") - ) + commands: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="commands")) + chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) # Permission grants modifiers - grants: "dict[str, list[str]] | None" = dc_field( - default=None, metadata=dc_config(field_name="grants") - ) - + grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) @dataclass class ConfigResponse(DataClassJsonMixin): # Whether moderation should be performed asynchronously _async: bool = dc_field(metadata=dc_config(field_name="async")) # When the configuration was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Unique identifier for the moderation configuration key: str = dc_field(metadata=dc_config(field_name="key")) # Team associated with the configuration team: str = dc_field(metadata=dc_config(field_name="team")) # When the configuration was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - supported_video_call_harm_types: list[str] = dc_field( - metadata=dc_config(field_name="supported_video_call_harm_types") - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + supported_video_call_harm_types: list[str] = dc_field(metadata=dc_config(field_name="supported_video_call_harm_types")) # Configurable image moderation label definitions for dashboard rendering - ai_image_label_definitions: "list[AIImageLabelDefinition] | None" = dc_field( - default=None, metadata=dc_config(field_name="ai_image_label_definitions") - ) + ai_image_label_definitions: 'list[AIImageLabelDefinition] | None' = dc_field(default=None, metadata=dc_config(field_name="ai_image_label_definitions")) # Names of Bodyguard credential profiles registered on this app. The dashboard uses this list to render the profile picker on the AI Text section. - available_bodyguard_profiles: "list[BodyguardProfileSummary] | None" = dc_field( - default=None, metadata=dc_config(field_name="available_bodyguard_profiles") - ) - ai_audio_config: "AIAudioConfigResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="ai_audio_config") - ) - ai_image_config: "AIImageConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ai_image_config") - ) + available_bodyguard_profiles: 'list[BodyguardProfileSummary] | None' = dc_field(default=None, metadata=dc_config(field_name="available_bodyguard_profiles")) + ai_audio_config: 'AIAudioConfigResponse | None' = dc_field(default=None, metadata=dc_config(field_name="ai_audio_config")) + ai_image_config: 'AIImageConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ai_image_config")) # Available L2 subclassifications per L1 image moderation label, based on the active provider - ai_image_subclassifications: "dict[str, list[str]] | None" = dc_field( - default=None, metadata=dc_config(field_name="ai_image_subclassifications") - ) - ai_text_config: "AITextConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ai_text_config") - ) - ai_video_config: "AIVideoConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ai_video_config") - ) - automod_platform_circumvention_config: "AutomodPlatformCircumventionConfig | None" = dc_field( - default=None, - metadata=dc_config(field_name="automod_platform_circumvention_config"), - ) - automod_semantic_filters_config: "AutomodSemanticFiltersConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="automod_semantic_filters_config") - ) - automod_toxicity_config: "AutomodToxicityConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="automod_toxicity_config") - ) - block_list_config: "BlockListConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="block_list_config") - ) - flood_config: "FloodConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="flood_config") - ) - llm_config: "LLMConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="llm_config") - ) - velocity_filter_config: "VelocityFilterConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="velocity_filter_config") - ) - video_call_rule_config: "VideoCallRuleConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="video_call_rule_config") - ) - + ai_image_subclassifications: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="ai_image_subclassifications")) + ai_text_config: 'AITextConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ai_text_config")) + ai_video_config: 'AIVideoConfigResponse | None' = dc_field(default=None, metadata=dc_config(field_name="ai_video_config")) + automod_platform_circumvention_config: 'AutomodPlatformCircumventionConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_platform_circumvention_config")) + automod_semantic_filters_config: 'AutomodSemanticFiltersConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_semantic_filters_config")) + automod_toxicity_config: 'AutomodToxicityConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_toxicity_config")) + block_list_config: 'BlockListConfig | None' = dc_field(default=None, metadata=dc_config(field_name="block_list_config")) + flood_config: 'FloodConfig | None' = dc_field(default=None, metadata=dc_config(field_name="flood_config")) + llm_config: 'LLMConfig | None' = dc_field(default=None, metadata=dc_config(field_name="llm_config")) + velocity_filter_config: 'VelocityFilterConfig | None' = dc_field(default=None, metadata=dc_config(field_name="velocity_filter_config")) + video_call_rule_config: 'VideoCallRuleConfig | None' = dc_field(default=None, metadata=dc_config(field_name="video_call_rule_config")) @dataclass class ContentCountRuleParameters(DataClassJsonMixin): - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - time_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="time_window") - ) - + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) @dataclass class ContentCustomPropertyCountParameters(DataClassJsonMixin): - operator: str | None = dc_field( - default=None, metadata=dc_config(field_name="operator") - ) - property_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="property_key") - ) - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - time_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="time_window") - ) - + operator: str | None = dc_field(default=None, metadata=dc_config(field_name="operator")) + property_key: str | None = dc_field(default=None, metadata=dc_config(field_name="property_key")) + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) @dataclass class ContentCustomPropertyParameters(DataClassJsonMixin): - operator: str | None = dc_field( - default=None, metadata=dc_config(field_name="operator") - ) - property_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="property_key") - ) - + operator: str | None = dc_field(default=None, metadata=dc_config(field_name="operator")) + property_key: str | None = dc_field(default=None, metadata=dc_config(field_name="property_key")) @dataclass class CoordinatesResponse(DataClassJsonMixin): @@ -9216,28 +4357,16 @@ class CoordinatesResponse(DataClassJsonMixin): # Longitude coordinate longitude: float = dc_field(metadata=dc_config(field_name="longitude")) - @dataclass class CountByMinuteResponse(DataClassJsonMixin): count: int = dc_field(metadata=dc_config(field_name="count")) - start_ts: datetime = dc_field( - metadata=dc_config( - field_name="start_ts", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - + start_ts: datetime = dc_field(metadata=dc_config(field_name="start_ts", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class Coverage(DataClassJsonMixin): - publisher_encoding_profiles: int = dc_field( - metadata=dc_config(field_name="publisher_encoding_profiles") - ) - absent: "list[AbsentMetric]" = dc_field(metadata=dc_config(field_name="absent")) - metrics_pct: "MetricsPct" = dc_field(metadata=dc_config(field_name="metrics_pct")) - + publisher_encoding_profiles: int = dc_field(metadata=dc_config(field_name="publisher_encoding_profiles")) + absent: 'list[AbsentMetric]' = dc_field(metadata=dc_config(field_name="absent")) + metrics_pct: 'MetricsPct' = dc_field(metadata=dc_config(field_name="metrics_pct")) @dataclass class CreateBlockListRequest(DataClassJsonMixin): @@ -9245,158 +4374,84 @@ class CreateBlockListRequest(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) # List of words to block words: list[str] = dc_field(metadata=dc_config(field_name="words")) - is_confusable_folding_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_confusable_folding_enabled") - ) - is_leet_check_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_leet_check_enabled") - ) - is_plural_check_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_plural_check_enabled") - ) - is_substring_matching_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_substring_matching_enabled") - ) + is_confusable_folding_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_confusable_folding_enabled")) + is_leet_check_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_leet_check_enabled")) + is_plural_check_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_plural_check_enabled")) + is_substring_matching_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_substring_matching_enabled")) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Block list type. One of: regex, domain, domain_allowlist, email, email_allowlist, word type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class CreateBlockListResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Block list contains restricted words - blocklist: "BlockListResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="blocklist") - ) - + blocklist: 'BlockListResponse | None' = dc_field(default=None, metadata=dc_config(field_name="blocklist")) @dataclass class CreateCallTypeRequest(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) # the external storage for the call type - external_storage: str | None = dc_field( - default=None, metadata=dc_config(field_name="external_storage") - ) + external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="external_storage")) # the permissions granted to each role - grants: "dict[str, list[str]] | None" = dc_field( - default=None, metadata=dc_config(field_name="grants") - ) - notification_settings: "NotificationSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="notification_settings") - ) - settings: "CallSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="settings") - ) - + grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) + notification_settings: 'NotificationSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="notification_settings")) + settings: 'CallSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="settings")) @dataclass class CreateCallTypeResponse(DataClassJsonMixin): # the time the call type was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) duration: str = dc_field(metadata=dc_config(field_name="duration")) # the name of the call type name: str = dc_field(metadata=dc_config(field_name="name")) # the time the call type was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # the permissions granted to each role - grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) - notification_settings: "NotificationSettingsResponse" = dc_field( - metadata=dc_config(field_name="notification_settings") - ) - settings: "CallSettingsResponse" = dc_field( - metadata=dc_config(field_name="settings") - ) + grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) + notification_settings: 'NotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="notification_settings")) + settings: 'CallSettingsResponse' = dc_field(metadata=dc_config(field_name="settings")) # the external storage for the call type - external_storage: str | None = dc_field( - default=None, metadata=dc_config(field_name="external_storage") - ) - + external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="external_storage")) @dataclass class CreateCampaignRequest(DataClassJsonMixin): # The user ID of the sender sender_id: str = dc_field(metadata=dc_config(field_name="sender_id")) - message_template: "CampaignMessageTemplate" = dc_field( - metadata=dc_config(field_name="message_template") - ) + message_template: 'CampaignMessageTemplate' = dc_field(metadata=dc_config(field_name="message_template")) # Whether to create channels for the campaign, if they don't exist - create_channels: bool | None = dc_field( - default=None, metadata=dc_config(field_name="create_channels") - ) + create_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_channels")) # The description of the campaign - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # The name of the campaign name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # The sender mode of the campaign - sender_mode: str | None = dc_field( - default=None, metadata=dc_config(field_name="sender_mode") - ) + sender_mode: str | None = dc_field(default=None, metadata=dc_config(field_name="sender_mode")) # The visibility of the created channels for the sender - sender_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="sender_visibility") - ) + sender_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="sender_visibility")) # Whether the campaign should show channels, if they are hidden - show_channels: bool | None = dc_field( - default=None, metadata=dc_config(field_name="show_channels") - ) + show_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_channels")) # Whether to skip push notifications - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) # Whether to skip webhooks - skip_webhook: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_webhook") - ) + skip_webhook: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_webhook")) # The IDs of the segments to send the campaign to. Duplicate user IDs are removed. Use either user_ids or segment_ids, not both - segment_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="segment_ids") - ) + segment_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="segment_ids")) # The userIDs to send the campaign to. Use either segment ids or user ids not both - user_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="user_ids") - ) - channel_template: "CampaignChannelTemplate | None" = dc_field( - default=None, metadata=dc_config(field_name="channel_template") - ) - + user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="user_ids")) + channel_template: 'CampaignChannelTemplate | None' = dc_field(default=None, metadata=dc_config(field_name="channel_template")) @dataclass class CreateCampaignResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - campaign: "CampaignResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="campaign") - ) - users: "PagerResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="users") - ) - + campaign: 'CampaignResponse | None' = dc_field(default=None, metadata=dc_config(field_name="campaign")) + users: 'PagerResponse | None' = dc_field(default=None, metadata=dc_config(field_name="users")) @dataclass class CreateChannelTypeRequest(DataClassJsonMixin): @@ -9405,121 +4460,63 @@ class CreateChannelTypeRequest(DataClassJsonMixin): # Automod behavior. One of: flag, block automod_behavior: str = dc_field(metadata=dc_config(field_name="automod_behavior")) # Max message length - max_message_length: int = dc_field( - metadata=dc_config(field_name="max_message_length") - ) + max_message_length: int = dc_field(metadata=dc_config(field_name="max_message_length")) # Channel type name name: str = dc_field(metadata=dc_config(field_name="name")) # Blocklist - blocklist: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist") - ) + blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) # Blocklist behavior. One of: flag, block, shadow_block - blocklist_behavior: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist_behavior") - ) + blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) # Connect events - connect_events: bool | None = dc_field( - default=None, metadata=dc_config(field_name="connect_events") - ) + connect_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="connect_events")) # Count messages in channel. - count_messages: bool | None = dc_field( - default=None, metadata=dc_config(field_name="count_messages") - ) + count_messages: bool | None = dc_field(default=None, metadata=dc_config(field_name="count_messages")) # Custom events - custom_events: bool | None = dc_field( - default=None, metadata=dc_config(field_name="custom_events") - ) - delivery_events: bool | None = dc_field( - default=None, metadata=dc_config(field_name="delivery_events") - ) + custom_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="custom_events")) + delivery_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="delivery_events")) # Mark messages pending - mark_messages_pending: bool | None = dc_field( - default=None, metadata=dc_config(field_name="mark_messages_pending") - ) + mark_messages_pending: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_messages_pending")) # Message retention. One of: infinite, numeric - message_retention: str | None = dc_field( - default=None, metadata=dc_config(field_name="message_retention") - ) + message_retention: str | None = dc_field(default=None, metadata=dc_config(field_name="message_retention")) # Mutes mutes: bool | None = dc_field(default=None, metadata=dc_config(field_name="mutes")) # Partition size - partition_size: int | None = dc_field( - default=None, metadata=dc_config(field_name="partition_size") - ) + partition_size: int | None = dc_field(default=None, metadata=dc_config(field_name="partition_size")) # Partition TTL - partition_ttl: str | None = dc_field( - default=None, metadata=dc_config(field_name="partition_ttl") - ) + partition_ttl: str | None = dc_field(default=None, metadata=dc_config(field_name="partition_ttl")) # Polls polls: bool | None = dc_field(default=None, metadata=dc_config(field_name="polls")) # Default push notification level for the channel type. One of: all, all_mentions, mentions, direct_mentions, none - push_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_level") - ) + push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) # Push notifications - push_notifications: bool | None = dc_field( - default=None, metadata=dc_config(field_name="push_notifications") - ) + push_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="push_notifications")) # Reactions - reactions: bool | None = dc_field( - default=None, metadata=dc_config(field_name="reactions") - ) + reactions: bool | None = dc_field(default=None, metadata=dc_config(field_name="reactions")) # Read events - read_events: bool | None = dc_field( - default=None, metadata=dc_config(field_name="read_events") - ) + read_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="read_events")) # Replies - replies: bool | None = dc_field( - default=None, metadata=dc_config(field_name="replies") - ) + replies: bool | None = dc_field(default=None, metadata=dc_config(field_name="replies")) # Search - search: bool | None = dc_field( - default=None, metadata=dc_config(field_name="search") - ) + search: bool | None = dc_field(default=None, metadata=dc_config(field_name="search")) # Enables shared location messages - shared_locations: bool | None = dc_field( - default=None, metadata=dc_config(field_name="shared_locations") - ) - skip_last_msg_update_for_system_msgs: bool | None = dc_field( - default=None, - metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs"), - ) + shared_locations: bool | None = dc_field(default=None, metadata=dc_config(field_name="shared_locations")) + skip_last_msg_update_for_system_msgs: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs")) # Typing events - typing_events: bool | None = dc_field( - default=None, metadata=dc_config(field_name="typing_events") - ) + typing_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="typing_events")) # Uploads - uploads: bool | None = dc_field( - default=None, metadata=dc_config(field_name="uploads") - ) + uploads: bool | None = dc_field(default=None, metadata=dc_config(field_name="uploads")) # URL enrichment - url_enrichment: bool | None = dc_field( - default=None, metadata=dc_config(field_name="url_enrichment") - ) - user_message_reminders: bool | None = dc_field( - default=None, metadata=dc_config(field_name="user_message_reminders") - ) + url_enrichment: bool | None = dc_field(default=None, metadata=dc_config(field_name="url_enrichment")) + user_message_reminders: bool | None = dc_field(default=None, metadata=dc_config(field_name="user_message_reminders")) # Blocklists - blocklists: "list[BlockListOptions] | None" = dc_field( - default=None, metadata=dc_config(field_name="blocklists") - ) + blocklists: 'list[BlockListOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="blocklists")) # List of commands that channel supports - commands: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="commands") - ) + commands: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="commands")) # List of permissions for the channel type - permissions: "list[PolicyRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="permissions") - ) - chat_preferences: "ChatPreferences | None" = dc_field( - default=None, metadata=dc_config(field_name="chat_preferences") - ) + permissions: 'list[PolicyRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="permissions")) + chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) # List of grants for the channel type - grants: "dict[str, list[str]] | None" = dc_field( - default=None, metadata=dc_config(field_name="grants") - ) - + grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) @dataclass class CreateChannelTypeResponse(DataClassJsonMixin): @@ -9527,32 +4524,17 @@ class CreateChannelTypeResponse(DataClassJsonMixin): automod_behavior: str = dc_field(metadata=dc_config(field_name="automod_behavior")) connect_events: bool = dc_field(metadata=dc_config(field_name="connect_events")) count_messages: bool = dc_field(metadata=dc_config(field_name="count_messages")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom_events: bool = dc_field(metadata=dc_config(field_name="custom_events")) delivery_events: bool = dc_field(metadata=dc_config(field_name="delivery_events")) duration: str = dc_field(metadata=dc_config(field_name="duration")) - mark_messages_pending: bool = dc_field( - metadata=dc_config(field_name="mark_messages_pending") - ) - max_message_length: int = dc_field( - metadata=dc_config(field_name="max_message_length") - ) - message_retention: str = dc_field( - metadata=dc_config(field_name="message_retention") - ) + mark_messages_pending: bool = dc_field(metadata=dc_config(field_name="mark_messages_pending")) + max_message_length: int = dc_field(metadata=dc_config(field_name="max_message_length")) + message_retention: str = dc_field(metadata=dc_config(field_name="message_retention")) mutes: bool = dc_field(metadata=dc_config(field_name="mutes")) name: str = dc_field(metadata=dc_config(field_name="name")) polls: bool = dc_field(metadata=dc_config(field_name="polls")) - push_notifications: bool = dc_field( - metadata=dc_config(field_name="push_notifications") - ) + push_notifications: bool = dc_field(metadata=dc_config(field_name="push_notifications")) quotes: bool = dc_field(metadata=dc_config(field_name="quotes")) reactions: bool = dc_field(metadata=dc_config(field_name="reactions")) read_events: bool = dc_field(metadata=dc_config(field_name="read_events")) @@ -9560,81 +4542,39 @@ class CreateChannelTypeResponse(DataClassJsonMixin): replies: bool = dc_field(metadata=dc_config(field_name="replies")) search: bool = dc_field(metadata=dc_config(field_name="search")) shared_locations: bool = dc_field(metadata=dc_config(field_name="shared_locations")) - skip_last_msg_update_for_system_msgs: bool = dc_field( - metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs") - ) + skip_last_msg_update_for_system_msgs: bool = dc_field(metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs")) typing_events: bool = dc_field(metadata=dc_config(field_name="typing_events")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) uploads: bool = dc_field(metadata=dc_config(field_name="uploads")) url_enrichment: bool = dc_field(metadata=dc_config(field_name="url_enrichment")) - user_message_reminders: bool = dc_field( - metadata=dc_config(field_name="user_message_reminders") - ) + user_message_reminders: bool = dc_field(metadata=dc_config(field_name="user_message_reminders")) commands: list[str] = dc_field(metadata=dc_config(field_name="commands")) - permissions: "list[PolicyRequest]" = dc_field( - metadata=dc_config(field_name="permissions") - ) - grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) - blocklist: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist") - ) - blocklist_behavior: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist_behavior") - ) - partition_size: int | None = dc_field( - default=None, metadata=dc_config(field_name="partition_size") - ) - partition_ttl: str | None = dc_field( - default=None, metadata=dc_config(field_name="partition_ttl") - ) - push_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_level") - ) - allowed_flag_reasons: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="allowed_flag_reasons") - ) - blocklists: "list[BlockListOptions] | None" = dc_field( - default=None, metadata=dc_config(field_name="blocklists") - ) + permissions: 'list[PolicyRequest]' = dc_field(metadata=dc_config(field_name="permissions")) + grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) + blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) + blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) + partition_size: int | None = dc_field(default=None, metadata=dc_config(field_name="partition_size")) + partition_ttl: str | None = dc_field(default=None, metadata=dc_config(field_name="partition_ttl")) + push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) + allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) + blocklists: 'list[BlockListOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="blocklists")) # Sets thresholds for AI moderation - automod_thresholds: "Thresholds | None" = dc_field( - default=None, metadata=dc_config(field_name="automod_thresholds") - ) - chat_preferences: "ChatPreferences | None" = dc_field( - default=None, metadata=dc_config(field_name="chat_preferences") - ) - + automod_thresholds: 'Thresholds | None' = dc_field(default=None, metadata=dc_config(field_name="automod_thresholds")) + chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) @dataclass class CreateCollectionsRequest(DataClassJsonMixin): # List of collections to create - collections: "list[CollectionRequest]" = dc_field( - metadata=dc_config(field_name="collections") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + collections: 'list[CollectionRequest]' = dc_field(metadata=dc_config(field_name="collections")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class CreateCollectionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of created collections - collections: "list[CollectionResponse]" = dc_field( - metadata=dc_config(field_name="collections") - ) - + collections: 'list[CollectionResponse]' = dc_field(metadata=dc_config(field_name="collections")) @dataclass class CreateCommandRequest(DataClassJsonMixin): @@ -9647,15 +4587,11 @@ class CreateCommandRequest(DataClassJsonMixin): # Set name used for grouping commands set: str | None = dc_field(default=None, metadata=dc_config(field_name="set")) - @dataclass class CreateCommandResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents custom chat command - command: "Command | None" = dc_field( - default=None, metadata=dc_config(field_name="command") - ) - + command: 'Command | None' = dc_field(default=None, metadata=dc_config(field_name="command")) @dataclass class CreateDeviceRequest(DataClassJsonMixin): @@ -9664,26 +4600,15 @@ class CreateDeviceRequest(DataClassJsonMixin): # Push provider push_provider: str = dc_field(metadata=dc_config(field_name="push_provider")) # Stable physical device identifier used to deduplicate pushes across push providers (e.g. APNs VoIP and Firebase on the same iOS device). Distinct from 'id', which is the push token. - hardware_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="hardware_id") - ) + hardware_id: str | None = dc_field(default=None, metadata=dc_config(field_name="hardware_id")) # Push provider name - push_provider_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_provider_name") - ) + push_provider_name: str | None = dc_field(default=None, metadata=dc_config(field_name="push_provider_name")) # **Server-side only**. User ID which server acts upon - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # When true the token is for Apple VoIP push notifications - voip_token: bool | None = dc_field( - default=None, metadata=dc_config(field_name="voip_token") - ) + voip_token: bool | None = dc_field(default=None, metadata=dc_config(field_name="voip_token")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class CreateExternalStorageRequest(DataClassJsonMixin): @@ -9693,119 +4618,79 @@ class CreateExternalStorageRequest(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) # The type of storage to use storage_type: str = dc_field(metadata=dc_config(field_name="storage_type")) - gcs_credentials: str | None = dc_field( - default=None, metadata=dc_config(field_name="gcs_credentials") - ) + gcs_credentials: str | None = dc_field(default=None, metadata=dc_config(field_name="gcs_credentials")) # The path prefix to use for storing files path: str | None = dc_field(default=None, metadata=dc_config(field_name="path")) # Config for creating Amazon S3 storage. - aws_s3: "S3Request | None" = dc_field( - default=None, metadata=dc_config(field_name="aws_s3") - ) + aws_s3: 'S3Request | None' = dc_field(default=None, metadata=dc_config(field_name="aws_s3")) # Config for creating Azure Blob Storage storage - azure_blob: "AzureRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="azure_blob") - ) - + azure_blob: 'AzureRequest | None' = dc_field(default=None, metadata=dc_config(field_name="azure_blob")) @dataclass class CreateExternalStorageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class CreateFeedGroupRequest(DataClassJsonMixin): # Unique identifier for the feed group id: str = dc_field(metadata=dc_config(field_name="id")) - # Default visibility for the feed group, can be 'public', 'visible', 'followers', 'members', or 'private'. Defaults to 'visible' if not provided. - default_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="default_visibility") - ) + # Role new followers of feeds in this group are given. Either a built-in (feed_follower, feed_member_viewer) or any role your app has defined. Empty means feed_follower. Applied when the follow is accepted, so a follow that starts pending picks it up on approval + default_follower_role: str | None = dc_field(default=None, metadata=dc_config(field_name="default_follower_role")) + # Default visibility for the feed group, can be 'public', 'visible', 'followers', 'members', or 'private'. Defaults to 'visible' if not provided. + default_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="default_visibility")) # Configuration for activity processors - activity_processors: "list[ActivityProcessorConfig] | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_processors") - ) + activity_processors: 'list[ActivityProcessorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_processors")) # Configuration for activity selectors - activity_selectors: "list[ActivitySelectorConfig] | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_selectors") - ) - activity_filter: "ActivityFilterConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_filter") - ) - aggregation: "AggregationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="aggregation") - ) + activity_selectors: 'list[ActivitySelectorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_selectors")) + activity_filter: 'ActivityFilterConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_filter")) + activity_processing: 'ActivityProcessingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_processing")) + aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) # Custom data for the feed group - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - notification: "NotificationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="notification") - ) - push_notification: "PushNotificationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="push_notification") - ) - ranking: "RankingConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ranking") - ) - stories: "StoriesConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="stories") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + notification: 'NotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="notification")) + push_notification: 'PushNotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="push_notification")) + ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) + stories: 'StoriesConfig | None' = dc_field(default=None, metadata=dc_config(field_name="stories")) @dataclass class CreateFeedGroupResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_group: "FeedGroupResponse" = dc_field( - metadata=dc_config(field_name="feed_group") - ) - + feed_group: 'FeedGroupResponse' = dc_field(metadata=dc_config(field_name="feed_group")) @dataclass class CreateFeedViewRequest(DataClassJsonMixin): # Unique identifier for the feed view id: str = dc_field(metadata=dc_config(field_name="id")) # Configuration for selecting activities - activity_selectors: "list[ActivitySelectorConfig] | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_selectors") - ) - aggregation: "AggregationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="aggregation") - ) - ranking: "RankingConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ranking") - ) - + activity_selectors: 'list[ActivitySelectorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_selectors")) + aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) + ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) @dataclass class CreateFeedViewResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_view: "FeedViewResponse" = dc_field(metadata=dc_config(field_name="feed_view")) - + feed_view: 'FeedViewResponse' = dc_field(metadata=dc_config(field_name="feed_view")) @dataclass class CreateFeedsBatchRequest(DataClassJsonMixin): # List of feeds to create - feeds: "list[FeedRequest]" = dc_field(metadata=dc_config(field_name="feeds")) + feeds: 'list[FeedRequest]' = dc_field(metadata=dc_config(field_name="feeds")) + # Server-side only. If true, auto-creates users referenced by feeds[].created_by_id that don't already exist. Default: false. + create_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_users")) # If true, enriches the created feeds with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enrich_own_fields") - ) - + enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) @dataclass class CreateFeedsBatchResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of created feeds - feeds: "list[FeedResponse]" = dc_field(metadata=dc_config(field_name="feeds")) - + feeds: 'list[FeedResponse]' = dc_field(metadata=dc_config(field_name="feeds")) @dataclass class CreateGuestRequest(DataClassJsonMixin): # User request object - user: "UserRequest" = dc_field(metadata=dc_config(field_name="user")) - + user: 'UserRequest' = dc_field(metadata=dc_config(field_name="user")) @dataclass class CreateGuestResponse(DataClassJsonMixin): @@ -9814,33 +4699,23 @@ class CreateGuestResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) @dataclass class CreateImportRequest(DataClassJsonMixin): mode: str = dc_field(metadata=dc_config(field_name="mode")) path: str = dc_field(metadata=dc_config(field_name="path")) - merge_custom: bool | None = dc_field( - default=None, metadata=dc_config(field_name="merge_custom") - ) - + merge_custom: bool | None = dc_field(default=None, metadata=dc_config(field_name="merge_custom")) @dataclass class CreateImportResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - import_task: "ImportTask | None" = dc_field( - default=None, metadata=dc_config(field_name="import_task") - ) - + import_task: 'ImportTask | None' = dc_field(default=None, metadata=dc_config(field_name="import_task")) @dataclass class CreateImportURLRequest(DataClassJsonMixin): - filename: str | None = dc_field( - default=None, metadata=dc_config(field_name="filename") - ) - + filename: str | None = dc_field(default=None, metadata=dc_config(field_name="filename")) @dataclass class CreateImportURLResponse(DataClassJsonMixin): @@ -9849,50 +4724,25 @@ class CreateImportURLResponse(DataClassJsonMixin): path: str = dc_field(metadata=dc_config(field_name="path")) upload_url: str = dc_field(metadata=dc_config(field_name="upload_url")) - @dataclass class CreateImportV2TaskRequest(DataClassJsonMixin): product: str = dc_field(metadata=dc_config(field_name="product")) - settings: "ImportV2TaskSettings" = dc_field( - metadata=dc_config(field_name="settings") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + settings: 'ImportV2TaskSettings' = dc_field(metadata=dc_config(field_name="settings")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class CreateImportV2TaskResponse(DataClassJsonMixin): app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) id: str = dc_field(metadata=dc_config(field_name="id")) product: str = dc_field(metadata=dc_config(field_name="product")) state: int = dc_field(metadata=dc_config(field_name="state")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - settings: "ImportV2TaskSettings" = dc_field( - metadata=dc_config(field_name="settings") - ) - + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + settings: 'ImportV2TaskSettings' = dc_field(metadata=dc_config(field_name="settings")) @dataclass class CreateMembershipLevelRequest(DataClassJsonMixin): @@ -9901,30 +4751,18 @@ class CreateMembershipLevelRequest(DataClassJsonMixin): # Display name for the membership level name: str = dc_field(metadata=dc_config(field_name="name")) # Optional description of the membership level - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) # Priority level (higher numbers = higher priority) - priority: int | None = dc_field( - default=None, metadata=dc_config(field_name="priority") - ) + priority: int | None = dc_field(default=None, metadata=dc_config(field_name="priority")) # Activity tags this membership level gives access to - tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="tags") - ) + tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="tags")) # Custom data for the membership level - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class CreateMembershipLevelResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - membership_level: "MembershipLevelResponse" = dc_field( - metadata=dc_config(field_name="membership_level") - ) - + membership_level: 'MembershipLevelResponse' = dc_field(metadata=dc_config(field_name="membership_level")) @dataclass class CreatePermissionRequest(DataClassJsonMixin): @@ -9937,101 +4775,59 @@ class CreatePermissionRequest(DataClassJsonMixin): # MongoDB style condition which decides whether or not the permission is granted condition: dict[str, object] = dc_field(metadata=dc_config(field_name="condition")) # Description of the permission - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) # Whether this permission applies to resource owner or not owner: bool | None = dc_field(default=None, metadata=dc_config(field_name="owner")) # Whether this permission applies to teammates (multi-tenancy mode only) - same_team: bool | None = dc_field( - default=None, metadata=dc_config(field_name="same_team") - ) - + same_team: bool | None = dc_field(default=None, metadata=dc_config(field_name="same_team")) @dataclass class CreatePolicyTestSetRequest(DataClassJsonMixin): # Display name; unique within an app name: str = dc_field(metadata=dc_config(field_name="name")) # Moderation config key (default: app default) - config_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="config_key") - ) + config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) # Execution target: 'check' or 'labels'. Optional — defaults to 'labels' when the org has the labels API enabled, 'check' otherwise mode: str | None = dc_field(default=None, metadata=dc_config(field_name="mode")) # Team scope for the config (optional) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Messages to test; capped at 1000. Mutually exclusive with seed - rows: "list[PolicyTestRow] | None" = dc_field( - default=None, metadata=dc_config(field_name="rows") - ) - seed: "PolicyTestSeedSpec | None" = dc_field( - default=None, metadata=dc_config(field_name="seed") - ) - + rows: 'list[PolicyTestRow] | None' = dc_field(default=None, metadata=dc_config(field_name="rows")) + seed: 'PolicyTestSeedSpec | None' = dc_field(default=None, metadata=dc_config(field_name="seed")) @dataclass class CreatePollOptionRequest(DataClassJsonMixin): # Option text text: str = dc_field(metadata=dc_config(field_name="text")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Custom data for this object - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class CreatePollRequest(DataClassJsonMixin): # The name of the poll name: str = dc_field(metadata=dc_config(field_name="name")) # Indicates whether users can suggest user defined answers - allow_answers: bool | None = dc_field( - default=None, metadata=dc_config(field_name="allow_answers") - ) - allow_user_suggested_options: bool | None = dc_field( - default=None, metadata=dc_config(field_name="allow_user_suggested_options") - ) + allow_answers: bool | None = dc_field(default=None, metadata=dc_config(field_name="allow_answers")) + allow_user_suggested_options: bool | None = dc_field(default=None, metadata=dc_config(field_name="allow_user_suggested_options")) # A description of the poll - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) # Indicates whether users can cast multiple votes - enforce_unique_vote: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enforce_unique_vote") - ) + enforce_unique_vote: bool | None = dc_field(default=None, metadata=dc_config(field_name="enforce_unique_vote")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # Indicates whether the poll is open for voting - is_closed: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_closed") - ) + is_closed: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_closed")) # Indicates the maximum amount of votes a user can cast - max_votes_allowed: int | None = dc_field( - default=None, metadata=dc_config(field_name="max_votes_allowed") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - voting_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="voting_visibility") - ) - options: "list[PollOptionInput] | None" = dc_field( - default=None, metadata=dc_config(field_name="options") - ) + max_votes_allowed: int | None = dc_field(default=None, metadata=dc_config(field_name="max_votes_allowed")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + voting_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="voting_visibility")) + options: 'list[PollOptionInput] | None' = dc_field(default=None, metadata=dc_config(field_name="options")) # Custom data for this object - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class CreatePredefinedFilterRequest(DataClassJsonMixin): @@ -10042,77 +4838,49 @@ class CreatePredefinedFilterRequest(DataClassJsonMixin): # Filter to apply to the query filter: dict[str, object] = dc_field(metadata=dc_config(field_name="filter")) # The description of the predefined filter - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) - sort: "list[dict[str, object]] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) - + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + sort: 'list[dict[str, object]] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) @dataclass class CreatePredefinedFilterResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - predefined_filter: "PredefinedFilterResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="predefined_filter") - ) - + predefined_filter: 'PredefinedFilterResponse | None' = dc_field(default=None, metadata=dc_config(field_name="predefined_filter")) @dataclass class CreateQueueRequest(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) type: str = dc_field(metadata=dc_config(field_name="type")) - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - sort: "list[dict[str, object]] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) - filters: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filters") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + sort: 'list[dict[str, object]] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + filters: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filters")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class CreateReminderRequest(DataClassJsonMixin): - remind_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="remind_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + remind_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="remind_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) +@dataclass +class CreateReminderResponse(DataClassJsonMixin): + # Duration of the request in milliseconds + duration: str = dc_field(metadata=dc_config(field_name="duration")) + reminder: 'ReminderResponseData' = dc_field(metadata=dc_config(field_name="reminder")) @dataclass class CreateRoleRequest(DataClassJsonMixin): # Role name name: str = dc_field(metadata=dc_config(field_name="name")) - @dataclass class CreateRoleResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - role: "Role" = dc_field(metadata=dc_config(field_name="role")) - + role: 'Role' = dc_field(metadata=dc_config(field_name="role")) @dataclass class CreateSIPTrunkRequest(DataClassJsonMixin): @@ -10121,96 +4889,63 @@ class CreateSIPTrunkRequest(DataClassJsonMixin): # Phone numbers associated with this SIP trunk numbers: list[str] = dc_field(metadata=dc_config(field_name="numbers")) # Optional password for SIP trunk authentication - password: str | None = dc_field( - default=None, metadata=dc_config(field_name="password") - ) + password: str | None = dc_field(default=None, metadata=dc_config(field_name="password")) # Optional list of allowed IPv4/IPv6 addresses or CIDR blocks - allowed_ips: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="allowed_ips") - ) - + allowed_ips: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_ips")) @dataclass class CreateSIPTrunkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # SIP trunk information - sip_trunk: "SIPTrunkResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="sip_trunk") - ) - + sip_trunk: 'SIPTrunkResponse | None' = dc_field(default=None, metadata=dc_config(field_name="sip_trunk")) @dataclass class CreateSegmentRequest(DataClassJsonMixin): # The type of the segment type: str = dc_field(metadata=dc_config(field_name="type")) # If true, all sender channels are included in the segment - all_sender_channels: bool | None = dc_field( - default=None, metadata=dc_config(field_name="all_sender_channels") - ) + all_sender_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="all_sender_channels")) # If true, all users are included in the segment - all_users: bool | None = dc_field( - default=None, metadata=dc_config(field_name="all_users") - ) + all_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="all_users")) # The description of the segment (max 256 characters) - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) # The ID of the segment id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # The name of the segment (max 128 characters) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # Filter to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) - + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) @dataclass class CreateSegmentResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - segment: "SegmentResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="segment") - ) - + segment: 'SegmentResponse | None' = dc_field(default=None, metadata=dc_config(field_name="segment")) @dataclass class CreateUserGroupRequest(DataClassJsonMixin): # The user friendly name of the user group name: str = dc_field(metadata=dc_config(field_name="name")) # An optional description for the group - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) # Optional user group ID. If not provided, a UUID v7 will be generated id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # Optional team ID to scope the group to a team - team_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="team_id") - ) + team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="team_id")) # Optional initial list of user IDs to add as members - member_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="member_ids") - ) - + member_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="member_ids")) @dataclass class CreateUserGroupResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - user_group: "UserGroupResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user_group") - ) - + user_group: 'UserGroupResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) @dataclass class CustomActionRequestPayload(DataClassJsonMixin): # Custom action identifier id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # Custom action options - options: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="options") - ) - + options: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="options")) @dataclass class CustomCheckFlag(DataClassJsonMixin): @@ -10219,14 +4954,9 @@ class CustomCheckFlag(DataClassJsonMixin): # Optional explanation for the flag reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) # Labels from various moderation sources - labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="labels") - ) + labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="labels")) # Additional metadata for the flag - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class CustomCheckRequest(DataClassJsonMixin): @@ -10235,23 +4965,14 @@ class CustomCheckRequest(DataClassJsonMixin): # Type of entity to perform custom check on entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) # List of custom check flags (1-10 flags required) - flags: "list[CustomCheckFlag]" = dc_field(metadata=dc_config(field_name="flags")) + flags: 'list[CustomCheckFlag]' = dc_field(metadata=dc_config(field_name="flags")) # ID of the user who created the entity (required for non-message entities) - entity_creator_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_creator_id") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + entity_creator_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_creator_id")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Content payload for moderation - moderation_payload: "ModerationPayloadRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation_payload") - ) + moderation_payload: 'ModerationPayloadRequest | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_payload")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class CustomCheckResponse(DataClassJsonMixin): @@ -10260,109 +4981,65 @@ class CustomCheckResponse(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) # Status of the custom check status: str = dc_field(metadata=dc_config(field_name="status")) - item: "ReviewQueueItemResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="item") - ) - + item: 'ReviewQueueItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="item")) @dataclass class CustomEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) type: str = dc_field(default="*", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class CustomVideoEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Custom data for this object custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # The type of event, "custom" in this case type: str = dc_field(default="custom", metadata=dc_config(field_name="type")) - @dataclass class DailyAggregateCallDurationReportResponse(DataClassJsonMixin): date: str = dc_field(metadata=dc_config(field_name="date")) - report: "CallDurationReport" = dc_field(metadata=dc_config(field_name="report")) - + report: 'CallDurationReport' = dc_field(metadata=dc_config(field_name="report")) @dataclass class DailyAggregateCallParticipantCountReportResponse(DataClassJsonMixin): date: str = dc_field(metadata=dc_config(field_name="date")) - report: "CallParticipantCountReport" = dc_field( - metadata=dc_config(field_name="report") - ) - + report: 'CallParticipantCountReport' = dc_field(metadata=dc_config(field_name="report")) @dataclass class DailyAggregateCallsPerDayReportResponse(DataClassJsonMixin): date: str = dc_field(metadata=dc_config(field_name="date")) - report: "CallsPerDayReport" = dc_field(metadata=dc_config(field_name="report")) - + report: 'CallsPerDayReport' = dc_field(metadata=dc_config(field_name="report")) @dataclass class DailyAggregateQualityScoreReportResponse(DataClassJsonMixin): date: str = dc_field(metadata=dc_config(field_name="date")) - report: "QualityScoreReport" = dc_field(metadata=dc_config(field_name="report")) - + report: 'QualityScoreReport' = dc_field(metadata=dc_config(field_name="report")) @dataclass class DailyAggregateSDKUsageReportResponse(DataClassJsonMixin): date: str = dc_field(metadata=dc_config(field_name="date")) - report: "SDKUsageReport" = dc_field(metadata=dc_config(field_name="report")) - + report: 'SDKUsageReport' = dc_field(metadata=dc_config(field_name="report")) @dataclass class DailyAggregateUserFeedbackReportResponse(DataClassJsonMixin): date: str = dc_field(metadata=dc_config(field_name="date")) - report: "UserFeedbackReport" = dc_field(metadata=dc_config(field_name="report")) - + report: 'UserFeedbackReport' = dc_field(metadata=dc_config(field_name="report")) @dataclass class DailyDigestCallSessionSummary(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) call_session_id: str = dc_field(metadata=dc_config(field_name="call_session_id")) has_digest: bool = dc_field(metadata=dc_config(field_name="has_digest")) - counts: "CallStatsParticipantCounts" = dc_field( - metadata=dc_config(field_name="counts") - ) - digest_error: str | None = dc_field( - default=None, metadata=dc_config(field_name="digest_error") - ) - session_ended_at: str | None = dc_field( - default=None, metadata=dc_config(field_name="session_ended_at") - ) - session_started_at: str | None = dc_field( - default=None, metadata=dc_config(field_name="session_started_at") - ) - + counts: 'CallStatsParticipantCounts' = dc_field(metadata=dc_config(field_name="counts")) + digest_error: str | None = dc_field(default=None, metadata=dc_config(field_name="digest_error")) + session_ended_at: str | None = dc_field(default=None, metadata=dc_config(field_name="session_ended_at")) + session_started_at: str | None = dc_field(default=None, metadata=dc_config(field_name="session_started_at")) @dataclass class DailyMetricResponse(DataClassJsonMixin): @@ -10371,16 +5048,12 @@ class DailyMetricResponse(DataClassJsonMixin): # Metric value for this date value: int = dc_field(metadata=dc_config(field_name="value")) - @dataclass class DailyMetricStatsResponse(DataClassJsonMixin): # Total value across all days in the date range total: int = dc_field(metadata=dc_config(field_name="total")) # Array of daily metric values - daily: "list[DailyMetricResponse]" = dc_field( - metadata=dc_config(field_name="daily") - ) - + daily: 'list[DailyMetricResponse]' = dc_field(metadata=dc_config(field_name="daily")) @dataclass class DailyValue(DataClassJsonMixin): @@ -10389,61 +5062,39 @@ class DailyValue(DataClassJsonMixin): # Metric value for this date value: int = dc_field(metadata=dc_config(field_name="value")) - @dataclass class Data(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) - @dataclass class DataDogInfo(DataClassJsonMixin): - api_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="api_key") - ) - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) + api_key: str | None = dc_field(default=None, metadata=dc_config(field_name="api_key")) + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) site: str | None = dc_field(default=None, metadata=dc_config(field_name="site")) - @dataclass class DeactivateUserRequest(DataClassJsonMixin): # ID of the user who deactivated the user - created_by_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="created_by_id") - ) + created_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_id")) # Makes messages appear to be deleted - mark_messages_deleted: bool | None = dc_field( - default=None, metadata=dc_config(field_name="mark_messages_deleted") - ) - + mark_messages_deleted: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_messages_deleted")) @dataclass class DeactivateUserResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class DeactivateUsersRequest(DataClassJsonMixin): # User IDs to deactivate user_ids: list[str] = dc_field(metadata=dc_config(field_name="user_ids")) # ID of the user who deactivated the users - created_by_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="created_by_id") - ) - mark_channels_deleted: bool | None = dc_field( - default=None, metadata=dc_config(field_name="mark_channels_deleted") - ) + created_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_id")) + mark_channels_deleted: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_channels_deleted")) # Makes messages appear to be deleted - mark_messages_deleted: bool | None = dc_field( - default=None, metadata=dc_config(field_name="mark_messages_deleted") - ) - + mark_messages_deleted: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_messages_deleted")) @dataclass class DeactivateUsersResponse(DataClassJsonMixin): @@ -10451,7 +5102,6 @@ class DeactivateUsersResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - @dataclass class DecayFunctionConfig(DataClassJsonMixin): # Base value for decay function @@ -10459,9 +5109,7 @@ class DecayFunctionConfig(DataClassJsonMixin): # Decay rate decay: str | None = dc_field(default=None, metadata=dc_config(field_name="decay")) # Direction of decay - direction: str | None = dc_field( - default=None, metadata=dc_config(field_name="direction") - ) + direction: str | None = dc_field(default=None, metadata=dc_config(field_name="direction")) # Offset value for decay function offset: str | None = dc_field(default=None, metadata=dc_config(field_name="offset")) # Origin value for decay function @@ -10469,34 +5117,23 @@ class DecayFunctionConfig(DataClassJsonMixin): # Scale factor for decay function scale: str | None = dc_field(default=None, metadata=dc_config(field_name="scale")) - @dataclass class DeleteActionConfigResponse(DataClassJsonMixin): # Number of action configs deleted (0 or 1) deleted: int = dc_field(metadata=dc_config(field_name="deleted")) duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteActivitiesRequest(DataClassJsonMixin): # List of activity IDs to delete ids: list[str] = dc_field(metadata=dc_config(field_name="ids")) # Whether to also delete any notification activities created from mentions in these activities - delete_notification_activity: bool | None = dc_field( - default=None, metadata=dc_config(field_name="delete_notification_activity") - ) + delete_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="delete_notification_activity")) # Whether to permanently delete the activities - hard_delete: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hard_delete") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class DeleteActivitiesResponse(DataClassJsonMixin): @@ -10504,189 +5141,138 @@ class DeleteActivitiesResponse(DataClassJsonMixin): # List of activity IDs that were successfully deleted deleted_ids: list[str] = dc_field(metadata=dc_config(field_name="deleted_ids")) - @dataclass class DeleteActivityReactionResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) - reaction: "FeedsReactionResponse" = dc_field( - metadata=dc_config(field_name="reaction") - ) - + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) @dataclass class DeleteActivityRequestPayload(DataClassJsonMixin): # ID of the activity to delete (alternative to item_id) - entity_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_id") - ) + entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) # Type of the entity (required for delete_activity to distinguish v2 vs v3) - entity_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_type") - ) + entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) # Whether to permanently delete the activity - hard_delete: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hard_delete") - ) + hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) # Reason for deletion reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - @dataclass class DeleteActivityResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteBookmarkFolderResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteBookmarkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) - + bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) @dataclass class DeleteCallRequest(DataClassJsonMixin): # if true the call will be hard deleted along with all related data hard: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard")) - @dataclass class DeleteCallResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) - task_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="task_id") - ) - + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + task_id: str | None = dc_field(default=None, metadata=dc_config(field_name="task_id")) @dataclass class DeleteCampaignResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteChannelResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) - + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) @dataclass class DeleteChannelsRequest(DataClassJsonMixin): # All channels that should be deleted cids: list[str] = dc_field(metadata=dc_config(field_name="cids")) # Specify if channels and all ressources should be hard deleted - hard_delete: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hard_delete") - ) - + hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) @dataclass class DeleteChannelsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - task_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="task_id") - ) + task_id: str | None = dc_field(default=None, metadata=dc_config(field_name="task_id")) # Map of channel IDs and their deletion results - result: "dict[str, DeleteChannelsResultResponse | None] | None" = dc_field( - default=None, metadata=dc_config(field_name="result") - ) - + result: 'dict[str, DeleteChannelsResultResponse | None] | None' = dc_field(default=None, metadata=dc_config(field_name="result")) @dataclass class DeleteChannelsResultResponse(DataClassJsonMixin): status: str = dc_field(metadata=dc_config(field_name="status")) error: str | None = dc_field(default=None, metadata=dc_config(field_name="error")) - @dataclass class DeleteCollectionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteCommandResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Command name name: str = dc_field(metadata=dc_config(field_name="name")) - @dataclass class DeleteCommentBookmarkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) - + bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) @dataclass class DeleteCommentReactionResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) - reaction: "FeedsReactionResponse" = dc_field( - metadata=dc_config(field_name="reaction") - ) - + comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) + reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) @dataclass class DeleteCommentRequestPayload(DataClassJsonMixin): # ID of the comment to delete (alternative to item_id) - entity_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_id") - ) + entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) # Type of the entity - entity_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_type") - ) + entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) # Whether to permanently delete the comment - hard_delete: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hard_delete") - ) + hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) # Reason for deletion reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - @dataclass class DeleteCommentResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) - comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) - + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) @dataclass class DeleteExternalStorageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteFeedGroupResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteFeedResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # The ID of the async task that will handle feed cleanup and hard deletion task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - @dataclass class DeleteFeedUserDataRequest(DataClassJsonMixin): # Whether to perform a hard delete instead of a soft delete - hard_delete: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hard_delete") - ) - + hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) @dataclass class DeleteFeedUserDataResponse(DataClassJsonMixin): @@ -10694,25 +5280,18 @@ class DeleteFeedUserDataResponse(DataClassJsonMixin): # The task ID for the deletion task task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - @dataclass class DeleteFeedViewResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteFeedsBatchRequest(DataClassJsonMixin): # List of fully qualified feed IDs (format: group_id:feed_id) to delete feeds: list[str] = dc_field(metadata=dc_config(field_name="feeds")) # Whether to permanently delete the feeds instead of soft delete - hard_delete: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hard_delete") - ) + hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) # When hard-deleting, also fully delete activities authored by each feed's owner from every other feed those activities were fanned out to. Default false preserves existing fan-out. Requires 'hard_delete' to be true; the request is rejected otherwise. Feeds with no recorded owner (created_by_id is empty) are silently skipped for the purge step — owner-matching against an empty string is a safety guard, not a wildcard. - purge_user_activities: bool | None = dc_field( - default=None, metadata=dc_config(field_name="purge_user_activities") - ) - + purge_user_activities: bool | None = dc_field(default=None, metadata=dc_config(field_name="purge_user_activities")) @dataclass class DeleteFeedsBatchResponse(DataClassJsonMixin): @@ -10720,192 +5299,136 @@ class DeleteFeedsBatchResponse(DataClassJsonMixin): # The ID of the async task that will handle feed cleanup and hard deletion task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - @dataclass class DeleteImportV2TaskResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteMessageRequestPayload(DataClassJsonMixin): # ID of the message to delete (alternative to item_id) - entity_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_id") - ) + entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) # Type of the entity - entity_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_type") - ) + entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) # Whether to permanently delete the message - hard_delete: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hard_delete") - ) + hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) # Reason for deletion reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - @dataclass class DeleteMessageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) - + message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) @dataclass class DeleteModerationConfigResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteModerationRuleResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteModerationTemplateResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteQueueRequest(DataClassJsonMixin): - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class DeleteReactionRequestPayload(DataClassJsonMixin): # ID of the reaction to delete (alternative to item_id) - entity_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_id") - ) + entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) # Type of the entity - entity_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_type") - ) + entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) # Whether to permanently delete the reaction - hard_delete: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hard_delete") - ) + hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) # Reason for deletion reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - @dataclass class DeleteReactionResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) - reaction: "ReactionResponse" = dc_field(metadata=dc_config(field_name="reaction")) - + message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) + reaction: 'ReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) @dataclass class DeleteRecordingResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteReminderResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteRetentionPolicyRequest(DataClassJsonMixin): policy: str = dc_field(metadata=dc_config(field_name="policy")) - @dataclass class DeleteRetentionPolicyResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteSIPInboundRoutingRuleResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteSIPTrunkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteSegmentTargetsRequest(DataClassJsonMixin): # Target IDs target_ids: list[str] = dc_field(metadata=dc_config(field_name="target_ids")) - @dataclass class DeleteTranscriptionResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class DeleteUserMessagesRequestPayload(DataClassJsonMixin): # Message deletion mode: soft, pruning, or hard delete_messages: str = dc_field(metadata=dc_config(field_name="delete_messages")) # Optional: scope deletion to a single channel (alternative to app-wide deletion) - channel_cid: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_cid") - ) + channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) # Whether to also delete the user's reactions on other users' messages - delete_reactions: bool | None = dc_field( - default=None, metadata=dc_config(field_name="delete_reactions") - ) + delete_reactions: bool | None = dc_field(default=None, metadata=dc_config(field_name="delete_reactions")) # ID of the user whose messages should be deleted (alternative to item_id) - entity_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_id") - ) + entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) # Type of the entity - entity_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_type") - ) + entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) # Reason for the deletion reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - @dataclass class DeleteUserRequestPayload(DataClassJsonMixin): # Also delete all user conversations - delete_conversation_channels: bool | None = dc_field( - default=None, metadata=dc_config(field_name="delete_conversation_channels") - ) + delete_conversation_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="delete_conversation_channels")) # Delete flagged feeds content - delete_feeds_content: bool | None = dc_field( - default=None, metadata=dc_config(field_name="delete_feeds_content") - ) + delete_feeds_content: bool | None = dc_field(default=None, metadata=dc_config(field_name="delete_feeds_content")) # ID of the user to delete (alternative to item_id) - entity_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_id") - ) + entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) # Type of the entity - entity_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_type") - ) + entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) # Whether to permanently delete the user - hard_delete: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hard_delete") - ) + hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) # Also delete all user messages - mark_messages_deleted: bool | None = dc_field( - default=None, metadata=dc_config(field_name="mark_messages_deleted") - ) + mark_messages_deleted: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_messages_deleted")) # Reason for deletion reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - @dataclass class DeleteUsersRequest(DataClassJsonMixin): # IDs of users to delete @@ -10921,9 +5444,7 @@ class DeleteUsersRequest(DataClassJsonMixin): # * null or empty string - doesn't delete any conversation channels # * soft - marks all conversation channels as deleted (same effect as Delete Channels with 'hard' option disabled) # * hard - deletes channel and all its data completely including messages (same effect as Delete Channels with 'hard' option enabled) - conversations: str | None = dc_field( - default=None, metadata=dc_config(field_name="conversations") - ) + conversations: str | None = dc_field(default=None, metadata=dc_config(field_name="conversations")) # Delete user files. # * false or empty string - doesn't delete any files # * true - deletes all files uploaded by the user, including images and attachments. @@ -10933,22 +5454,15 @@ class DeleteUsersRequest(DataClassJsonMixin): # * soft - marks all user messages as deleted without removing any related message data # * pruning - marks all user messages as deleted, nullifies message information and removes some message data such as reactions and flags # * hard - deletes messages completely with all related information - messages: str | None = dc_field( - default=None, metadata=dc_config(field_name="messages") - ) - new_call_owner_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="new_call_owner_id") - ) - new_channel_owner_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="new_channel_owner_id") - ) + messages: str | None = dc_field(default=None, metadata=dc_config(field_name="messages")) + new_call_owner_id: str | None = dc_field(default=None, metadata=dc_config(field_name="new_call_owner_id")) + new_channel_owner_id: str | None = dc_field(default=None, metadata=dc_config(field_name="new_channel_owner_id")) # User delete mode. # * soft - marks user as deleted and retains all user data # * pruning - marks user as deleted and nullifies user information # * hard - deletes user completely. Requires 'hard' option for messages and conversations as well user: str | None = dc_field(default=None, metadata=dc_config(field_name="user")) - @dataclass class DeleteUsersResponse(DataClassJsonMixin): # Duration of the request in milliseconds @@ -10956,47 +5470,30 @@ class DeleteUsersResponse(DataClassJsonMixin): # ID of the task to delete users task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - @dataclass class DeliveredMessagePayload(DataClassJsonMixin): cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) - @dataclass class DeliveryReceiptsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - @dataclass class DeliveryZoneSegment(DataClassJsonMixin): key: str = dc_field(metadata=dc_config(field_name="key")) outlier: bool = dc_field(metadata=dc_config(field_name="outlier")) sessions: int = dc_field(metadata=dc_config(field_name="sessions")) - avg_quality_score: float | None = dc_field( - default=None, metadata=dc_config(field_name="avg_quality_score") - ) - p5_quality_score: float | None = dc_field( - default=None, metadata=dc_config(field_name="p5_quality_score") - ) - poor_pct: float | None = dc_field( - default=None, metadata=dc_config(field_name="poor_pct") - ) - share_pct: float | None = dc_field( - default=None, metadata=dc_config(field_name="share_pct") - ) - watch_share_pct: float | None = dc_field( - default=None, metadata=dc_config(field_name="watch_share_pct") - ) - + avg_quality_score: float | None = dc_field(default=None, metadata=dc_config(field_name="avg_quality_score")) + p5_quality_score: float | None = dc_field(default=None, metadata=dc_config(field_name="p5_quality_score")) + poor_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="poor_pct")) + share_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="share_pct")) + watch_share_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="watch_share_pct")) @dataclass class DeviceDataResponse(DataClassJsonMixin): name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - version: str | None = dc_field( - default=None, metadata=dc_config(field_name="version") - ) - + version: str | None = dc_field(default=None, metadata=dc_config(field_name="version")) @dataclass class DeviceErrorInfo(DataClassJsonMixin): @@ -11004,18 +5501,10 @@ class DeviceErrorInfo(DataClassJsonMixin): provider: str = dc_field(metadata=dc_config(field_name="provider")) provider_name: str = dc_field(metadata=dc_config(field_name="provider_name")) - @dataclass class DeviceResponse(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Device ID id: str = dc_field(metadata=dc_config(field_name="id")) # Push provider @@ -11023,25 +5512,16 @@ class DeviceResponse(DataClassJsonMixin): # User ID user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # Whether device is disabled or not - disabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="disabled") - ) + disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="disabled")) # Reason explaining why device had been disabled - disabled_reason: str | None = dc_field( - default=None, metadata=dc_config(field_name="disabled_reason") - ) + disabled_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="disabled_reason")) # Stable physical device identifier used to deduplicate pushes across push providers - hardware_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="hardware_id") - ) + hardware_id: str | None = dc_field(default=None, metadata=dc_config(field_name="hardware_id")) # Push provider name - push_provider_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_provider_name") - ) + push_provider_name: str | None = dc_field(default=None, metadata=dc_config(field_name="push_provider_name")) # When true the token is for Apple VoIP push notifications voip: bool | None = dc_field(default=None, metadata=dc_config(field_name="voip")) - @dataclass class DraftPayloadResponse(DataClassJsonMixin): # Message ID is unique string identifier of the message @@ -11054,81 +5534,43 @@ class DraftPayloadResponse(DataClassJsonMixin): # MML content of the message mml: str | None = dc_field(default=None, metadata=dc_config(field_name="mml")) # ID of parent message (thread) - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) # Identifier of the poll to include in the message - poll_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="poll_id") - ) - quoted_message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="quoted_message_id") - ) + poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) + quoted_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="quoted_message_id")) # Whether thread reply should be shown in the channel as well - show_in_channel: bool | None = dc_field( - default=None, metadata=dc_config(field_name="show_in_channel") - ) + show_in_channel: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_in_channel")) # Whether message is silent or not - silent: bool | None = dc_field( - default=None, metadata=dc_config(field_name="silent") - ) + silent: bool | None = dc_field(default=None, metadata=dc_config(field_name="silent")) # Contains type of the message. One of: regular, system type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) # Array of message attachments - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) # List of mentioned users - mentioned_users: "list[UserResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="mentioned_users") - ) - + mentioned_users: 'list[UserResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_users")) @dataclass class DraftResponse(DataClassJsonMixin): channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Contains the draft message content - message: "DraftPayloadResponse" = dc_field(metadata=dc_config(field_name="message")) - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) + message: 'DraftPayloadResponse' = dc_field(metadata=dc_config(field_name="message")) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) # Represents any chat message - parent_message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="parent_message") - ) + parent_message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="parent_message")) # Represents any chat message - quoted_message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="quoted_message") - ) - + quoted_message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="quoted_message")) @dataclass class EMAUStatsResponse(DataClassJsonMixin): # Per-day unique engaged user counts - daily: "list[DailyMetricResponse]" = dc_field( - metadata=dc_config(field_name="daily") - ) + daily: 'list[DailyMetricResponse]' = dc_field(metadata=dc_config(field_name="daily")) # Rolling 30-day engaged user count snapshots - last_30_days: "list[DailyMetricResponse]" = dc_field( - metadata=dc_config(field_name="last_30_days") - ) + last_30_days: 'list[DailyMetricResponse]' = dc_field(metadata=dc_config(field_name="last_30_days")) # Calendar month-to-date engaged user count snapshots - month_to_date: "list[DailyMetricResponse]" = dc_field( - metadata=dc_config(field_name="month_to_date") - ) - + month_to_date: 'list[DailyMetricResponse]' = dc_field(metadata=dc_config(field_name="month_to_date")) @dataclass class EdgeResponse(DataClassJsonMixin): @@ -11140,155 +5582,82 @@ class EdgeResponse(DataClassJsonMixin): latitude: float = dc_field(metadata=dc_config(field_name="latitude")) longitude: float = dc_field(metadata=dc_config(field_name="longitude")) red: int = dc_field(metadata=dc_config(field_name="red")) - subdivision_iso_code: str = dc_field( - metadata=dc_config(field_name="subdivision_iso_code") - ) + subdivision_iso_code: str = dc_field(metadata=dc_config(field_name="subdivision_iso_code")) yellow: int = dc_field(metadata=dc_config(field_name="yellow")) - @dataclass class EgressHLSResponse(DataClassJsonMixin): playlist_url: str = dc_field(metadata=dc_config(field_name="playlist_url")) status: str = dc_field(metadata=dc_config(field_name="status")) - @dataclass class EgressRTMPResponse(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) - started_at: datetime = dc_field( - metadata=dc_config( - field_name="started_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - stream_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="stream_key") - ) - stream_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="stream_url") - ) - + started_at: datetime = dc_field(metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + stream_key: str | None = dc_field(default=None, metadata=dc_config(field_name="stream_key")) + stream_url: str | None = dc_field(default=None, metadata=dc_config(field_name="stream_url")) @dataclass class EgressResponse(DataClassJsonMixin): broadcasting: bool = dc_field(metadata=dc_config(field_name="broadcasting")) - rtmps: "list[EgressRTMPResponse]" = dc_field(metadata=dc_config(field_name="rtmps")) - composite_recording: "CompositeRecordingResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="composite_recording") - ) - frame_recording: "FrameRecordingResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="frame_recording") - ) - hls: "EgressHLSResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="hls") - ) - individual_recording: "IndividualRecordingResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="individual_recording") - ) - raw_recording: "RawRecordingResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="raw_recording") - ) - + rtmps: 'list[EgressRTMPResponse]' = dc_field(metadata=dc_config(field_name="rtmps")) + composite_recording: 'CompositeRecordingResponse | None' = dc_field(default=None, metadata=dc_config(field_name="composite_recording")) + frame_recording: 'FrameRecordingResponse | None' = dc_field(default=None, metadata=dc_config(field_name="frame_recording")) + hls: 'EgressHLSResponse | None' = dc_field(default=None, metadata=dc_config(field_name="hls")) + individual_recording: 'IndividualRecordingResponse | None' = dc_field(default=None, metadata=dc_config(field_name="individual_recording")) + raw_recording: 'RawRecordingResponse | None' = dc_field(default=None, metadata=dc_config(field_name="raw_recording")) @dataclass class EncodingProfile(DataClassJsonMixin): - getstats_snapshots: int = dc_field( - metadata=dc_config(field_name="getstats_snapshots") - ) + getstats_snapshots: int = dc_field(metadata=dc_config(field_name="getstats_snapshots")) source_file: str = dc_field(metadata=dc_config(field_name="source_file")) svc_modes: list[str] = dc_field(metadata=dc_config(field_name="svc_modes")) - quality_limitation_durations_s: "dict[str, int]" = dc_field( - metadata=dc_config(field_name="quality_limitation_durations_s") - ) - quality_limitation_samples: "dict[str, int]" = dc_field( - metadata=dc_config(field_name="quality_limitation_samples") - ) - avg_send_kbps: int | None = dc_field( - default=None, metadata=dc_config(field_name="avg_send_kbps") - ) + quality_limitation_durations_s: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="quality_limitation_durations_s")) + quality_limitation_samples: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="quality_limitation_samples")) + avg_send_kbps: int | None = dc_field(default=None, metadata=dc_config(field_name="avg_send_kbps")) codec: str | None = dc_field(default=None, metadata=dc_config(field_name="codec")) - encoder_impl: str | None = dc_field( - default=None, metadata=dc_config(field_name="encoder_impl") - ) - fps_p10: int | None = dc_field( - default=None, metadata=dc_config(field_name="fps_p10") - ) - fps_p50: int | None = dc_field( - default=None, metadata=dc_config(field_name="fps_p50") - ) - hardware_encode: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hardware_encode") - ) - ladder_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="ladder_type") - ) - power_efficient: bool | None = dc_field( - default=None, metadata=dc_config(field_name="power_efficient") - ) - resolution: str | None = dc_field( - default=None, metadata=dc_config(field_name="resolution") - ) - simulcast_layers: int | None = dc_field( - default=None, metadata=dc_config(field_name="simulcast_layers") - ) - + encoder_impl: str | None = dc_field(default=None, metadata=dc_config(field_name="encoder_impl")) + fps_p10: int | None = dc_field(default=None, metadata=dc_config(field_name="fps_p10")) + fps_p50: int | None = dc_field(default=None, metadata=dc_config(field_name="fps_p50")) + hardware_encode: bool | None = dc_field(default=None, metadata=dc_config(field_name="hardware_encode")) + ladder_type: str | None = dc_field(default=None, metadata=dc_config(field_name="ladder_type")) + power_efficient: bool | None = dc_field(default=None, metadata=dc_config(field_name="power_efficient")) + resolution: str | None = dc_field(default=None, metadata=dc_config(field_name="resolution")) + simulcast_layers: int | None = dc_field(default=None, metadata=dc_config(field_name="simulcast_layers")) @dataclass class EncryptionSettingsRequest(DataClassJsonMixin): # Encryption mode. One of: available, disabled, auto-on mode: str | None = dc_field(default=None, metadata=dc_config(field_name="mode")) - @dataclass class EncryptionSettingsResponse(DataClassJsonMixin): # the resolved encryption mode for the call mode: str = dc_field(metadata=dc_config(field_name="mode")) - @dataclass class EndCallRequest(DataClassJsonMixin): pass - @dataclass class EndCallResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class EnrichedActivity(DataClassJsonMixin): - foreign_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="foreign_id") - ) + foreign_id: str | None = dc_field(default=None, metadata=dc_config(field_name="foreign_id")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) score: float | None = dc_field(default=None, metadata=dc_config(field_name="score")) verb: str | None = dc_field(default=None, metadata=dc_config(field_name="verb")) to: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="to")) - actor: "Data | None" = dc_field( - default=None, metadata=dc_config(field_name="actor") - ) - latest_reactions: "dict[str, list[EnrichedReaction]] | None" = dc_field( - default=None, metadata=dc_config(field_name="latest_reactions") - ) - object: "Data | None" = dc_field( - default=None, metadata=dc_config(field_name="object") - ) - origin: "Data | None" = dc_field( - default=None, metadata=dc_config(field_name="origin") - ) - own_reactions: "dict[str, list[EnrichedReaction]] | None" = dc_field( - default=None, metadata=dc_config(field_name="own_reactions") - ) - reaction_counts: "dict[str, int] | None" = dc_field( - default=None, metadata=dc_config(field_name="reaction_counts") - ) - target: "Data | None" = dc_field( - default=None, metadata=dc_config(field_name="target") - ) - + actor: 'Data | None' = dc_field(default=None, metadata=dc_config(field_name="actor")) + latest_reactions: 'dict[str, list[EnrichedReaction]] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_reactions")) + object: 'Data | None' = dc_field(default=None, metadata=dc_config(field_name="object")) + origin: 'Data | None' = dc_field(default=None, metadata=dc_config(field_name="origin")) + own_reactions: 'dict[str, list[EnrichedReaction]] | None' = dc_field(default=None, metadata=dc_config(field_name="own_reactions")) + reaction_counts: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="reaction_counts")) + target: 'Data | None' = dc_field(default=None, metadata=dc_config(field_name="target")) @dataclass class EnrichedCollectionResponse(DataClassJsonMixin): @@ -11299,34 +5668,13 @@ class EnrichedCollectionResponse(DataClassJsonMixin): # Enrichment status of the collection. One of: ok, notfound status: str = dc_field(metadata=dc_config(field_name="status")) # When the collection was created - created_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # When the collection was last updated - updated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # ID of the user who owns this collection - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Custom data for the collection - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class EnrichedReaction(DataClassJsonMixin): @@ -11335,131 +5683,66 @@ class EnrichedReaction(DataClassJsonMixin): user_id: str = dc_field(metadata=dc_config(field_name="user_id")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) parent: str | None = dc_field(default=None, metadata=dc_config(field_name="parent")) - target_feeds: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="target_feeds") - ) - children_counts: "dict[str, int] | None" = dc_field( - default=None, metadata=dc_config(field_name="children_counts") - ) - created_at: "Time | None" = dc_field( - default=None, metadata=dc_config(field_name="created_at") - ) - data: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="data") - ) - latest_children: "dict[str, list[EnrichedReaction]] | None" = dc_field( - default=None, metadata=dc_config(field_name="latest_children") - ) - own_children: "dict[str, list[EnrichedReaction]] | None" = dc_field( - default=None, metadata=dc_config(field_name="own_children") - ) - updated_at: "Time | None" = dc_field( - default=None, metadata=dc_config(field_name="updated_at") - ) - user: "Data | None" = dc_field(default=None, metadata=dc_config(field_name="user")) - + target_feeds: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="target_feeds")) + children_counts: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="children_counts")) + created_at: 'Time | None' = dc_field(default=None, metadata=dc_config(field_name="created_at")) + data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) + latest_children: 'dict[str, list[EnrichedReaction]] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_children")) + own_children: 'dict[str, list[EnrichedReaction]] | None' = dc_field(default=None, metadata=dc_config(field_name="own_children")) + updated_at: 'Time | None' = dc_field(default=None, metadata=dc_config(field_name="updated_at")) + user: 'Data | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class EnrichmentOptions(DataClassJsonMixin): # Default: false. When true, includes fetching and enriching own_followings (follows where activity author's feeds follow current user's feeds). - enrich_own_followings: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enrich_own_followings") - ) + enrich_own_followings: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_followings")) # Controls the top-level flat 'activities' array for aggregated feeds. For new apps, defaults to false (excluded); set to true to include. For older apps, defaults to true (included) for backward compatibility; set to false to exclude. - include_flat_activities: bool | None = dc_field( - default=None, metadata=dc_config(field_name="include_flat_activities") - ) + include_flat_activities: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_flat_activities")) # Default: false. When true, includes score_vars in activity responses containing variable values used at ranking time. - include_score_vars: bool | None = dc_field( - default=None, metadata=dc_config(field_name="include_score_vars") - ) + include_score_vars: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_score_vars")) # Default: false. When true, skips all activity enrichments. - skip_activity: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_activity") - ) + skip_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity")) # Default: false. When true, skips enriching collections on activities. - skip_activity_collections: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_activity_collections") - ) + skip_activity_collections: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_collections")) # Default: false. When true, skips enriching comments on activities. - skip_activity_comments: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_activity_comments") - ) + skip_activity_comments: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_comments")) # Default: false. When true, skips enriching current_feed on activities. Note: CurrentFeed is still computed for permission checks, but enrichment is skipped. - skip_activity_current_feed: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_activity_current_feed") - ) + skip_activity_current_feed: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_current_feed")) # Default: false. When true, skips enriching mentioned users on activities. - skip_activity_mentioned_users: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_activity_mentioned_users") - ) + skip_activity_mentioned_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_mentioned_users")) # Default: false. When true, skips enriching own bookmarks on activities. - skip_activity_own_bookmarks: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_activity_own_bookmarks") - ) + skip_activity_own_bookmarks: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_own_bookmarks")) # Default: false. When true, skips enriching parent activities. - skip_activity_parents: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_activity_parents") - ) + skip_activity_parents: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_parents")) # Default: false. When true, skips enriching poll data on activities. - skip_activity_poll: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_activity_poll") - ) + skip_activity_poll: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_poll")) # Default: false. When true, skips fetching and enriching latest and own reactions on activities. Note: If reactions are already denormalized in the database, they will still be included. - skip_activity_reactions: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_activity_reactions") - ) + skip_activity_reactions: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_reactions")) # Default: false. When true, skips refreshing image URLs on activities. - skip_activity_refresh_image_urls: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_activity_refresh_image_urls") - ) + skip_activity_refresh_image_urls: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_refresh_image_urls")) # Default: false. When true, skips all enrichments. - skip_all: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_all") - ) + skip_all: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_all")) # Default: false. When true, skips enriching user data on feed members. - skip_feed_member_user: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_feed_member_user") - ) + skip_feed_member_user: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_feed_member_user")) # Default: false. When true, skips fetching and enriching followers. Note: If followers_pagination is explicitly provided, followers will be fetched regardless of this setting. - skip_followers: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_followers") - ) + skip_followers: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_followers")) # Default: false. When true, skips fetching and enriching following. Note: If following_pagination is explicitly provided, following will be fetched regardless of this setting. - skip_following: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_following") - ) + skip_following: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_following")) # Default: false. When true, skips computing and including capabilities for feeds. - skip_own_capabilities: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_own_capabilities") - ) + skip_own_capabilities: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_own_capabilities")) # Default: false. When true, skips fetching and enriching own_follows (follows where user's feeds follow target feeds). - skip_own_follows: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_own_follows") - ) + skip_own_follows: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_own_follows")) # Default: false. When true, skips enriching pinned activities. - skip_pins: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_pins") - ) - + skip_pins: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_pins")) @dataclass class EntityCreatorResponse(DataClassJsonMixin): # Number of minor actions performed on the user ban_count: int = dc_field(metadata=dc_config(field_name="ban_count")) banned: bool = dc_field(metadata=dc_config(field_name="banned")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Number of major actions performed on the user - deleted_content_count: int = dc_field( - metadata=dc_config(field_name="deleted_content_count") - ) + deleted_content_count: int = dc_field(metadata=dc_config(field_name="deleted_content_count")) # Number of flag actions performed on the user flagged_count: int = dc_field(metadata=dc_config(field_name="flagged_count")) id: str = dc_field(metadata=dc_config(field_name="id")) @@ -11468,294 +5751,125 @@ class EntityCreatorResponse(DataClassJsonMixin): online: bool = dc_field(metadata=dc_config(field_name="online")) role: str = dc_field(metadata=dc_config(field_name="role")) shadow_banned: bool = dc_field(metadata=dc_config(field_name="shadow_banned")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - blocked_user_ids: list[str] = dc_field( - metadata=dc_config(field_name="blocked_user_ids") - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + blocked_user_ids: list[str] = dc_field(metadata=dc_config(field_name="blocked_user_ids")) teams: list[str] = dc_field(metadata=dc_config(field_name="teams")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - avg_response_time: int | None = dc_field( - default=None, metadata=dc_config(field_name="avg_response_time") - ) - ban_expires: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="ban_expires", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - bypass_moderation: bool | None = dc_field( - default=None, metadata=dc_config(field_name="bypass_moderation") - ) - deactivated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deactivated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + avg_response_time: int | None = dc_field(default=None, metadata=dc_config(field_name="avg_response_time")) + ban_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ban_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + bypass_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="bypass_moderation")) + deactivated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deactivated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) image: str | None = dc_field(default=None, metadata=dc_config(field_name="image")) - last_active: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_active", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + last_active: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_active", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - revoke_tokens_issued_before: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="revoke_tokens_issued_before", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - devices: "list[DeviceResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="devices") - ) - privacy_settings: "PrivacySettingsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="privacy_settings") - ) - push_notifications: "PushNotificationSettingsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="push_notifications") - ) - teams_role: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="teams_role") - ) - + revoke_tokens_issued_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="revoke_tokens_issued_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + devices: 'list[DeviceResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="devices")) + privacy_settings: 'PrivacySettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="privacy_settings")) + push_notifications: 'PushNotificationSettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="push_notifications")) + teams_role: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="teams_role")) @dataclass class ErrorResult(DataClassJsonMixin): description: str = dc_field(metadata=dc_config(field_name="description")) type: str = dc_field(metadata=dc_config(field_name="type")) - stacktrace: str | None = dc_field( - default=None, metadata=dc_config(field_name="stacktrace") - ) - version: str | None = dc_field( - default=None, metadata=dc_config(field_name="version") - ) - + stacktrace: str | None = dc_field(default=None, metadata=dc_config(field_name="stacktrace")) + version: str | None = dc_field(default=None, metadata=dc_config(field_name="version")) @dataclass class EscalatePayload(DataClassJsonMixin): # Additional context for the reviewer notes: str | None = dc_field(default=None, metadata=dc_config(field_name="notes")) # Priority of the escalation (low, medium, high) - priority: str | None = dc_field( - default=None, metadata=dc_config(field_name="priority") - ) + priority: str | None = dc_field(default=None, metadata=dc_config(field_name="priority")) # Reason for the escalation (from configured escalation_reasons) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - @dataclass class EscalationMetadata(DataClassJsonMixin): notes: str | None = dc_field(default=None, metadata=dc_config(field_name="notes")) - priority: str | None = dc_field( - default=None, metadata=dc_config(field_name="priority") - ) + priority: str | None = dc_field(default=None, metadata=dc_config(field_name="priority")) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - @dataclass class EventHook(DataClassJsonMixin): - created_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - hook_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="hook_type") - ) + created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + hook_type: str | None = dc_field(default=None, metadata=dc_config(field_name="hook_type")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) - product: str | None = dc_field( - default=None, metadata=dc_config(field_name="product") - ) - should_send_custom_events: bool | None = dc_field( - default=None, metadata=dc_config(field_name="should_send_custom_events") - ) - sns_auth_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="sns_auth_type") - ) - sns_event_based_message_group_id_enabled: bool | None = dc_field( - default=None, - metadata=dc_config(field_name="sns_event_based_message_group_id_enabled"), - ) - sns_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="sns_key") - ) - sns_region: str | None = dc_field( - default=None, metadata=dc_config(field_name="sns_region") - ) - sns_role_arn: str | None = dc_field( - default=None, metadata=dc_config(field_name="sns_role_arn") - ) - sns_secret: str | None = dc_field( - default=None, metadata=dc_config(field_name="sns_secret") - ) - sns_topic_arn: str | None = dc_field( - default=None, metadata=dc_config(field_name="sns_topic_arn") - ) - sqs_auth_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="sqs_auth_type") - ) - sqs_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="sqs_key") - ) - sqs_queue_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="sqs_queue_url") - ) - sqs_region: str | None = dc_field( - default=None, metadata=dc_config(field_name="sqs_region") - ) - sqs_role_arn: str | None = dc_field( - default=None, metadata=dc_config(field_name="sqs_role_arn") - ) - sqs_secret: str | None = dc_field( - default=None, metadata=dc_config(field_name="sqs_secret") - ) - timeout_ms: int | None = dc_field( - default=None, metadata=dc_config(field_name="timeout_ms") - ) - updated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - webhook_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="webhook_url") - ) - event_types: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="event_types") - ) - callback: "AsyncModerationCallbackConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="callback") - ) - failover_config: "WebhookFailoverConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="failover_config") - ) - + product: str | None = dc_field(default=None, metadata=dc_config(field_name="product")) + should_send_custom_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="should_send_custom_events")) + sns_auth_type: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_auth_type")) + sns_event_based_message_group_id_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="sns_event_based_message_group_id_enabled")) + sns_key: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_key")) + sns_region: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_region")) + sns_role_arn: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_role_arn")) + sns_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_secret")) + sns_topic_arn: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_topic_arn")) + sqs_auth_type: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_auth_type")) + sqs_key: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_key")) + sqs_queue_url: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_queue_url")) + sqs_region: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_region")) + sqs_role_arn: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_role_arn")) + sqs_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_secret")) + timeout_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="timeout_ms")) + updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + webhook_url: str | None = dc_field(default=None, metadata=dc_config(field_name="webhook_url")) + event_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="event_types")) + callback: 'AsyncModerationCallbackConfig | None' = dc_field(default=None, metadata=dc_config(field_name="callback")) + failover_config: 'WebhookFailoverConfig | None' = dc_field(default=None, metadata=dc_config(field_name="failover_config")) @dataclass class EventNotificationSettings(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - apns: "APNS" = dc_field(metadata=dc_config(field_name="apns")) - fcm: "FCM" = dc_field(metadata=dc_config(field_name="fcm")) - + apns: 'APNS' = dc_field(metadata=dc_config(field_name="apns")) + fcm: 'FCM' = dc_field(metadata=dc_config(field_name="fcm")) @dataclass class EventNotificationSettingsRequest(DataClassJsonMixin): - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - apns: "APNSPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="apns") - ) - fcm: "FCMPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="fcm") - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + apns: 'APNSPayload | None' = dc_field(default=None, metadata=dc_config(field_name="apns")) + fcm: 'FCMPayload | None' = dc_field(default=None, metadata=dc_config(field_name="fcm")) @dataclass class EventNotificationSettingsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - apns: "APNSPayload" = dc_field(metadata=dc_config(field_name="apns")) - fcm: "FCMPayload" = dc_field(metadata=dc_config(field_name="fcm")) - + apns: 'APNSPayload' = dc_field(metadata=dc_config(field_name="apns")) + fcm: 'FCMPayload' = dc_field(metadata=dc_config(field_name="fcm")) @dataclass class EventRequest(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class EventResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents an BaseEvent that happened in Stream Chat - event: "WSEvent" = dc_field(metadata=dc_config(field_name="event")) - + event: 'WSEvent' = dc_field(metadata=dc_config(field_name="event")) @dataclass class ExportChannelsRequest(DataClassJsonMixin): # Export options for channels - channels: "list[ChannelExport]" = dc_field( - metadata=dc_config(field_name="channels") - ) + channels: 'list[ChannelExport]' = dc_field(metadata=dc_config(field_name="channels")) # Set if deleted message text should be cleared - clear_deleted_message_text: bool | None = dc_field( - default=None, metadata=dc_config(field_name="clear_deleted_message_text") - ) - export_users: bool | None = dc_field( - default=None, metadata=dc_config(field_name="export_users") - ) + clear_deleted_message_text: bool | None = dc_field(default=None, metadata=dc_config(field_name="clear_deleted_message_text")) + export_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="export_users")) # Output format: 'json' (default) or 'csv'. csv requires version=v2 and is incompatible with export_users format: str | None = dc_field(default=None, metadata=dc_config(field_name="format")) # Set if you want to include deleted channels - include_soft_deleted_channels: bool | None = dc_field( - default=None, metadata=dc_config(field_name="include_soft_deleted_channels") - ) + include_soft_deleted_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_soft_deleted_channels")) # Set if you want to include truncated messages - include_truncated_messages: bool | None = dc_field( - default=None, metadata=dc_config(field_name="include_truncated_messages") - ) + include_truncated_messages: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_truncated_messages")) # Export version - version: str | None = dc_field( - default=None, metadata=dc_config(field_name="version") - ) + version: str | None = dc_field(default=None, metadata=dc_config(field_name="version")) # For csv format: subset of message columns to include (defaults to a standard set) - include_fields: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="include_fields") - ) - + include_fields: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="include_fields")) @dataclass class ExportChannelsResponse(DataClassJsonMixin): @@ -11764,49 +5878,37 @@ class ExportChannelsResponse(DataClassJsonMixin): # ID of the task to export channels task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - @dataclass class ExportFeedUserDataRequest(DataClassJsonMixin): pass - @dataclass class ExportFeedUserDataResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # The task ID for the export task task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - @dataclass class ExportUserResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of exported messages - messages: "list[MessageResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="messages") - ) + messages: 'list[MessageResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="messages")) # List of exported reactions - reactions: "list[ReactionResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="reactions") - ) + reactions: 'list[ReactionResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="reactions")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ExportUsersRequest(DataClassJsonMixin): user_ids: list[str] = dc_field(metadata=dc_config(field_name="user_ids")) - @dataclass class ExportUsersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - @dataclass class ExternalStorageResponse(DataClassJsonMixin): bucket: str = dc_field(metadata=dc_config(field_name="bucket")) @@ -11814,602 +5916,256 @@ class ExternalStorageResponse(DataClassJsonMixin): path: str = dc_field(metadata=dc_config(field_name="path")) type: str = dc_field(metadata=dc_config(field_name="type")) - @dataclass class FCM(DataClassJsonMixin): - data: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="data") - ) - + data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) @dataclass class FCMPayload(DataClassJsonMixin): - data: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="data") - ) - + data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) @dataclass class FailedChannelUpdates(DataClassJsonMixin): reason: str = dc_field(metadata=dc_config(field_name="reason")) cids: list[str] = dc_field(metadata=dc_config(field_name="cids")) - @dataclass class FeedCreatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) - members: "list[FeedMemberResponse]" = dc_field( - metadata=dc_config(field_name="members") - ) + members: 'list[FeedMemberResponse]' = dc_field(metadata=dc_config(field_name="members")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - feed: "FeedResponse" = dc_field(metadata=dc_config(field_name="feed")) - user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) + feed: 'FeedResponse' = dc_field(metadata=dc_config(field_name="feed")) + user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "feeds.feed.created" in this case - type: str = dc_field( - default="feeds.feed.created", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="feeds.feed.created", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class FeedDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.feed.deleted" in this case - type: str = dc_field( - default="feeds.feed.deleted", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.feed.deleted", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class FeedGroup(DataClassJsonMixin): - aggregation_version: int = dc_field( - metadata=dc_config(field_name="aggregation_version") - ) + aggregation_version: int = dc_field(metadata=dc_config(field_name="aggregation_version")) app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - default_visibility: str = dc_field( - metadata=dc_config(field_name="default_visibility") - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + default_follower_role: str = dc_field(metadata=dc_config(field_name="default_follower_role")) + default_visibility: str = dc_field(metadata=dc_config(field_name="default_visibility")) group_id: str = dc_field(metadata=dc_config(field_name="group_id")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - activity_processors: "list[ActivityProcessorConfig]" = dc_field( - metadata=dc_config(field_name="activity_processors") - ) - activity_selectors: "list[ActivitySelectorConfig]" = dc_field( - metadata=dc_config(field_name="activity_selectors") - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + activity_processors: 'list[ActivityProcessorConfig]' = dc_field(metadata=dc_config(field_name="activity_processors")) + activity_selectors: 'list[ActivitySelectorConfig]' = dc_field(metadata=dc_config(field_name="activity_selectors")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - last_feed_get_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_feed_get_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - activity_filter: "ActivityFilterConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_filter") - ) - aggregation: "AggregationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="aggregation") - ) - notification: "NotificationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="notification") - ) - push_notification: "PushNotificationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="push_notification") - ) - ranking: "RankingConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ranking") - ) - stories: "StoriesConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="stories") - ) - + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_feed_get_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_feed_get_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + activity_filter: 'ActivityFilterConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_filter")) + aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) + notification: 'NotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="notification")) + push_notification: 'PushNotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="push_notification")) + ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) + stories: 'StoriesConfig | None' = dc_field(default=None, metadata=dc_config(field_name="stories")) @dataclass class FeedGroupChangedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.feed_group.changed" in this case - type: str = dc_field( - default="feeds.feed_group.changed", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - feed_group: "FeedGroup | None" = dc_field( - default=None, metadata=dc_config(field_name="feed_group") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.feed_group.changed", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + feed_group: 'FeedGroup | None' = dc_field(default=None, metadata=dc_config(field_name="feed_group")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class FeedGroupDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) # The ID of the feed group that was deleted group_id: str = dc_field(metadata=dc_config(field_name="group_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.feed_group.deleted" in this case - type: str = dc_field( - default="feeds.feed_group.deleted", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="feeds.feed_group.deleted", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class FeedGroupResponse(DataClassJsonMixin): # When the feed group was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Identifier within the group id: str = dc_field(metadata=dc_config(field_name="id")) # When the feed group was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + # Role new followers of feeds in this group are given. Either a built-in (feed_follower, feed_member_viewer) or any role your app has defined. Empty means feed_follower. Applied when the follow is accepted, so a follow that starts pending picks it up on approval + default_follower_role: str | None = dc_field(default=None, metadata=dc_config(field_name="default_follower_role")) # Default visibility for activities. One of: public, visible, followers, members, private - default_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="default_visibility") - ) - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + default_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="default_visibility")) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Configuration for activity processors - activity_processors: "list[ActivityProcessorConfig] | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_processors") - ) + activity_processors: 'list[ActivityProcessorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_processors")) # Configuration for activity selectors - activity_selectors: "list[ActivitySelectorConfigResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_selectors") - ) - activity_filter: "ActivityFilterConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_filter") - ) - aggregation: "AggregationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="aggregation") - ) + activity_selectors: 'list[ActivitySelectorConfigResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_selectors")) + activity_filter: 'ActivityFilterConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_filter")) + activity_processing: 'ActivityProcessingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_processing")) + aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) # Custom data for the feed group - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - notification: "NotificationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="notification") - ) - push_notification: "PushNotificationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="push_notification") - ) - ranking: "RankingConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ranking") - ) - stories: "StoriesConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="stories") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + notification: 'NotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="notification")) + push_notification: 'PushNotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="push_notification")) + ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) + stories: 'StoriesConfig | None' = dc_field(default=None, metadata=dc_config(field_name="stories")) @dataclass class FeedGroupRestoredEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) # The ID of the feed group that was restored group_id: str = dc_field(metadata=dc_config(field_name="group_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.feed_group.restored" in this case - type: str = dc_field( - default="feeds.feed_group.restored", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="feeds.feed_group.restored", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class FeedInput(DataClassJsonMixin): - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="visibility") - ) - filter_tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_tags") - ) - members: "list[FeedMemberRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="members") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - location: "Location | None" = dc_field( - default=None, metadata=dc_config(field_name="location") - ) - + visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility")) + filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) + members: 'list[FeedMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) @dataclass class FeedMemberAddedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - member: "FeedMemberResponse" = dc_field(metadata=dc_config(field_name="member")) + member: 'FeedMemberResponse' = dc_field(metadata=dc_config(field_name="member")) # The type of event: "feeds.feed_member.added" in this case - type: str = dc_field( - default="feeds.feed_member.added", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.feed_member.added", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class FeedMemberRemovedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) member_id: str = dc_field(metadata=dc_config(field_name="member_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.feed_member.removed" in this case - type: str = dc_field( - default="feeds.feed_member.removed", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.feed_member.removed", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class FeedMemberRequest(DataClassJsonMixin): # ID of the user to add as a member user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # Whether this is an invite to become a member - invite: bool | None = dc_field( - default=None, metadata=dc_config(field_name="invite") - ) + invite: bool | None = dc_field(default=None, metadata=dc_config(field_name="invite")) # ID of the membership level to assign to the member - membership_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="membership_level") - ) + membership_level: str | None = dc_field(default=None, metadata=dc_config(field_name="membership_level")) # Role of the member in the feed role: str | None = dc_field(default=None, metadata=dc_config(field_name="role")) # Custom data for the member - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class FeedMemberResponse(DataClassJsonMixin): # When the membership was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Role of the member in the feed role: str = dc_field(metadata=dc_config(field_name="role")) # Status of the membership. One of: member, pending, rejected status: str = dc_field(metadata=dc_config(field_name="status")) # When the membership was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # When the invite was accepted - invite_accepted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="invite_accepted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + invite_accepted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="invite_accepted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # When the invite was rejected - invite_rejected_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="invite_rejected_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + invite_rejected_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="invite_rejected_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Custom data for the membership - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - membership_level: "MembershipLevelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="membership_level") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + membership_level: 'MembershipLevelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="membership_level")) @dataclass class FeedMemberUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - member: "FeedMemberResponse" = dc_field(metadata=dc_config(field_name="member")) + member: 'FeedMemberResponse' = dc_field(metadata=dc_config(field_name="member")) # The type of event: "feeds.feed_member.updated" in this case - type: str = dc_field( - default="feeds.feed_member.updated", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - - -FeedOwnCapabilityType = NewType("FeedOwnCapabilityType", str) + type: str = dc_field(default="feeds.feed_member.updated", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) +FeedOwnCapabilityType = NewType('FeedOwnCapabilityType', str) class FeedOwnCapability: - ADD_ACTIVITY: Final[FeedOwnCapabilityType] = "add-activity" - ADD_ACTIVITY_BOOKMARK: Final[FeedOwnCapabilityType] = "add-activity-bookmark" - ADD_ACTIVITY_REACTION: Final[FeedOwnCapabilityType] = "add-activity-reaction" - ADD_COMMENT: Final[FeedOwnCapabilityType] = "add-comment" - ADD_COMMENT_REACTION: Final[FeedOwnCapabilityType] = "add-comment-reaction" - CREATE_FEED: Final[FeedOwnCapabilityType] = "create-feed" - DELETE_ANY_ACTIVITY: Final[FeedOwnCapabilityType] = "delete-any-activity" - DELETE_ANY_COMMENT: Final[FeedOwnCapabilityType] = "delete-any-comment" - DELETE_FEED: Final[FeedOwnCapabilityType] = "delete-feed" - DELETE_OWN_ACTIVITY: Final[FeedOwnCapabilityType] = "delete-own-activity" - DELETE_OWN_ACTIVITY_BOOKMARK: Final[FeedOwnCapabilityType] = ( - "delete-own-activity-bookmark" - ) - DELETE_OWN_ACTIVITY_REACTION: Final[FeedOwnCapabilityType] = ( - "delete-own-activity-reaction" - ) - DELETE_OWN_COMMENT: Final[FeedOwnCapabilityType] = "delete-own-comment" - DELETE_OWN_COMMENT_REACTION: Final[FeedOwnCapabilityType] = ( - "delete-own-comment-reaction" - ) - FOLLOW: Final[FeedOwnCapabilityType] = "follow" - PIN_ACTIVITY: Final[FeedOwnCapabilityType] = "pin-activity" - QUERY_FEED_MEMBERS: Final[FeedOwnCapabilityType] = "query-feed-members" - QUERY_FOLLOWS: Final[FeedOwnCapabilityType] = "query-follows" - READ_ACTIVITIES: Final[FeedOwnCapabilityType] = "read-activities" - READ_FEED: Final[FeedOwnCapabilityType] = "read-feed" - UNFOLLOW: Final[FeedOwnCapabilityType] = "unfollow" - UPDATE_ANY_ACTIVITY: Final[FeedOwnCapabilityType] = "update-any-activity" - UPDATE_ANY_COMMENT: Final[FeedOwnCapabilityType] = "update-any-comment" - UPDATE_FEED: Final[FeedOwnCapabilityType] = "update-feed" - UPDATE_FEED_FOLLOWERS: Final[FeedOwnCapabilityType] = "update-feed-followers" - UPDATE_FEED_MEMBERS: Final[FeedOwnCapabilityType] = "update-feed-members" - UPDATE_OWN_ACTIVITY: Final[FeedOwnCapabilityType] = "update-own-activity" - UPDATE_OWN_ACTIVITY_BOOKMARK: Final[FeedOwnCapabilityType] = ( - "update-own-activity-bookmark" - ) - UPDATE_OWN_COMMENT: Final[FeedOwnCapabilityType] = "update-own-comment" - + ADD_ACTIVITY: Final[FeedOwnCapabilityType] = 'add-activity' + ADD_ACTIVITY_BOOKMARK: Final[FeedOwnCapabilityType] = 'add-activity-bookmark' + ADD_ACTIVITY_REACTION: Final[FeedOwnCapabilityType] = 'add-activity-reaction' + ADD_COMMENT: Final[FeedOwnCapabilityType] = 'add-comment' + ADD_COMMENT_REACTION: Final[FeedOwnCapabilityType] = 'add-comment-reaction' + CREATE_FEED: Final[FeedOwnCapabilityType] = 'create-feed' + DELETE_ANY_ACTIVITY: Final[FeedOwnCapabilityType] = 'delete-any-activity' + DELETE_ANY_COMMENT: Final[FeedOwnCapabilityType] = 'delete-any-comment' + DELETE_FEED: Final[FeedOwnCapabilityType] = 'delete-feed' + DELETE_OWN_ACTIVITY: Final[FeedOwnCapabilityType] = 'delete-own-activity' + DELETE_OWN_ACTIVITY_BOOKMARK: Final[FeedOwnCapabilityType] = 'delete-own-activity-bookmark' + DELETE_OWN_ACTIVITY_REACTION: Final[FeedOwnCapabilityType] = 'delete-own-activity-reaction' + DELETE_OWN_COMMENT: Final[FeedOwnCapabilityType] = 'delete-own-comment' + DELETE_OWN_COMMENT_REACTION: Final[FeedOwnCapabilityType] = 'delete-own-comment-reaction' + FOLLOW: Final[FeedOwnCapabilityType] = 'follow' + PIN_ACTIVITY: Final[FeedOwnCapabilityType] = 'pin-activity' + QUERY_FEED_MEMBERS: Final[FeedOwnCapabilityType] = 'query-feed-members' + QUERY_FOLLOWS: Final[FeedOwnCapabilityType] = 'query-follows' + READ_ACTIVITIES: Final[FeedOwnCapabilityType] = 'read-activities' + READ_FEED: Final[FeedOwnCapabilityType] = 'read-feed' + UNFOLLOW: Final[FeedOwnCapabilityType] = 'unfollow' + UPDATE_ANY_ACTIVITY: Final[FeedOwnCapabilityType] = 'update-any-activity' + UPDATE_ANY_COMMENT: Final[FeedOwnCapabilityType] = 'update-any-comment' + UPDATE_FEED: Final[FeedOwnCapabilityType] = 'update-feed' + UPDATE_FEED_FOLLOWERS: Final[FeedOwnCapabilityType] = 'update-feed-followers' + UPDATE_FEED_MEMBERS: Final[FeedOwnCapabilityType] = 'update-feed-members' + UPDATE_OWN_ACTIVITY: Final[FeedOwnCapabilityType] = 'update-own-activity' + UPDATE_OWN_ACTIVITY_BOOKMARK: Final[FeedOwnCapabilityType] = 'update-own-activity-bookmark' + UPDATE_OWN_COMMENT: Final[FeedOwnCapabilityType] = 'update-own-comment' @dataclass class FeedOwnData(DataClassJsonMixin): # Capabilities the current user has for this feed - own_capabilities: "list[FeedOwnCapability] | None" = dc_field( - default=None, metadata=dc_config(field_name="own_capabilities") - ) + own_capabilities: 'list[FeedOwnCapability] | None' = dc_field(default=None, metadata=dc_config(field_name="own_capabilities")) # Follow relationships where the feed owner's feeds are following the current user's feeds (up to 5 total) - own_followings: "list[FollowResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="own_followings") - ) + own_followings: 'list[FollowResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="own_followings")) # Follow relationships where the current user's feeds are following this feed - own_follows: "list[FollowResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="own_follows") - ) - own_membership: "FeedMemberResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="own_membership") - ) - + own_follows: 'list[FollowResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="own_follows")) + own_membership: 'FeedMemberResponse | None' = dc_field(default=None, metadata=dc_config(field_name="own_membership")) @dataclass class FeedRequest(DataClassJsonMixin): @@ -12418,48 +6174,26 @@ class FeedRequest(DataClassJsonMixin): # ID of the feed feed_id: str = dc_field(metadata=dc_config(field_name="feed_id")) # ID of the feed creator - created_by_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="created_by_id") - ) + created_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_id")) # Description of the feed - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) # Name of the feed name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # Visibility setting for the feed. One of: public, visible, followers, members, private - visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="visibility") - ) + visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility")) # Tags used for filtering feeds - filter_tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_tags") - ) + filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) # Initial members for the feed - members: "list[FeedMemberRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="members") - ) + members: 'list[FeedMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) # Custom data for the feed - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - location: "Location | None" = dc_field( - default=None, metadata=dc_config(field_name="location") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) @dataclass class FeedResponse(DataClassJsonMixin): activity_count: int = dc_field(metadata=dc_config(field_name="activity_count")) # When the feed was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Description of the feed description: str = dc_field(metadata=dc_config(field_name="description")) # Fully qualified feed ID (group_id:id) @@ -12479,70 +6213,31 @@ class FeedResponse(DataClassJsonMixin): # Number of pinned activities in this feed pin_count: int = dc_field(metadata=dc_config(field_name="pin_count")) # When the feed was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # User response object - created_by: "UserResponse" = dc_field(metadata=dc_config(field_name="created_by")) + created_by: 'UserResponse' = dc_field(metadata=dc_config(field_name="created_by")) # When the feed was deleted - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Visibility setting for the feed - visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="visibility") - ) + visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility")) # Tags used for filtering feeds - filter_tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_tags") - ) + filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) # Capabilities the current user has for this feed - own_capabilities: "list[FeedOwnCapability] | None" = dc_field( - default=None, metadata=dc_config(field_name="own_capabilities") - ) + own_capabilities: 'list[FeedOwnCapability] | None' = dc_field(default=None, metadata=dc_config(field_name="own_capabilities")) # Follow relationships where the feed owner’s feeds are following the current user's feeds - own_followings: "list[FollowResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="own_followings") - ) + own_followings: 'list[FollowResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="own_followings")) # Follow relationships where the current user's feeds are following this feed - own_follows: "list[FollowResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="own_follows") - ) + own_follows: 'list[FollowResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="own_follows")) # Custom data for the feed - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - location: "Location | None" = dc_field( - default=None, metadata=dc_config(field_name="location") - ) - own_membership: "FeedMemberResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="own_membership") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) + own_membership: 'FeedMemberResponse | None' = dc_field(default=None, metadata=dc_config(field_name="own_membership")) @dataclass class FeedSuggestionResponse(DataClassJsonMixin): activity_count: int = dc_field(metadata=dc_config(field_name="activity_count")) # When the feed was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Description of the feed description: str = dc_field(metadata=dc_config(field_name="description")) # Fully qualified feed ID (group_id:id) @@ -12562,209 +6257,91 @@ class FeedSuggestionResponse(DataClassJsonMixin): # Number of pinned activities in this feed pin_count: int = dc_field(metadata=dc_config(field_name="pin_count")) # When the feed was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # User response object - created_by: "UserResponse" = dc_field(metadata=dc_config(field_name="created_by")) + created_by: 'UserResponse' = dc_field(metadata=dc_config(field_name="created_by")) # When the feed was deleted - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - recommendation_score: float | None = dc_field( - default=None, metadata=dc_config(field_name="recommendation_score") - ) + recommendation_score: float | None = dc_field(default=None, metadata=dc_config(field_name="recommendation_score")) # Visibility setting for the feed - visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="visibility") - ) + visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility")) # Tags used for filtering feeds - filter_tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_tags") - ) + filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) # Capabilities the current user has for this feed - own_capabilities: "list[FeedOwnCapability] | None" = dc_field( - default=None, metadata=dc_config(field_name="own_capabilities") - ) + own_capabilities: 'list[FeedOwnCapability] | None' = dc_field(default=None, metadata=dc_config(field_name="own_capabilities")) # Follow relationships where the feed owner’s feeds are following the current user's feeds - own_followings: "list[FollowResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="own_followings") - ) + own_followings: 'list[FollowResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="own_followings")) # Follow relationships where the current user's feeds are following this feed - own_follows: "list[FollowResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="own_follows") - ) - algorithm_scores: "dict[str, float] | None" = dc_field( - default=None, metadata=dc_config(field_name="algorithm_scores") - ) + own_follows: 'list[FollowResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="own_follows")) + algorithm_scores: 'dict[str, float] | None' = dc_field(default=None, metadata=dc_config(field_name="algorithm_scores")) # Custom data for the feed - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - location: "Location | None" = dc_field( - default=None, metadata=dc_config(field_name="location") - ) - own_membership: "FeedMemberResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="own_membership") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) + own_membership: 'FeedMemberResponse | None' = dc_field(default=None, metadata=dc_config(field_name="own_membership")) @dataclass class FeedUpdatedEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - feed: "FeedResponse" = dc_field(metadata=dc_config(field_name="feed")) + feed: 'FeedResponse' = dc_field(metadata=dc_config(field_name="feed")) # The type of event: "feeds.feed.updated" in this case - type: str = dc_field( - default="feeds.feed.updated", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + type: str = dc_field(default="feeds.feed.updated", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class FeedViewResponse(DataClassJsonMixin): # Unique identifier for the custom feed view id: str = dc_field(metadata=dc_config(field_name="id")) # When the feed view was last used - last_used_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_used_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + last_used_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_used_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Configured activity selectors - activity_selectors: "list[ActivitySelectorConfigResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_selectors") - ) - aggregation: "AggregationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="aggregation") - ) - ranking: "RankingConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ranking") - ) - + activity_selectors: 'list[ActivitySelectorConfigResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_selectors")) + aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) + ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) @dataclass class FeedVisibilityResponse(DataClassJsonMixin): # Name of the feed visibility level name: str = dc_field(metadata=dc_config(field_name="name")) # List of permission policies - permissions: "list[Permission]" = dc_field( - metadata=dc_config(field_name="permissions") - ) + permissions: 'list[Permission]' = dc_field(metadata=dc_config(field_name="permissions")) # Permission grants for each role - grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) - + grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) @dataclass class FeedsActivityLocation(DataClassJsonMixin): lat: float = dc_field(metadata=dc_config(field_name="lat")) lng: float = dc_field(metadata=dc_config(field_name="lng")) - @dataclass class FeedsBookmarkResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) object_id: str = dc_field(metadata=dc_config(field_name="object_id")) object_type: str = dc_field(metadata=dc_config(field_name="object_type")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - activity_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="activity_id") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + activity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="activity_id")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class FeedsEnrichedCollectionResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) id: str = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) status: str = dc_field(metadata=dc_config(field_name="status")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - @dataclass class FeedsFeedResponse(DataClassJsonMixin): activity_count: int = dc_field(metadata=dc_config(field_name="activity_count")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) description: str = dc_field(metadata=dc_config(field_name="description")) feed: str = dc_field(metadata=dc_config(field_name="feed")) follower_count: int = dc_field(metadata=dc_config(field_name="follower_count")) @@ -12774,81 +6351,41 @@ class FeedsFeedResponse(DataClassJsonMixin): member_count: int = dc_field(metadata=dc_config(field_name="member_count")) name: str = dc_field(metadata=dc_config(field_name="name")) pin_count: int = dc_field(metadata=dc_config(field_name="pin_count")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # User response object - created_by: "UserResponse" = dc_field(metadata=dc_config(field_name="created_by")) - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="visibility") - ) - filter_tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_tags") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - location: "FeedsActivityLocation | None" = dc_field( - default=None, metadata=dc_config(field_name="location") - ) - + created_by: 'UserResponse' = dc_field(metadata=dc_config(field_name="created_by")) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility")) + filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + location: 'FeedsActivityLocation | None' = dc_field(default=None, metadata=dc_config(field_name="location")) @dataclass class FeedsModerationTemplateConfigPayload(DataClassJsonMixin): # Map of data type names to their content types - data_types: "dict[str, str]" = dc_field(metadata=dc_config(field_name="data_types")) + data_types: 'dict[str, str]' = dc_field(metadata=dc_config(field_name="data_types")) # Key of the moderation configuration to use - config_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="config_key") - ) - + config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) @dataclass class FeedsNotificationComment(DataClassJsonMixin): comment: str = dc_field(metadata=dc_config(field_name="comment")) id: str = dc_field(metadata=dc_config(field_name="id")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) - + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) @dataclass class FeedsNotificationContext(DataClassJsonMixin): - target: "FeedsNotificationTarget | None" = dc_field( - default=None, metadata=dc_config(field_name="target") - ) - trigger: "FeedsNotificationTrigger | None" = dc_field( - default=None, metadata=dc_config(field_name="trigger") - ) - + target: 'FeedsNotificationTarget | None' = dc_field(default=None, metadata=dc_config(field_name="target")) + trigger: 'FeedsNotificationTrigger | None' = dc_field(default=None, metadata=dc_config(field_name="trigger")) @dataclass class FeedsNotificationParentActivity(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) - + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) @dataclass class FeedsNotificationTarget(DataClassJsonMixin): @@ -12856,173 +6393,78 @@ class FeedsNotificationTarget(DataClassJsonMixin): name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) - comment: "FeedsNotificationComment | None" = dc_field( - default=None, metadata=dc_config(field_name="comment") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - parent_activity: "FeedsNotificationParentActivity | None" = dc_field( - default=None, metadata=dc_config(field_name="parent_activity") - ) - + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + comment: 'FeedsNotificationComment | None' = dc_field(default=None, metadata=dc_config(field_name="comment")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + parent_activity: 'FeedsNotificationParentActivity | None' = dc_field(default=None, metadata=dc_config(field_name="parent_activity")) @dataclass class FeedsNotificationTrigger(DataClassJsonMixin): text: str = dc_field(metadata=dc_config(field_name="text")) type: str = dc_field(metadata=dc_config(field_name="type")) - comment: "FeedsNotificationComment | None" = dc_field( - default=None, metadata=dc_config(field_name="comment") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + comment: 'FeedsNotificationComment | None' = dc_field(default=None, metadata=dc_config(field_name="comment")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class FeedsPreferences(DataClassJsonMixin): # Push notification preference for comments on user's activities. One of: all, none - comment: str | None = dc_field( - default=None, metadata=dc_config(field_name="comment") - ) + comment: str | None = dc_field(default=None, metadata=dc_config(field_name="comment")) # Push notification preference for mentions in comments. One of: all, none - comment_mention: str | None = dc_field( - default=None, metadata=dc_config(field_name="comment_mention") - ) + comment_mention: str | None = dc_field(default=None, metadata=dc_config(field_name="comment_mention")) # Push notification preference for reactions on comments. One of: all, none - comment_reaction: str | None = dc_field( - default=None, metadata=dc_config(field_name="comment_reaction") - ) + comment_reaction: str | None = dc_field(default=None, metadata=dc_config(field_name="comment_reaction")) # Push notification preference for replies to comments. One of: all, none - comment_reply: str | None = dc_field( - default=None, metadata=dc_config(field_name="comment_reply") - ) + comment_reply: str | None = dc_field(default=None, metadata=dc_config(field_name="comment_reply")) # Push notification preference for new followers. One of: all, none follow: str | None = dc_field(default=None, metadata=dc_config(field_name="follow")) # Push notification preference for mentions in activities. One of: all, none - mention: str | None = dc_field( - default=None, metadata=dc_config(field_name="mention") - ) + mention: str | None = dc_field(default=None, metadata=dc_config(field_name="mention")) # Push notification preference for reactions on user's activities or comments. One of: all, none - reaction: str | None = dc_field( - default=None, metadata=dc_config(field_name="reaction") - ) + reaction: str | None = dc_field(default=None, metadata=dc_config(field_name="reaction")) # Push notification preferences for custom activity types. Map of activity type to preference (all or none) - custom_activity_types: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="custom_activity_types") - ) - + custom_activity_types: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="custom_activity_types")) @dataclass class FeedsPreferencesResponse(DataClassJsonMixin): - comment: str | None = dc_field( - default=None, metadata=dc_config(field_name="comment") - ) - comment_mention: str | None = dc_field( - default=None, metadata=dc_config(field_name="comment_mention") - ) - comment_reaction: str | None = dc_field( - default=None, metadata=dc_config(field_name="comment_reaction") - ) - comment_reply: str | None = dc_field( - default=None, metadata=dc_config(field_name="comment_reply") - ) + comment: str | None = dc_field(default=None, metadata=dc_config(field_name="comment")) + comment_mention: str | None = dc_field(default=None, metadata=dc_config(field_name="comment_mention")) + comment_reaction: str | None = dc_field(default=None, metadata=dc_config(field_name="comment_reaction")) + comment_reply: str | None = dc_field(default=None, metadata=dc_config(field_name="comment_reply")) follow: str | None = dc_field(default=None, metadata=dc_config(field_name="follow")) - mention: str | None = dc_field( - default=None, metadata=dc_config(field_name="mention") - ) - reaction: str | None = dc_field( - default=None, metadata=dc_config(field_name="reaction") - ) - custom_activity_types: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="custom_activity_types") - ) - + mention: str | None = dc_field(default=None, metadata=dc_config(field_name="mention")) + reaction: str | None = dc_field(default=None, metadata=dc_config(field_name="reaction")) + custom_activity_types: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="custom_activity_types")) @dataclass class FeedsReactionGroupResponse(DataClassJsonMixin): count: int = dc_field(metadata=dc_config(field_name="count")) - first_reaction_at: datetime = dc_field( - metadata=dc_config( - field_name="first_reaction_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - last_reaction_at: datetime = dc_field( - metadata=dc_config( - field_name="last_reaction_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - + first_reaction_at: datetime = dc_field(metadata=dc_config(field_name="first_reaction_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_reaction_at: datetime = dc_field(metadata=dc_config(field_name="last_reaction_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class FeedsReactionResponse(DataClassJsonMixin): activity_id: str = dc_field(metadata=dc_config(field_name="activity_id")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - comment_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="comment_id") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + comment_id: str | None = dc_field(default=None, metadata=dc_config(field_name="comment_id")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class FeedsShareResponse(DataClassJsonMixin): activity_id: str = dc_field(metadata=dc_config(field_name="activity_id")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) @dataclass class FeedsV3ActivityResponse(DataClassJsonMixin): bookmark_count: int = dc_field(metadata=dc_config(field_name="bookmark_count")) comment_count: int = dc_field(metadata=dc_config(field_name="comment_count")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) hidden: bool = dc_field(metadata=dc_config(field_name="hidden")) id: str = dc_field(metadata=dc_config(field_name="id")) popularity: int = dc_field(metadata=dc_config(field_name="popularity")) @@ -13032,146 +6474,51 @@ class FeedsV3ActivityResponse(DataClassJsonMixin): score: float = dc_field(metadata=dc_config(field_name="score")) share_count: int = dc_field(metadata=dc_config(field_name="share_count")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) visibility: str = dc_field(metadata=dc_config(field_name="visibility")) - attachments: "list[Attachment]" = dc_field( - metadata=dc_config(field_name="attachments") - ) - comments: "list[FeedsV3CommentResponse]" = dc_field( - metadata=dc_config(field_name="comments") - ) + attachments: 'list[Attachment]' = dc_field(metadata=dc_config(field_name="attachments")) + comments: 'list[FeedsV3CommentResponse]' = dc_field(metadata=dc_config(field_name="comments")) feeds: list[str] = dc_field(metadata=dc_config(field_name="feeds")) filter_tags: list[str] = dc_field(metadata=dc_config(field_name="filter_tags")) interest_tags: list[str] = dc_field(metadata=dc_config(field_name="interest_tags")) - latest_reactions: "list[FeedsReactionResponse]" = dc_field( - metadata=dc_config(field_name="latest_reactions") - ) - mentioned_users: "list[UserResponse]" = dc_field( - metadata=dc_config(field_name="mentioned_users") - ) - own_bookmarks: "list[FeedsBookmarkResponse]" = dc_field( - metadata=dc_config(field_name="own_bookmarks") - ) - own_reactions: "list[FeedsReactionResponse]" = dc_field( - metadata=dc_config(field_name="own_reactions") - ) - collections: "dict[str, FeedsEnrichedCollectionResponse]" = dc_field( - metadata=dc_config(field_name="collections") - ) - custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction_groups: "dict[str, FeedsReactionGroupResponse]" = dc_field( - metadata=dc_config(field_name="reaction_groups") - ) - search_data: dict[str, object] = dc_field( - metadata=dc_config(field_name="search_data") - ) + latest_reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="latest_reactions")) + mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) + own_bookmarks: 'list[FeedsBookmarkResponse]' = dc_field(metadata=dc_config(field_name="own_bookmarks")) + own_reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) + collections: 'dict[str, FeedsEnrichedCollectionResponse]' = dc_field(metadata=dc_config(field_name="collections")) + custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + reaction_groups: 'dict[str, FeedsReactionGroupResponse]' = dc_field(metadata=dc_config(field_name="reaction_groups")) + search_data: dict[str, object] = dc_field(metadata=dc_config(field_name="search_data")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - edited_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="edited_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - expires_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="expires_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - friend_reaction_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="friend_reaction_count") - ) - is_read: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_read") - ) - is_seen: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_seen") - ) - is_watched: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_watched") - ) - moderation_action: str | None = dc_field( - default=None, metadata=dc_config(field_name="moderation_action") - ) - selector_source: str | None = dc_field( - default=None, metadata=dc_config(field_name="selector_source") - ) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + edited_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="edited_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + expires_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expires_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + friend_reaction_count: int | None = dc_field(default=None, metadata=dc_config(field_name="friend_reaction_count")) + is_read: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_read")) + is_seen: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_seen")) + is_watched: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_watched")) + moderation_action: str | None = dc_field(default=None, metadata=dc_config(field_name="moderation_action")) + selector_source: str | None = dc_field(default=None, metadata=dc_config(field_name="selector_source")) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) - visibility_tag: str | None = dc_field( - default=None, metadata=dc_config(field_name="visibility_tag") - ) - friend_reactions: "list[FeedsReactionResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="friend_reactions") - ) - latest_shares: "list[FeedsShareResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="latest_shares") - ) - current_feed: "FeedsFeedResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="current_feed") - ) - i18n: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="i18n") - ) - location: "FeedsActivityLocation | None" = dc_field( - default=None, metadata=dc_config(field_name="location") - ) - metrics: "dict[str, int] | None" = dc_field( - default=None, metadata=dc_config(field_name="metrics") - ) - moderation: "ModerationV2Response | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation") - ) - notification_context: "FeedsNotificationContext | None" = dc_field( - default=None, metadata=dc_config(field_name="notification_context") - ) - parent: "FeedsV3ActivityResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="parent") - ) - poll: "PollResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="poll") - ) - score_vars: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="score_vars") - ) - + visibility_tag: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility_tag")) + friend_reactions: 'list[FeedsReactionResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="friend_reactions")) + latest_shares: 'list[FeedsShareResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_shares")) + current_feed: 'FeedsFeedResponse | None' = dc_field(default=None, metadata=dc_config(field_name="current_feed")) + i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) + location: 'FeedsActivityLocation | None' = dc_field(default=None, metadata=dc_config(field_name="location")) + metrics: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="metrics")) + moderation: 'ModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) + notification_context: 'FeedsNotificationContext | None' = dc_field(default=None, metadata=dc_config(field_name="notification_context")) + parent: 'FeedsV3ActivityResponse | None' = dc_field(default=None, metadata=dc_config(field_name="parent")) + poll: 'PollResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll")) + score_vars: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="score_vars")) @dataclass class FeedsV3CommentResponse(DataClassJsonMixin): bookmark_count: int = dc_field(metadata=dc_config(field_name="bookmark_count")) - confidence_score: float = dc_field( - metadata=dc_config(field_name="confidence_score") - ) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + confidence_score: float = dc_field(metadata=dc_config(field_name="confidence_score")) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) downvote_count: int = dc_field(metadata=dc_config(field_name="downvote_count")) id: str = dc_field(metadata=dc_config(field_name="id")) object_id: str = dc_field(metadata=dc_config(field_name="object_id")) @@ -13180,67 +6527,23 @@ class FeedsV3CommentResponse(DataClassJsonMixin): reply_count: int = dc_field(metadata=dc_config(field_name="reply_count")) score: int = dc_field(metadata=dc_config(field_name="score")) status: str = dc_field(metadata=dc_config(field_name="status")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) upvote_count: int = dc_field(metadata=dc_config(field_name="upvote_count")) - mentioned_users: "list[UserResponse]" = dc_field( - metadata=dc_config(field_name="mentioned_users") - ) - own_reactions: "list[FeedsReactionResponse]" = dc_field( - metadata=dc_config(field_name="own_reactions") - ) + mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) + own_reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - controversy_score: float | None = dc_field( - default=None, metadata=dc_config(field_name="controversy_score") - ) - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - edited_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="edited_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + controversy_score: float | None = dc_field(default=None, metadata=dc_config(field_name="controversy_score")) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + edited_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="edited_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) - latest_reactions: "list[FeedsReactionResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="latest_reactions") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - i18n: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="i18n") - ) - moderation: "ModerationV2Response | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation") - ) - reaction_groups: "dict[str, FeedsReactionGroupResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="reaction_groups") - ) - + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + latest_reactions: 'list[FeedsReactionResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_reactions")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) + moderation: 'ModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) + reaction_groups: 'dict[str, FeedsReactionGroupResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="reaction_groups")) @dataclass class Field(DataClassJsonMixin): @@ -13248,32 +6551,19 @@ class Field(DataClassJsonMixin): title: str = dc_field(metadata=dc_config(field_name="title")) value: str = dc_field(metadata=dc_config(field_name="value")) - @dataclass class FileUploadConfig(DataClassJsonMixin): size_limit: int = dc_field(metadata=dc_config(field_name="size_limit")) - allowed_file_extensions: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="allowed_file_extensions") - ) - allowed_mime_types: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="allowed_mime_types") - ) - blocked_file_extensions: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="blocked_file_extensions") - ) - blocked_mime_types: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="blocked_mime_types") - ) - + allowed_file_extensions: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_file_extensions")) + allowed_mime_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_mime_types")) + blocked_file_extensions: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="blocked_file_extensions")) + blocked_mime_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="blocked_mime_types")) @dataclass class FileUploadRequest(DataClassJsonMixin): # file field file: str | None = dc_field(default=None, metadata=dc_config(field_name="file")) - user: "OnlyUserID | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'OnlyUserID | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class FileUploadResponse(DataClassJsonMixin): @@ -13282,118 +6572,61 @@ class FileUploadResponse(DataClassJsonMixin): # URL to the uploaded asset. Should be used to put to `asset_url` attachment field file: str | None = dc_field(default=None, metadata=dc_config(field_name="file")) # URL of the file thumbnail for supported file formats. Should be put to `thumb_url` attachment field - thumb_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="thumb_url") - ) - + thumb_url: str | None = dc_field(default=None, metadata=dc_config(field_name="thumb_url")) @dataclass class FilterConfigResponse(DataClassJsonMixin): # LLM moderation labels available as filter values llm_labels: list[str] = dc_field(metadata=dc_config(field_name="llm_labels")) # AI image moderation labels available as filter values. Reflects the app's effective image taxonomy: custom Bodyguard taxonomy when enabled, otherwise the standard L1 label set. - ai_image_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="ai_image_labels") - ) + ai_image_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="ai_image_labels")) # AI text moderation labels available as filter values - ai_text_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="ai_text_labels") - ) + ai_text_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="ai_text_labels")) # Moderation config keys present in the queue, available as filter values - config_keys: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="config_keys") - ) + config_keys: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="config_keys")) # The moderation_payload.custom keys the app has configured as review-queue filter chips (via moderation_dashboard_preferences.filterable_custom_keys). Discovery hint for the dashboard only — the filter accepts any custom key regardless of this list. - filterable_custom_keys: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="filterable_custom_keys") - ) + filterable_custom_keys: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filterable_custom_keys")) # AI image moderation labels available as filter values, as a map of L1 label to its L2 sub-labels. Reflects the app's effective image taxonomy: custom Bodyguard taxonomy when enabled, otherwise the standard catalogue of the org's enabled image providers. - ai_image_taxonomy: "dict[str, list[str]] | None" = dc_field( - default=None, metadata=dc_config(field_name="ai_image_taxonomy") - ) - + ai_image_taxonomy: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="ai_image_taxonomy")) @dataclass class FirebaseConfig(DataClassJsonMixin): - apn_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_template") - ) - credentials_json: str | None = dc_field( - default=None, metadata=dc_config(field_name="credentials_json") - ) - data_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="data_template") - ) - disabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="Disabled") - ) - notification_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="notification_template") - ) - server_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="server_key") - ) - + apn_template: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_template")) + credentials_json: str | None = dc_field(default=None, metadata=dc_config(field_name="credentials_json")) + data_template: str | None = dc_field(default=None, metadata=dc_config(field_name="data_template")) + disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="Disabled")) + notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="notification_template")) + server_key: str | None = dc_field(default=None, metadata=dc_config(field_name="server_key")) @dataclass class FirebaseConfigFields(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - apn_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_template") - ) - credentials_json: str | None = dc_field( - default=None, metadata=dc_config(field_name="credentials_json") - ) - data_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="data_template") - ) - notification_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="notification_template") - ) - server_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="server_key") - ) - + apn_template: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_template")) + credentials_json: str | None = dc_field(default=None, metadata=dc_config(field_name="credentials_json")) + data_template: str | None = dc_field(default=None, metadata=dc_config(field_name="data_template")) + notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="notification_template")) + server_key: str | None = dc_field(default=None, metadata=dc_config(field_name="server_key")) @dataclass class FlagCountRuleParameters(DataClassJsonMixin): - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) @dataclass class FlagDetails(DataClassJsonMixin): original_text: str = dc_field(metadata=dc_config(field_name="original_text")) - automod: "AutomodDetailsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="automod") - ) - + automod: 'AutomodDetailsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="automod")) @dataclass class FlagDetailsResponse(DataClassJsonMixin): original_text: str = dc_field(metadata=dc_config(field_name="original_text")) - automod: "AutomodDetailsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="automod") - ) - extra: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="extra") - ) - + automod: 'AutomodDetailsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="automod")) + extra: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="extra")) @dataclass class FlagFeedbackResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) - labels: "list[LabelResponse]" = dc_field(metadata=dc_config(field_name="labels")) - + labels: 'list[LabelResponse]' = dc_field(metadata=dc_config(field_name="labels")) @dataclass class FlagItemResponse(DataClassJsonMixin): @@ -13401,22 +6634,12 @@ class FlagItemResponse(DataClassJsonMixin): # Unique identifier of the created moderation item item_id: str = dc_field(metadata=dc_config(field_name="item_id")) - @dataclass class FlagMessageDetailsResponse(DataClassJsonMixin): - pin_changed: bool | None = dc_field( - default=None, metadata=dc_config(field_name="pin_changed") - ) - should_enrich: bool | None = dc_field( - default=None, metadata=dc_config(field_name="should_enrich") - ) - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) - updated_by_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="updated_by_id") - ) - + pin_changed: bool | None = dc_field(default=None, metadata=dc_config(field_name="pin_changed")) + should_enrich: bool | None = dc_field(default=None, metadata=dc_config(field_name="should_enrich")) + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + updated_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="updated_by_id")) @dataclass class FlagRequest(DataClassJsonMixin): @@ -13425,301 +6648,127 @@ class FlagRequest(DataClassJsonMixin): # Type of entity being flagged (e.g., message, user) entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) # ID of the user who created the flagged entity - entity_creator_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_creator_id") - ) + entity_creator_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_creator_id")) # Optional explanation for why the content is being flagged reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Additional metadata about the flag - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - moderation_payload: "ModerationPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation_payload") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + moderation_payload: 'ModerationPayload | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_payload")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class FlagResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - created_by_automod: bool = dc_field( - metadata=dc_config(field_name="created_by_automod") - ) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - approved_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="approved_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_by_automod: bool = dc_field(metadata=dc_config(field_name="created_by_automod")) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + approved_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="approved_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - rejected_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="rejected_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - reviewed_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="reviewed_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - reviewed_by: str | None = dc_field( - default=None, metadata=dc_config(field_name="reviewed_by") - ) - target_message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="target_message_id") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - details: "FlagDetails | None" = dc_field( - default=None, metadata=dc_config(field_name="details") - ) + rejected_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="rejected_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + reviewed_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="reviewed_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + reviewed_by: str | None = dc_field(default=None, metadata=dc_config(field_name="reviewed_by")) + target_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="target_message_id")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + details: 'FlagDetails | None' = dc_field(default=None, metadata=dc_config(field_name="details")) # Represents any chat message - target_message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="target_message") - ) + target_message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="target_message")) # User response object - target_user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="target_user") - ) + target_user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="target_user")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class FlagUpdatedEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) type: str = dc_field(default="flag.updated", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # User response object - created_by: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="CreatedBy") - ) + created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="CreatedBy")) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="Message") - ) + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="Message")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="User") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="User")) @dataclass class FlagUserOptions(DataClassJsonMixin): reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - @dataclass class FloodConfig(DataClassJsonMixin): - allowlist: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="allowlist") - ) - identical: "FloodIdenticalConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="identical") - ) - similar: "FloodSimilarConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="similar") - ) - + allowlist: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowlist")) + identical: 'FloodIdenticalConfig | None' = dc_field(default=None, metadata=dc_config(field_name="identical")) + similar: 'FloodSimilarConfig | None' = dc_field(default=None, metadata=dc_config(field_name="similar")) @dataclass class FloodIdenticalConfig(DataClassJsonMixin): action: str | None = dc_field(default=None, metadata=dc_config(field_name="action")) - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - time_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="time_window") - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) @dataclass class FloodIdenticalRuleParameters(DataClassJsonMixin): - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - time_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="time_window") - ) - allowlist: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="allowlist") - ) - + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) + allowlist: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowlist")) @dataclass class FloodSimilarConfig(DataClassJsonMixin): action: str | None = dc_field(default=None, metadata=dc_config(field_name="action")) - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - similarity_distance: int | None = dc_field( - default=None, metadata=dc_config(field_name="similarity_distance") - ) - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - time_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="time_window") - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + similarity_distance: int | None = dc_field(default=None, metadata=dc_config(field_name="similarity_distance")) + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) @dataclass class FloodSimilarRuleParameters(DataClassJsonMixin): - similarity_distance: int | None = dc_field( - default=None, metadata=dc_config(field_name="similarity_distance") - ) - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - time_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="time_window") - ) - allowlist: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="allowlist") - ) - + similarity_distance: int | None = dc_field(default=None, metadata=dc_config(field_name="similarity_distance")) + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) + allowlist: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowlist")) @dataclass class FollowBatchRequest(DataClassJsonMixin): # List of follow relationships to create - follows: "list[FollowRequest]" = dc_field(metadata=dc_config(field_name="follows")) + follows: 'list[FollowRequest]' = dc_field(metadata=dc_config(field_name="follows")) # If true, auto-creates users referenced by source/target FIDs in the batch when they don't already exist. Server-side only. Defaults to false. This top-level field is the only supported batch/upsert create_users control. - create_users: bool | None = dc_field( - default=None, metadata=dc_config(field_name="create_users") - ) + create_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_users")) # If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enrich_own_fields") - ) - + enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) @dataclass class FollowBatchResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of newly created follow relationships - created: "list[FollowResponse]" = dc_field(metadata=dc_config(field_name="created")) + created: 'list[FollowResponse]' = dc_field(metadata=dc_config(field_name="created")) # List of current follow relationships - follows: "list[FollowResponse]" = dc_field(metadata=dc_config(field_name="follows")) - + follows: 'list[FollowResponse]' = dc_field(metadata=dc_config(field_name="follows")) @dataclass class FollowCreatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) + follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) # The type of event: "feeds.follow.created" in this case - type: str = dc_field( - default="feeds.follow.created", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="feeds.follow.created", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class FollowDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) + follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) # The type of event: "feeds.follow.deleted" in this case - type: str = dc_field( - default="feeds.follow.deleted", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="feeds.follow.deleted", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class FollowRequest(DataClassJsonMixin): @@ -13728,489 +6777,229 @@ class FollowRequest(DataClassJsonMixin): # Fully qualified ID of the target feed target: str = dc_field(metadata=dc_config(field_name="target")) # Maximum number of historical activities to copy from the target feed when the follow is first materialized. Not set = unlimited (default). 0 = copy nothing. Range: 0-1000. - activity_copy_limit: int | None = dc_field( - default=None, metadata=dc_config(field_name="activity_copy_limit") - ) + activity_copy_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="activity_copy_limit")) # Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field( - default=None, metadata=dc_config(field_name="copy_custom_to_notification") - ) + copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) # Whether to create a notification activity for this follow - create_notification_activity: bool | None = dc_field( - default=None, metadata=dc_config(field_name="create_notification_activity") - ) + create_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_notification_activity")) # If true, auto-creates users referenced by the source and target FIDs when they don't already exist. Server-side only. Defaults to false. Use directly on single follow endpoints (Follow, GetOrCreateFollow). On batch endpoints (FollowBatch, GetOrCreateFollows), use the top-level create_users field; per-item follows[i].create_users is rejected. - create_users: bool | None = dc_field( - default=None, metadata=dc_config(field_name="create_users") - ) + create_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_users")) # If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enrich_own_fields") - ) + enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) # Push preference for the follow relationship - push_preference: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_preference") - ) + push_preference: str | None = dc_field(default=None, metadata=dc_config(field_name="push_preference")) # Whether to skip push for this follow - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) # Status of the follow relationship. One of: accepted, pending, rejected status: str | None = dc_field(default=None, metadata=dc_config(field_name="status")) # Custom data for the follow relationship - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class FollowResponse(DataClassJsonMixin): # When the follow relationship was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - # Role of the follower (source user) in the follow relationship + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + # Role of the follower (source user) in the follow relationship, as stored. A reserved name, or a role your app no longer defines, is reported as stored but evaluated as 'feed_follower'. follower_role: str = dc_field(metadata=dc_config(field_name="follower_role")) # Push preference for notifications. One of: all, none push_preference: str = dc_field(metadata=dc_config(field_name="push_preference")) # Status of the follow relationship. One of: accepted, pending, rejected status: str = dc_field(metadata=dc_config(field_name="status")) # When the follow relationship was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - source_feed: "FeedResponse" = dc_field(metadata=dc_config(field_name="source_feed")) - target_feed: "FeedResponse" = dc_field(metadata=dc_config(field_name="target_feed")) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + source_feed: 'FeedResponse' = dc_field(metadata=dc_config(field_name="source_feed")) + target_feed: 'FeedResponse' = dc_field(metadata=dc_config(field_name="target_feed")) # When the follow request was accepted - request_accepted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="request_accepted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + request_accepted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="request_accepted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # When the follow request was rejected - request_rejected_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="request_rejected_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + request_rejected_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="request_rejected_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Custom data for the follow relationship - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class FollowUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) + follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) # The type of event: "feeds.follow.updated" in this case - type: str = dc_field( - default="feeds.follow.updated", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="feeds.follow.updated", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class FrameRecordSettings(DataClassJsonMixin): - capture_interval_in_seconds: int = dc_field( - metadata=dc_config(field_name="capture_interval_in_seconds") - ) + capture_interval_in_seconds: int = dc_field(metadata=dc_config(field_name="capture_interval_in_seconds")) mode: str = dc_field(metadata=dc_config(field_name="mode")) - quality: str | None = dc_field( - default=None, metadata=dc_config(field_name="quality") - ) - + quality: str | None = dc_field(default=None, metadata=dc_config(field_name="quality")) @dataclass class FrameRecordingResponse(DataClassJsonMixin): status: str = dc_field(metadata=dc_config(field_name="status")) - @dataclass class FrameRecordingSettingsRequest(DataClassJsonMixin): - capture_interval_in_seconds: int = dc_field( - metadata=dc_config(field_name="capture_interval_in_seconds") - ) + capture_interval_in_seconds: int = dc_field(metadata=dc_config(field_name="capture_interval_in_seconds")) mode: str = dc_field(metadata=dc_config(field_name="mode")) - quality: str | None = dc_field( - default=None, metadata=dc_config(field_name="quality") - ) - + quality: str | None = dc_field(default=None, metadata=dc_config(field_name="quality")) @dataclass class FrameRecordingSettingsResponse(DataClassJsonMixin): - capture_interval_in_seconds: int = dc_field( - metadata=dc_config(field_name="capture_interval_in_seconds") - ) + capture_interval_in_seconds: int = dc_field(metadata=dc_config(field_name="capture_interval_in_seconds")) mode: str = dc_field(metadata=dc_config(field_name="mode")) - quality: str | None = dc_field( - default=None, metadata=dc_config(field_name="quality") - ) - + quality: str | None = dc_field(default=None, metadata=dc_config(field_name="quality")) @dataclass class FriendReactionsOptions(DataClassJsonMixin): # Default: false. When true, fetches friend reactions for activities. - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) # Default: 3, Max: 10. The maximum number of friend reactions to return per activity. limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) # Default: 'following'. The type of friend relationship to use. 'following' = users you follow, 'mutual' = users with mutual follows. One of: following, mutual type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - @dataclass class FullUserResponse(DataClassJsonMixin): banned: bool = dc_field(metadata=dc_config(field_name="banned")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) id: str = dc_field(metadata=dc_config(field_name="id")) invisible: bool = dc_field(metadata=dc_config(field_name="invisible")) language: str = dc_field(metadata=dc_config(field_name="language")) online: bool = dc_field(metadata=dc_config(field_name="online")) role: str = dc_field(metadata=dc_config(field_name="role")) shadow_banned: bool = dc_field(metadata=dc_config(field_name="shadow_banned")) - total_unread_count: int = dc_field( - metadata=dc_config(field_name="total_unread_count") - ) + total_unread_count: int = dc_field(metadata=dc_config(field_name="total_unread_count")) unread_channels: int = dc_field(metadata=dc_config(field_name="unread_channels")) unread_count: int = dc_field(metadata=dc_config(field_name="unread_count")) unread_threads: int = dc_field(metadata=dc_config(field_name="unread_threads")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - blocked_user_ids: list[str] = dc_field( - metadata=dc_config(field_name="blocked_user_ids") - ) - channel_mutes: "list[ChannelMute]" = dc_field( - metadata=dc_config(field_name="channel_mutes") - ) - devices: "list[DeviceResponse]" = dc_field(metadata=dc_config(field_name="devices")) - mutes: "list[UserMuteResponse]" = dc_field(metadata=dc_config(field_name="mutes")) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + blocked_user_ids: list[str] = dc_field(metadata=dc_config(field_name="blocked_user_ids")) + channel_mutes: 'list[ChannelMute]' = dc_field(metadata=dc_config(field_name="channel_mutes")) + devices: 'list[DeviceResponse]' = dc_field(metadata=dc_config(field_name="devices")) + mutes: 'list[UserMuteResponse]' = dc_field(metadata=dc_config(field_name="mutes")) teams: list[str] = dc_field(metadata=dc_config(field_name="teams")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - avg_response_time: int | None = dc_field( - default=None, metadata=dc_config(field_name="avg_response_time") - ) - ban_expires: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="ban_expires", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - bypass_moderation: bool | None = dc_field( - default=None, metadata=dc_config(field_name="bypass_moderation") - ) - deactivated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deactivated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + avg_response_time: int | None = dc_field(default=None, metadata=dc_config(field_name="avg_response_time")) + ban_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ban_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + bypass_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="bypass_moderation")) + deactivated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deactivated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) image: str | None = dc_field(default=None, metadata=dc_config(field_name="image")) - last_active: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_active", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + last_active: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_active", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - revoke_tokens_issued_before: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="revoke_tokens_issued_before", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - latest_hidden_channels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="latest_hidden_channels") - ) - privacy_settings: "PrivacySettingsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="privacy_settings") - ) - teams_role: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="teams_role") - ) - + revoke_tokens_issued_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="revoke_tokens_issued_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + latest_hidden_channels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="latest_hidden_channels")) + privacy_settings: 'PrivacySettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="privacy_settings")) + teams_role: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="teams_role")) @dataclass class FutureChannelBanResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - expires: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="expires", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - shadow: bool | None = dc_field( - default=None, metadata=dc_config(field_name="shadow") - ) + shadow: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow")) # User response object - banned_by: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="banned_by") - ) + banned_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="banned_by")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class GeofenceResponse(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - country_codes: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="country_codes") - ) - + country_codes: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="country_codes")) @dataclass class GeofenceSettings(DataClassJsonMixin): names: list[str] = dc_field(metadata=dc_config(field_name="names")) - @dataclass class GeofenceSettingsRequest(DataClassJsonMixin): - names: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="names") - ) - + names: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="names")) @dataclass class GeofenceSettingsResponse(DataClassJsonMixin): names: list[str] = dc_field(metadata=dc_config(field_name="names")) - @dataclass class GetActionConfigResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Moderation action configs grouped by entity type, sorted by order ascending - action_config: "dict[str, list[ModerationActionConfigResponse]]" = dc_field( - metadata=dc_config(field_name="action_config") - ) - + action_config: 'dict[str, list[ModerationActionConfigResponse]]' = dc_field(metadata=dc_config(field_name="action_config")) @dataclass class GetActiveCallsStatusResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # End time of the status period - end_time: datetime = dc_field( - metadata=dc_config( - field_name="end_time", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + end_time: datetime = dc_field(metadata=dc_config(field_name="end_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Start time of the status period - start_time: datetime = dc_field( - metadata=dc_config( - field_name="start_time", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - metrics: "ActiveCallsMetrics | None" = dc_field( - default=None, metadata=dc_config(field_name="metrics") - ) - summary: "ActiveCallsSummary | None" = dc_field( - default=None, metadata=dc_config(field_name="summary") - ) - + start_time: datetime = dc_field(metadata=dc_config(field_name="start_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + metrics: 'ActiveCallsMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="metrics")) + summary: 'ActiveCallsSummary | None' = dc_field(default=None, metadata=dc_config(field_name="summary")) @dataclass class GetActivityResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) - + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) @dataclass class GetAppealResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - item: "AppealItemResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="item") - ) - + item: 'AppealItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="item")) @dataclass class GetApplicationResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - app: "AppResponseFields" = dc_field(metadata=dc_config(field_name="app")) - + app: 'AppResponseFields' = dc_field(metadata=dc_config(field_name="app")) @dataclass class GetBlockListResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Block list contains restricted words - blocklist: "BlockListResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="blocklist") - ) - + blocklist: 'BlockListResponse | None' = dc_field(default=None, metadata=dc_config(field_name="blocklist")) @dataclass class GetBlockedUsersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Array of blocked user object - blocks: "list[BlockedUserResponse]" = dc_field( - metadata=dc_config(field_name="blocks") - ) - + blocks: 'list[BlockedUserResponse]' = dc_field(metadata=dc_config(field_name="blocks")) @dataclass class GetCallParticipantSessionMetricsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - is_publisher: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_publisher") - ) - is_subscriber: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_subscriber") - ) - joined_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="joined_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - publisher_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="publisher_type") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - user_session_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_session_id") - ) - published_tracks: "list[PublishedTrackMetrics] | None" = dc_field( - default=None, metadata=dc_config(field_name="published_tracks") - ) - client: "SessionClient | None" = dc_field( - default=None, metadata=dc_config(field_name="client") - ) - + is_publisher: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_publisher")) + is_subscriber: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_subscriber")) + joined_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="joined_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + publisher_type: str | None = dc_field(default=None, metadata=dc_config(field_name="publisher_type")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_session_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_session_id")) + published_tracks: 'list[PublishedTrackMetrics] | None' = dc_field(default=None, metadata=dc_config(field_name="published_tracks")) + client: 'SessionClient | None' = dc_field(default=None, metadata=dc_config(field_name="client")) @dataclass class GetCallReportResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) session_id: str = dc_field(metadata=dc_config(field_name="session_id")) - report: "ReportResponse" = dc_field(metadata=dc_config(field_name="report")) - video_reactions: "list[VideoReactionsResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="video_reactions") - ) - chat_activity: "ChatActivityStatsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="chat_activity") - ) - digest: "BroadcastDigest | None" = dc_field( - default=None, metadata=dc_config(field_name="digest") - ) - session: "CallSessionResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="session") - ) - + report: 'ReportResponse' = dc_field(metadata=dc_config(field_name="report")) + video_reactions: 'list[VideoReactionsResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="video_reactions")) + chat_activity: 'ChatActivityStatsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="chat_activity")) + digest: 'BroadcastDigest | None' = dc_field(default=None, metadata=dc_config(field_name="digest")) + session: 'CallSessionResponse | None' = dc_field(default=None, metadata=dc_config(field_name="session")) @dataclass class GetCallResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) - own_capabilities: "list[OwnCapability]" = dc_field( - metadata=dc_config(field_name="own_capabilities") - ) + members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + own_capabilities: 'list[OwnCapability]' = dc_field(metadata=dc_config(field_name="own_capabilities")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) - + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) @dataclass class GetCallSessionParticipantStatsDetailsResponse(DataClassJsonMixin): @@ -14221,63 +7010,28 @@ class GetCallSessionParticipantStatsDetailsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) user_session_id: str = dc_field(metadata=dc_config(field_name="user_session_id")) - publisher: "ParticipantSeriesPublisherStats | None" = dc_field( - default=None, metadata=dc_config(field_name="publisher") - ) - subscriber: "ParticipantSeriesSubscriberStats | None" = dc_field( - default=None, metadata=dc_config(field_name="subscriber") - ) - timeframe: "ParticipantSeriesTimeframe | None" = dc_field( - default=None, metadata=dc_config(field_name="timeframe") - ) - user: "ParticipantSeriesUserStats | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + publisher: 'ParticipantSeriesPublisherStats | None' = dc_field(default=None, metadata=dc_config(field_name="publisher")) + subscriber: 'ParticipantSeriesSubscriberStats | None' = dc_field(default=None, metadata=dc_config(field_name="subscriber")) + timeframe: 'ParticipantSeriesTimeframe | None' = dc_field(default=None, metadata=dc_config(field_name="timeframe")) + user: 'ParticipantSeriesUserStats | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class GetCallTypeResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) duration: str = dc_field(metadata=dc_config(field_name="duration")) name: str = dc_field(metadata=dc_config(field_name="name")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) - notification_settings: "NotificationSettingsResponse" = dc_field( - metadata=dc_config(field_name="notification_settings") - ) - settings: "CallSettingsResponse" = dc_field( - metadata=dc_config(field_name="settings") - ) - external_storage: str | None = dc_field( - default=None, metadata=dc_config(field_name="external_storage") - ) - + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) + notification_settings: 'NotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="notification_settings")) + settings: 'CallSettingsResponse' = dc_field(metadata=dc_config(field_name="settings")) + external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="external_storage")) @dataclass class GetCampaignResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - campaign: "CampaignResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="campaign") - ) - users: "PagerResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="users") - ) - + campaign: 'CampaignResponse | None' = dc_field(default=None, metadata=dc_config(field_name="campaign")) + users: 'PagerResponse | None' = dc_field(default=None, metadata=dc_config(field_name="users")) @dataclass class GetChannelTypeResponse(DataClassJsonMixin): @@ -14285,33 +7039,18 @@ class GetChannelTypeResponse(DataClassJsonMixin): automod_behavior: str = dc_field(metadata=dc_config(field_name="automod_behavior")) connect_events: bool = dc_field(metadata=dc_config(field_name="connect_events")) count_messages: bool = dc_field(metadata=dc_config(field_name="count_messages")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom_events: bool = dc_field(metadata=dc_config(field_name="custom_events")) delivery_events: bool = dc_field(metadata=dc_config(field_name="delivery_events")) # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - mark_messages_pending: bool = dc_field( - metadata=dc_config(field_name="mark_messages_pending") - ) - max_message_length: int = dc_field( - metadata=dc_config(field_name="max_message_length") - ) - message_retention: str = dc_field( - metadata=dc_config(field_name="message_retention") - ) + mark_messages_pending: bool = dc_field(metadata=dc_config(field_name="mark_messages_pending")) + max_message_length: int = dc_field(metadata=dc_config(field_name="max_message_length")) + message_retention: str = dc_field(metadata=dc_config(field_name="message_retention")) mutes: bool = dc_field(metadata=dc_config(field_name="mutes")) name: str = dc_field(metadata=dc_config(field_name="name")) polls: bool = dc_field(metadata=dc_config(field_name="polls")) - push_notifications: bool = dc_field( - metadata=dc_config(field_name="push_notifications") - ) + push_notifications: bool = dc_field(metadata=dc_config(field_name="push_notifications")) quotes: bool = dc_field(metadata=dc_config(field_name="quotes")) reactions: bool = dc_field(metadata=dc_config(field_name="reactions")) read_events: bool = dc_field(metadata=dc_config(field_name="read_events")) @@ -14319,57 +7058,25 @@ class GetChannelTypeResponse(DataClassJsonMixin): replies: bool = dc_field(metadata=dc_config(field_name="replies")) search: bool = dc_field(metadata=dc_config(field_name="search")) shared_locations: bool = dc_field(metadata=dc_config(field_name="shared_locations")) - skip_last_msg_update_for_system_msgs: bool = dc_field( - metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs") - ) + skip_last_msg_update_for_system_msgs: bool = dc_field(metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs")) typing_events: bool = dc_field(metadata=dc_config(field_name="typing_events")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) uploads: bool = dc_field(metadata=dc_config(field_name="uploads")) url_enrichment: bool = dc_field(metadata=dc_config(field_name="url_enrichment")) - user_message_reminders: bool = dc_field( - metadata=dc_config(field_name="user_message_reminders") - ) - commands: "list[Command]" = dc_field(metadata=dc_config(field_name="commands")) - permissions: "list[PolicyRequest]" = dc_field( - metadata=dc_config(field_name="permissions") - ) - grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) - blocklist: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist") - ) - blocklist_behavior: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist_behavior") - ) - partition_size: int | None = dc_field( - default=None, metadata=dc_config(field_name="partition_size") - ) - partition_ttl: str | None = dc_field( - default=None, metadata=dc_config(field_name="partition_ttl") - ) - push_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_level") - ) - allowed_flag_reasons: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="allowed_flag_reasons") - ) - blocklists: "list[BlockListOptions] | None" = dc_field( - default=None, metadata=dc_config(field_name="blocklists") - ) + user_message_reminders: bool = dc_field(metadata=dc_config(field_name="user_message_reminders")) + commands: 'list[Command]' = dc_field(metadata=dc_config(field_name="commands")) + permissions: 'list[PolicyRequest]' = dc_field(metadata=dc_config(field_name="permissions")) + grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) + blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) + blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) + partition_size: int | None = dc_field(default=None, metadata=dc_config(field_name="partition_size")) + partition_ttl: str | None = dc_field(default=None, metadata=dc_config(field_name="partition_ttl")) + push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) + allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) + blocklists: 'list[BlockListOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="blocklists")) # Sets thresholds for AI moderation - automod_thresholds: "Thresholds | None" = dc_field( - default=None, metadata=dc_config(field_name="automod_thresholds") - ) - chat_preferences: "ChatPreferences | None" = dc_field( - default=None, metadata=dc_config(field_name="chat_preferences") - ) - + automod_thresholds: 'Thresholds | None' = dc_field(default=None, metadata=dc_config(field_name="automod_thresholds")) + chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) @dataclass class GetCommandResponse(DataClassJsonMixin): @@ -14378,25 +7085,8 @@ class GetCommandResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) name: str = dc_field(metadata=dc_config(field_name="name")) set: str = dc_field(metadata=dc_config(field_name="set")) - created_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - updated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class GetCommentRepliesResponse(DataClassJsonMixin): @@ -14404,18 +7094,14 @@ class GetCommentRepliesResponse(DataClassJsonMixin): # Sort order used for the replies (first, last, top, best, controversial) sort: str = dc_field(metadata=dc_config(field_name="sort")) # Threaded listing of replies to the comment - comments: "list[ThreadedCommentResponse]" = dc_field( - metadata=dc_config(field_name="comments") - ) + comments: 'list[ThreadedCommentResponse]' = dc_field(metadata=dc_config(field_name="comments")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class GetCommentResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) - + comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) @dataclass class GetCommentsResponse(DataClassJsonMixin): @@ -14423,27 +7109,20 @@ class GetCommentsResponse(DataClassJsonMixin): # Sort order used for the comments (first, last, top, best, controversial) sort: str = dc_field(metadata=dc_config(field_name="sort")) # Threaded listing for the activity - comments: "list[ThreadedCommentResponse]" = dc_field( - metadata=dc_config(field_name="comments") - ) + comments: 'list[ThreadedCommentResponse]' = dc_field(metadata=dc_config(field_name="comments")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class GetConfigResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - config: "ConfigResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="config") - ) - + config: 'ConfigResponse | None' = dc_field(default=None, metadata=dc_config(field_name="config")) @dataclass class GetCustomPermissionResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - permission: "Permission" = dc_field(metadata=dc_config(field_name="permission")) - + permission: 'Permission' = dc_field(metadata=dc_config(field_name="permission")) @dataclass class GetDailyDigestResponse(DataClassJsonMixin): @@ -14451,93 +7130,49 @@ class GetDailyDigestResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) status: str = dc_field(metadata=dc_config(field_name="status")) - generated_at: str | None = dc_field( - default=None, metadata=dc_config(field_name="generated_at") - ) - retry_after: int | None = dc_field( - default=None, metadata=dc_config(field_name="retry_after") - ) - revision: int | None = dc_field( - default=None, metadata=dc_config(field_name="revision") - ) - schema_version: str | None = dc_field( - default=None, metadata=dc_config(field_name="schema_version") - ) - broadcasts: "list[BroadcastDigest] | None" = dc_field( - default=None, metadata=dc_config(field_name="broadcasts") - ) - call_sessions: "list[DailyDigestCallSessionSummary] | None" = dc_field( - default=None, metadata=dc_config(field_name="call_sessions") - ) - digest_kinds: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="digest_kinds") - ) - broadcast_rollup: "BroadcastDailyRollup | None" = dc_field( - default=None, metadata=dc_config(field_name="broadcast_rollup") - ) - + generated_at: str | None = dc_field(default=None, metadata=dc_config(field_name="generated_at")) + retry_after: int | None = dc_field(default=None, metadata=dc_config(field_name="retry_after")) + revision: int | None = dc_field(default=None, metadata=dc_config(field_name="revision")) + schema_version: str | None = dc_field(default=None, metadata=dc_config(field_name="schema_version")) + broadcasts: 'list[BroadcastDigest] | None' = dc_field(default=None, metadata=dc_config(field_name="broadcasts")) + call_sessions: 'list[DailyDigestCallSessionSummary] | None' = dc_field(default=None, metadata=dc_config(field_name="call_sessions")) + digest_kinds: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="digest_kinds")) + broadcast_rollup: 'BroadcastDailyRollup | None' = dc_field(default=None, metadata=dc_config(field_name="broadcast_rollup")) @dataclass class GetDraftResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - draft: "DraftResponse" = dc_field(metadata=dc_config(field_name="draft")) - + draft: 'DraftResponse' = dc_field(metadata=dc_config(field_name="draft")) @dataclass class GetEdgesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - edges: "list[EdgeResponse]" = dc_field(metadata=dc_config(field_name="edges")) - + edges: 'list[EdgeResponse]' = dc_field(metadata=dc_config(field_name="edges")) @dataclass class GetExternalStorageAWSS3Response(DataClassJsonMixin): bucket: str = dc_field(metadata=dc_config(field_name="bucket")) region: str = dc_field(metadata=dc_config(field_name="region")) role_arn: str = dc_field(metadata=dc_config(field_name="role_arn")) - path_prefix: str | None = dc_field( - default=None, metadata=dc_config(field_name="path_prefix") - ) - + path_prefix: str | None = dc_field(default=None, metadata=dc_config(field_name="path_prefix")) @dataclass class GetExternalStorageGCSResponse(DataClassJsonMixin): bucket: str = dc_field(metadata=dc_config(field_name="bucket")) credentials_set: bool = dc_field(metadata=dc_config(field_name="credentials_set")) - path_prefix: str | None = dc_field( - default=None, metadata=dc_config(field_name="path_prefix") - ) - + path_prefix: str | None = dc_field(default=None, metadata=dc_config(field_name="path_prefix")) @dataclass class GetExternalStorageResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - aws_s3: "GetExternalStorageAWSS3Response | None" = dc_field( - default=None, metadata=dc_config(field_name="aws_s3") - ) - gcs: "GetExternalStorageGCSResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="gcs") - ) - + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + aws_s3: 'GetExternalStorageAWSS3Response | None' = dc_field(default=None, metadata=dc_config(field_name="aws_s3")) + gcs: 'GetExternalStorageGCSResponse | None' = dc_field(default=None, metadata=dc_config(field_name="gcs")) @dataclass class GetFeedCountsResponse(DataClassJsonMixin): @@ -14549,65 +7184,41 @@ class GetFeedCountsResponse(DataClassJsonMixin): # Sum of activity_count and comment_count total_count: int = dc_field(metadata=dc_config(field_name="total_count")) - @dataclass class GetFeedGroupResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_group: "FeedGroupResponse" = dc_field( - metadata=dc_config(field_name="feed_group") - ) - + feed_group: 'FeedGroupResponse' = dc_field(metadata=dc_config(field_name="feed_group")) @dataclass class GetFeedViewResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_view: "FeedViewResponse" = dc_field(metadata=dc_config(field_name="feed_view")) - + feed_view: 'FeedViewResponse' = dc_field(metadata=dc_config(field_name="feed_view")) @dataclass class GetFeedVisibilityResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_visibility: "FeedVisibilityResponse" = dc_field( - metadata=dc_config(field_name="feed_visibility") - ) - + feed_visibility: 'FeedVisibilityResponse' = dc_field(metadata=dc_config(field_name="feed_visibility")) @dataclass class GetFeedsRateLimitsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Rate limits for Android platform (endpoint name -> limit info) - android: "dict[str, LimitInfoResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="android") - ) + android: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="android")) # Rate limits for iOS platform (endpoint name -> limit info) - ios: "dict[str, LimitInfoResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="ios") - ) + ios: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="ios")) # Rate limits for server-side platform (endpoint name -> limit info) - server_side: "dict[str, LimitInfoResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="server_side") - ) + server_side: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="server_side")) # Rate limits for Unity platform (endpoint name -> limit info) - unity: "dict[str, LimitInfoResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="unity") - ) + unity: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="unity")) # Rate limits for Web platform (endpoint name -> limit info) - web: "dict[str, LimitInfoResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="web") - ) - + web: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="web")) @dataclass class GetFlagCountRequest(DataClassJsonMixin): # ID of the user whose content was flagged - entity_creator_id: str = dc_field( - metadata=dc_config(field_name="entity_creator_id") - ) + entity_creator_id: str = dc_field(metadata=dc_config(field_name="entity_creator_id")) # Optional entity type filter (e.g., stream:chat:v1:message, stream:user) - entity_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_type") - ) - + entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) @dataclass class GetFlagCountResponse(DataClassJsonMixin): @@ -14615,362 +7226,200 @@ class GetFlagCountResponse(DataClassJsonMixin): count: int = dc_field(metadata=dc_config(field_name="count")) duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class GetFollowSuggestionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of suggested feeds to follow - suggestions: "list[FeedSuggestionResponse]" = dc_field( - metadata=dc_config(field_name="suggestions") - ) - algorithm_used: str | None = dc_field( - default=None, metadata=dc_config(field_name="algorithm_used") - ) - + suggestions: 'list[FeedSuggestionResponse]' = dc_field(metadata=dc_config(field_name="suggestions")) + algorithm_used: str | None = dc_field(default=None, metadata=dc_config(field_name="algorithm_used")) @dataclass class GetImportResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - import_task: "ImportTask | None" = dc_field( - default=None, metadata=dc_config(field_name="import_task") - ) - + import_task: 'ImportTask | None' = dc_field(default=None, metadata=dc_config(field_name="import_task")) @dataclass class GetImportV2TaskResponse(DataClassJsonMixin): app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) id: str = dc_field(metadata=dc_config(field_name="id")) product: str = dc_field(metadata=dc_config(field_name="product")) state: int = dc_field(metadata=dc_config(field_name="state")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - settings: "ImportV2TaskSettings" = dc_field( - metadata=dc_config(field_name="settings") - ) - result: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="result") - ) - + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + settings: 'ImportV2TaskSettings' = dc_field(metadata=dc_config(field_name="settings")) + result: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="result")) @dataclass class GetManyMessagesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of messages - messages: "list[MessageResponse]" = dc_field( - metadata=dc_config(field_name="messages") - ) - + messages: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="messages")) @dataclass class GetMessageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: "MessageWithChannelResponse" = dc_field( - metadata=dc_config(field_name="message") - ) - pending_message_metadata: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="pending_message_metadata") - ) - + message: 'MessageWithChannelResponse' = dc_field(metadata=dc_config(field_name="message")) + pending_message_metadata: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="pending_message_metadata")) @dataclass class GetModerationRuleResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - rule: "ModerationRuleV2Response | None" = dc_field( - default=None, metadata=dc_config(field_name="rule") - ) - + rule: 'ModerationRuleV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="rule")) @dataclass class GetOGResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # URL of detected video or audio - asset_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="asset_url") - ) - author_icon: str | None = dc_field( - default=None, metadata=dc_config(field_name="author_icon") - ) + asset_url: str | None = dc_field(default=None, metadata=dc_config(field_name="asset_url")) + author_icon: str | None = dc_field(default=None, metadata=dc_config(field_name="author_icon")) # og:site - author_link: str | None = dc_field( - default=None, metadata=dc_config(field_name="author_link") - ) + author_link: str | None = dc_field(default=None, metadata=dc_config(field_name="author_link")) # og:site_name - author_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="author_name") - ) + author_name: str | None = dc_field(default=None, metadata=dc_config(field_name="author_name")) color: str | None = dc_field(default=None, metadata=dc_config(field_name="color")) - fallback: str | None = dc_field( - default=None, metadata=dc_config(field_name="fallback") - ) + fallback: str | None = dc_field(default=None, metadata=dc_config(field_name="fallback")) footer: str | None = dc_field(default=None, metadata=dc_config(field_name="footer")) - footer_icon: str | None = dc_field( - default=None, metadata=dc_config(field_name="footer_icon") - ) + footer_icon: str | None = dc_field(default=None, metadata=dc_config(field_name="footer_icon")) # URL of detected image - image_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="image_url") - ) + image_url: str | None = dc_field(default=None, metadata=dc_config(field_name="image_url")) # extracted url from the text - og_scrape_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="og_scrape_url") - ) - original_height: int | None = dc_field( - default=None, metadata=dc_config(field_name="original_height") - ) - original_width: int | None = dc_field( - default=None, metadata=dc_config(field_name="original_width") - ) - pretext: str | None = dc_field( - default=None, metadata=dc_config(field_name="pretext") - ) + og_scrape_url: str | None = dc_field(default=None, metadata=dc_config(field_name="og_scrape_url")) + original_height: int | None = dc_field(default=None, metadata=dc_config(field_name="original_height")) + original_width: int | None = dc_field(default=None, metadata=dc_config(field_name="original_width")) + pretext: str | None = dc_field(default=None, metadata=dc_config(field_name="pretext")) # og:description text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) # URL of detected thumb image - thumb_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="thumb_url") - ) + thumb_url: str | None = dc_field(default=None, metadata=dc_config(field_name="thumb_url")) # og:title title: str | None = dc_field(default=None, metadata=dc_config(field_name="title")) # og:url - title_link: str | None = dc_field( - default=None, metadata=dc_config(field_name="title_link") - ) + title_link: str | None = dc_field(default=None, metadata=dc_config(field_name="title_link")) # Attachment type, could be empty, image, audio or video type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - actions: "list[Action] | None" = dc_field( - default=None, metadata=dc_config(field_name="actions") - ) - fields: "list[Field] | None" = dc_field( - default=None, metadata=dc_config(field_name="fields") - ) - giphy: "Images | None" = dc_field( - default=None, metadata=dc_config(field_name="giphy") - ) - + actions: 'list[Action] | None' = dc_field(default=None, metadata=dc_config(field_name="actions")) + fields: 'list[Field] | None' = dc_field(default=None, metadata=dc_config(field_name="fields")) + giphy: 'Images | None' = dc_field(default=None, metadata=dc_config(field_name="giphy")) @dataclass class GetOrCreateCallRequest(DataClassJsonMixin): - members_limit: int | None = dc_field( - default=None, metadata=dc_config(field_name="members_limit") - ) + members_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="members_limit")) # if provided it sends a notification event to the members for this call - notify: bool | None = dc_field( - default=None, metadata=dc_config(field_name="notify") - ) + notify: bool | None = dc_field(default=None, metadata=dc_config(field_name="notify")) # if provided it sends a ring event to the members for this call ring: bool | None = dc_field(default=None, metadata=dc_config(field_name="ring")) video: bool | None = dc_field(default=None, metadata=dc_config(field_name="video")) # CallRequest is the payload for creating a call. - data: "CallRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="data") - ) - + data: 'CallRequest | None' = dc_field(default=None, metadata=dc_config(field_name="data")) @dataclass class GetOrCreateCallResponse(DataClassJsonMixin): created: bool = dc_field(metadata=dc_config(field_name="created")) duration: str = dc_field(metadata=dc_config(field_name="duration")) - members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) - own_capabilities: "list[OwnCapability]" = dc_field( - metadata=dc_config(field_name="own_capabilities") - ) + members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + own_capabilities: 'list[OwnCapability]' = dc_field(metadata=dc_config(field_name="own_capabilities")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) - + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) @dataclass class GetOrCreateFeedGroupRequest(DataClassJsonMixin): - # Default visibility for the feed group, can be 'public', 'visible', 'followers', 'members', or 'private'. Defaults to 'visible' if not provided. - default_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="default_visibility") - ) + # Role new followers of feeds in this group are given. Either a built-in (feed_follower, feed_member_viewer) or any role your app has defined. Empty means feed_follower. Applied when the follow is accepted, so a follow that starts pending picks it up on approval + default_follower_role: str | None = dc_field(default=None, metadata=dc_config(field_name="default_follower_role")) + # Default visibility for the feed group, can be 'public', 'visible', 'followers', 'members', or 'private'. Defaults to 'visible' if not provided. + default_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="default_visibility")) # Configuration for activity processors - activity_processors: "list[ActivityProcessorConfig] | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_processors") - ) + activity_processors: 'list[ActivityProcessorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_processors")) # Configuration for activity selectors - activity_selectors: "list[ActivitySelectorConfig] | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_selectors") - ) - activity_filter: "ActivityFilterConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_filter") - ) - aggregation: "AggregationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="aggregation") - ) + activity_selectors: 'list[ActivitySelectorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_selectors")) + activity_filter: 'ActivityFilterConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_filter")) + activity_processing: 'ActivityProcessingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_processing")) + aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) # Custom data for the feed group - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - notification: "NotificationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="notification") - ) - push_notification: "PushNotificationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="push_notification") - ) - ranking: "RankingConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ranking") - ) - stories: "StoriesConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="stories") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + notification: 'NotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="notification")) + push_notification: 'PushNotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="push_notification")) + ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) + stories: 'StoriesConfig | None' = dc_field(default=None, metadata=dc_config(field_name="stories")) @dataclass class GetOrCreateFeedGroupResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Indicates whether the feed group was created (true) or already existed (false) was_created: bool = dc_field(metadata=dc_config(field_name="was_created")) - feed_group: "FeedGroupResponse" = dc_field( - metadata=dc_config(field_name="feed_group") - ) - + feed_group: 'FeedGroupResponse' = dc_field(metadata=dc_config(field_name="feed_group")) @dataclass class GetOrCreateFeedRequest(DataClassJsonMixin): - id_around: str | None = dc_field( - default=None, metadata=dc_config(field_name="id_around") - ) + id_around: str | None = dc_field(default=None, metadata=dc_config(field_name="id_around")) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) - overwrite_interest_weights: bool | None = dc_field( - default=None, metadata=dc_config(field_name="overwrite_interest_weights") - ) + overwrite_interest_weights: bool | None = dc_field(default=None, metadata=dc_config(field_name="overwrite_interest_weights")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) view: str | None = dc_field(default=None, metadata=dc_config(field_name="view")) watch: bool | None = dc_field(default=None, metadata=dc_config(field_name="watch")) - data: "FeedInput | None" = dc_field( - default=None, metadata=dc_config(field_name="data") - ) + data: 'FeedInput | None' = dc_field(default=None, metadata=dc_config(field_name="data")) # Options to skip specific enrichments to improve performance. Default is false (enrichments are included). Setting a field to true skips that enrichment. - enrichment_options: "EnrichmentOptions | None" = dc_field( - default=None, metadata=dc_config(field_name="enrichment_options") - ) - external_ranking: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="external_ranking") - ) - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) - followers_pagination: "PagerRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="followers_pagination") - ) - following_pagination: "PagerRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="following_pagination") - ) + enrichment_options: 'EnrichmentOptions | None' = dc_field(default=None, metadata=dc_config(field_name="enrichment_options")) + external_ranking: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="external_ranking")) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + followers_pagination: 'PagerRequest | None' = dc_field(default=None, metadata=dc_config(field_name="followers_pagination")) + following_pagination: 'PagerRequest | None' = dc_field(default=None, metadata=dc_config(field_name="following_pagination")) # Options to control fetching reactions from friends (users you follow or have mutual follows with). - friend_reactions_options: "FriendReactionsOptions | None" = dc_field( - default=None, metadata=dc_config(field_name="friend_reactions_options") - ) - interest_weights: "dict[str, float] | None" = dc_field( - default=None, metadata=dc_config(field_name="interest_weights") - ) - member_pagination: "PagerRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="member_pagination") - ) + friend_reactions_options: 'FriendReactionsOptions | None' = dc_field(default=None, metadata=dc_config(field_name="friend_reactions_options")) + interest_weights: 'dict[str, float] | None' = dc_field(default=None, metadata=dc_config(field_name="interest_weights")) + member_pagination: 'PagerRequest | None' = dc_field(default=None, metadata=dc_config(field_name="member_pagination")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class GetOrCreateFeedResponse(DataClassJsonMixin): created: bool = dc_field(metadata=dc_config(field_name="created")) # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - activities: "list[ActivityResponse]" = dc_field( - metadata=dc_config(field_name="activities") - ) - aggregated_activities: "list[AggregatedActivityResponse]" = dc_field( - metadata=dc_config(field_name="aggregated_activities") - ) - followers: "list[FollowResponse]" = dc_field( - metadata=dc_config(field_name="followers") - ) - following: "list[FollowResponse]" = dc_field( - metadata=dc_config(field_name="following") - ) - members: "list[FeedMemberResponse]" = dc_field( - metadata=dc_config(field_name="members") - ) - pinned_activities: "list[ActivityPinResponse]" = dc_field( - metadata=dc_config(field_name="pinned_activities") - ) - feed: "FeedResponse" = dc_field(metadata=dc_config(field_name="feed")) + activities: 'list[ActivityResponse]' = dc_field(metadata=dc_config(field_name="activities")) + aggregated_activities: 'list[AggregatedActivityResponse]' = dc_field(metadata=dc_config(field_name="aggregated_activities")) + followers: 'list[FollowResponse]' = dc_field(metadata=dc_config(field_name="followers")) + following: 'list[FollowResponse]' = dc_field(metadata=dc_config(field_name="following")) + members: 'list[FeedMemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + pinned_activities: 'list[ActivityPinResponse]' = dc_field(metadata=dc_config(field_name="pinned_activities")) + feed: 'FeedResponse' = dc_field(metadata=dc_config(field_name="feed")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - followers_pagination: "PagerResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="followers_pagination") - ) - following_pagination: "PagerResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="following_pagination") - ) - member_pagination: "PagerResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="member_pagination") - ) - notification_status: "NotificationStatusResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="notification_status") - ) - + followers_pagination: 'PagerResponse | None' = dc_field(default=None, metadata=dc_config(field_name="followers_pagination")) + following_pagination: 'PagerResponse | None' = dc_field(default=None, metadata=dc_config(field_name="following_pagination")) + member_pagination: 'PagerResponse | None' = dc_field(default=None, metadata=dc_config(field_name="member_pagination")) + notification_status: 'NotificationStatusResponse | None' = dc_field(default=None, metadata=dc_config(field_name="notification_status")) @dataclass class GetOrCreateFeedViewRequest(DataClassJsonMixin): # Configuration for selecting activities - activity_selectors: "list[ActivitySelectorConfig] | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_selectors") - ) - aggregation: "AggregationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="aggregation") - ) - ranking: "RankingConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ranking") - ) - + activity_selectors: 'list[ActivitySelectorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_selectors")) + aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) + ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) @dataclass class GetOrCreateFeedViewResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Indicates whether the feed view was newly created (true) or already existed (false) was_created: bool = dc_field(metadata=dc_config(field_name="was_created")) - feed_view: "FeedViewResponse" = dc_field(metadata=dc_config(field_name="feed_view")) - + feed_view: 'FeedViewResponse' = dc_field(metadata=dc_config(field_name="feed_view")) @dataclass class GetOrCreateFollowResponse(DataClassJsonMixin): # True if the follow was newly created by this request; false if it already existed created: bool = dc_field(metadata=dc_config(field_name="created")) duration: str = dc_field(metadata=dc_config(field_name="duration")) - follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) + follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) # Whether a notification activity was successfully created (only set when the follow was newly created) - notification_created: bool | None = dc_field( - default=None, metadata=dc_config(field_name="notification_created") - ) - + notification_created: bool | None = dc_field(default=None, metadata=dc_config(field_name="notification_created")) @dataclass class GetOrCreateUnfollowRequest(DataClassJsonMixin): @@ -14979,108 +7428,69 @@ class GetOrCreateUnfollowRequest(DataClassJsonMixin): # Fully qualified ID of the target feed target: str = dc_field(metadata=dc_config(field_name="target")) # Whether to delete the corresponding notification activity (default: false) - delete_notification_activity: bool | None = dc_field( - default=None, metadata=dc_config(field_name="delete_notification_activity") - ) + delete_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="delete_notification_activity")) # If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enrich_own_fields") - ) + enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) # When true, activities from the unfollowed feed will remain in the source feed's timeline (default: false) - keep_history: bool | None = dc_field( - default=None, metadata=dc_config(field_name="keep_history") - ) - + keep_history: bool | None = dc_field(default=None, metadata=dc_config(field_name="keep_history")) @dataclass class GetOrCreateUnfollowResponse(DataClassJsonMixin): # True if a follow was found and removed by this request; false if no follow existed deleted: bool = dc_field(metadata=dc_config(field_name="deleted")) duration: str = dc_field(metadata=dc_config(field_name="duration")) - follow: "FollowResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="follow") - ) - + follow: 'FollowResponse | None' = dc_field(default=None, metadata=dc_config(field_name="follow")) @dataclass class GetPinnedMessagesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Messages - messages: "list[MessageResponse]" = dc_field( - metadata=dc_config(field_name="messages") - ) - + messages: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="messages")) @dataclass class GetPredefinedFilterResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - predefined_filter: "PredefinedFilterResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="predefined_filter") - ) - + predefined_filter: 'PredefinedFilterResponse | None' = dc_field(default=None, metadata=dc_config(field_name="predefined_filter")) @dataclass class GetPushTemplatesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - templates: "list[PushTemplateResponse]" = dc_field( - metadata=dc_config(field_name="templates") - ) - + templates: 'list[PushTemplateResponse]' = dc_field(metadata=dc_config(field_name="templates")) @dataclass class GetRateLimitsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Map of endpoint rate limits for the Android platform - android: "dict[str, LimitInfoResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="android") - ) + android: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="android")) # Map of endpoint rate limits for the iOS platform - ios: "dict[str, LimitInfoResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="ios") - ) + ios: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="ios")) # Map of endpoint rate limits for the server-side platform - server_side: "dict[str, LimitInfoResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="server_side") - ) + server_side: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="server_side")) # Map of endpoint rate limits for the Unity platform - unity: "dict[str, LimitInfoResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="unity") - ) + unity: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="unity")) # Map of endpoint rate limits for the web platform - web: "dict[str, LimitInfoResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="web") - ) - + web: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="web")) @dataclass class GetReactionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of reactions - reactions: "list[ReactionResponse]" = dc_field( - metadata=dc_config(field_name="reactions") - ) - + reactions: 'list[ReactionResponse]' = dc_field(metadata=dc_config(field_name="reactions")) @dataclass class GetRepliesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - messages: "list[MessageResponse]" = dc_field( - metadata=dc_config(field_name="messages") - ) - + messages: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="messages")) @dataclass class GetRetentionPolicyResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - policies: "list[RetentionPolicy]" = dc_field( - metadata=dc_config(field_name="policies") - ) - + policies: 'list[RetentionPolicy]' = dc_field(metadata=dc_config(field_name="policies")) @dataclass class GetRetentionPolicyRunsRequest(DataClassJsonMixin): @@ -15088,165 +7498,96 @@ class GetRetentionPolicyRunsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_conditions") - ) - + filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) @dataclass class GetRetentionPolicyRunsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - runs: "list[RetentionRunResponse]" = dc_field(metadata=dc_config(field_name="runs")) + runs: 'list[RetentionRunResponse]' = dc_field(metadata=dc_config(field_name="runs")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class GetReviewQueueItemResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - item: "ReviewQueueItemResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="item") - ) - + item: 'ReviewQueueItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="item")) @dataclass class GetSegmentResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - segment: "SegmentResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="segment") - ) - + segment: 'SegmentResponse | None' = dc_field(default=None, metadata=dc_config(field_name="segment")) @dataclass class GetSetupSessionResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - setup_session: "SetupSession | None" = dc_field( - default=None, metadata=dc_config(field_name="setup_session") - ) - + setup_session: 'SetupSession | None' = dc_field(default=None, metadata=dc_config(field_name="setup_session")) @dataclass class GetTaskResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) duration: str = dc_field(metadata=dc_config(field_name="duration")) # Current status of task status: str = dc_field(metadata=dc_config(field_name="status")) # ID of task task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - error: "ErrorResult | None" = dc_field( - default=None, metadata=dc_config(field_name="error") - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + error: 'ErrorResult | None' = dc_field(default=None, metadata=dc_config(field_name="error")) # Result produced by task after completion - result: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="result") - ) - + result: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="result")) @dataclass class GetThreadResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - thread: "ThreadStateResponse" = dc_field(metadata=dc_config(field_name="thread")) - + thread: 'ThreadStateResponse' = dc_field(metadata=dc_config(field_name="thread")) @dataclass class GetUserGroupResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - user_group: "UserGroupResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user_group") - ) - + user_group: 'UserGroupResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) @dataclass class GetUserInterestsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Top-N interest tags sorted by descending count, then alphabetically by tag - interests: "list[InterestTagResponse]" = dc_field( - metadata=dc_config(field_name="interests") - ) - + interests: 'list[InterestTagResponse]' = dc_field(metadata=dc_config(field_name="interests")) @dataclass class GoLiveRequest(DataClassJsonMixin): - recording_storage_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="recording_storage_name") - ) - start_closed_caption: bool | None = dc_field( - default=None, metadata=dc_config(field_name="start_closed_caption") - ) - start_composite_recording: bool | None = dc_field( - default=None, metadata=dc_config(field_name="start_composite_recording") - ) - start_hls: bool | None = dc_field( - default=None, metadata=dc_config(field_name="start_hls") - ) - start_individual_recording: bool | None = dc_field( - default=None, metadata=dc_config(field_name="start_individual_recording") - ) - start_raw_recording: bool | None = dc_field( - default=None, metadata=dc_config(field_name="start_raw_recording") - ) - start_recording: bool | None = dc_field( - default=None, metadata=dc_config(field_name="start_recording") - ) - start_transcription: bool | None = dc_field( - default=None, metadata=dc_config(field_name="start_transcription") - ) - transcription_storage_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="transcription_storage_name") - ) - + recording_storage_name: str | None = dc_field(default=None, metadata=dc_config(field_name="recording_storage_name")) + start_closed_caption: bool | None = dc_field(default=None, metadata=dc_config(field_name="start_closed_caption")) + start_composite_recording: bool | None = dc_field(default=None, metadata=dc_config(field_name="start_composite_recording")) + start_hls: bool | None = dc_field(default=None, metadata=dc_config(field_name="start_hls")) + start_individual_recording: bool | None = dc_field(default=None, metadata=dc_config(field_name="start_individual_recording")) + start_raw_recording: bool | None = dc_field(default=None, metadata=dc_config(field_name="start_raw_recording")) + start_recording: bool | None = dc_field(default=None, metadata=dc_config(field_name="start_recording")) + start_transcription: bool | None = dc_field(default=None, metadata=dc_config(field_name="start_transcription")) + transcription_storage_name: str | None = dc_field(default=None, metadata=dc_config(field_name="transcription_storage_name")) @dataclass class GoLiveResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) - + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) @dataclass class GoogleVisionConfig(DataClassJsonMixin): - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) @dataclass class GroupedChannelsBucket(DataClassJsonMixin): # Channels returned for this bucket - channels: "list[ChannelStateResponseFields]" = dc_field( - metadata=dc_config(field_name="channels") - ) + channels: 'list[ChannelStateResponseFields]' = dc_field(metadata=dc_config(field_name="channels")) # Cursor for the next page of this group next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for the previous page of this group prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Unread channels currently classified into this bucket - unread_channels: int | None = dc_field( - default=None, metadata=dc_config(field_name="unread_channels") - ) - + unread_channels: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_channels")) @dataclass class GroupedChannelsGroupRequest(DataClassJsonMixin): @@ -15254,175 +7595,102 @@ class GroupedChannelsGroupRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class GroupedQueryChannelsRequest(DataClassJsonMixin): # Default max channels per group (default 10) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Groups to return, keyed by group name. Each group can define limit, next, or prev. 'next' and 'prev' cursors are only allowed when the request contains exactly one group; multi-group pagination is rejected. - groups: "dict[str, GroupedChannelsGroupRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="groups") - ) + groups: 'dict[str, GroupedChannelsGroupRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="groups")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class GroupedQueryChannelsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Predefined channel groups keyed by group name - groups: "dict[str, GroupedChannelsBucket]" = dc_field( - metadata=dc_config(field_name="groups") - ) - + groups: 'dict[str, GroupedChannelsBucket]' = dc_field(metadata=dc_config(field_name="groups")) @dataclass class GroupedStatsResponse(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) unique: int = dc_field(metadata=dc_config(field_name="unique")) - @dataclass class HLSSettings(DataClassJsonMixin): auto_on: bool = dc_field(metadata=dc_config(field_name="auto_on")) enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - quality_tracks: list[str] = dc_field( - metadata=dc_config(field_name="quality_tracks") - ) - layout: "LayoutSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="layout") - ) - + quality_tracks: list[str] = dc_field(metadata=dc_config(field_name="quality_tracks")) + layout: 'LayoutSettings | None' = dc_field(default=None, metadata=dc_config(field_name="layout")) @dataclass class HLSSettingsRequest(DataClassJsonMixin): # Quality tracks for HLS. One of: 360p, 480p, 720p, 1080p, 1440p, portrait-360x640, portrait-480x854, portrait-720x1280, portrait-1080x1920, portrait-1440x2560 - quality_tracks: list[str] = dc_field( - metadata=dc_config(field_name="quality_tracks") - ) + quality_tracks: list[str] = dc_field(metadata=dc_config(field_name="quality_tracks")) # Whether HLS broadcasting should start automatically - auto_on: bool | None = dc_field( - default=None, metadata=dc_config(field_name="auto_on") - ) + auto_on: bool | None = dc_field(default=None, metadata=dc_config(field_name="auto_on")) # Whether HLS broadcasting is enabled - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - layout: "LayoutSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="layout") - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + layout: 'LayoutSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="layout")) @dataclass class HLSSettingsResponse(DataClassJsonMixin): auto_on: bool = dc_field(metadata=dc_config(field_name="auto_on")) enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - quality_tracks: list[str] = dc_field( - metadata=dc_config(field_name="quality_tracks") - ) - layout: "LayoutSettingsResponse" = dc_field(metadata=dc_config(field_name="layout")) - + quality_tracks: list[str] = dc_field(metadata=dc_config(field_name="quality_tracks")) + layout: 'LayoutSettingsResponse' = dc_field(metadata=dc_config(field_name="layout")) @dataclass class HarmConfig(DataClassJsonMixin): - cooldown_period: int | None = dc_field( - default=None, metadata=dc_config(field_name="cooldown_period") - ) - severity: int | None = dc_field( - default=None, metadata=dc_config(field_name="severity") - ) - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - action_sequences: "list[ActionSequence] | None" = dc_field( - default=None, metadata=dc_config(field_name="action_sequences") - ) - harm_types: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="harm_types") - ) - + cooldown_period: int | None = dc_field(default=None, metadata=dc_config(field_name="cooldown_period")) + severity: int | None = dc_field(default=None, metadata=dc_config(field_name="severity")) + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + action_sequences: 'list[ActionSequence] | None' = dc_field(default=None, metadata=dc_config(field_name="action_sequences")) + harm_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_types")) @dataclass class HideChannelRequest(DataClassJsonMixin): # Whether to clear message history of the channel or not - clear_history: bool | None = dc_field( - default=None, metadata=dc_config(field_name="clear_history") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + clear_history: bool | None = dc_field(default=None, metadata=dc_config(field_name="clear_history")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class HideChannelResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class HuaweiConfig(DataClassJsonMixin): - disabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="Disabled") - ) + disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="Disabled")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) secret: str | None = dc_field(default=None, metadata=dc_config(field_name="secret")) - @dataclass class HuaweiConfigFields(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) secret: str | None = dc_field(default=None, metadata=dc_config(field_name="secret")) - @dataclass class IPContentCountRuleParameters(DataClassJsonMixin): - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - time_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="time_window") - ) - + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) @dataclass class IPFlagCountRuleParameters(DataClassJsonMixin): - severity: str | None = dc_field( - default=None, metadata=dc_config(field_name="severity") - ) - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - time_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="time_window") - ) - harm_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="harm_labels") - ) - + severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) + harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) @dataclass class ImageContentParameters(DataClassJsonMixin): - label_operator: str | None = dc_field( - default=None, metadata=dc_config(field_name="label_operator") - ) - min_confidence: float | None = dc_field( - default=None, metadata=dc_config(field_name="min_confidence") - ) - harm_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="harm_labels") - ) - + label_operator: str | None = dc_field(default=None, metadata=dc_config(field_name="label_operator")) + min_confidence: float | None = dc_field(default=None, metadata=dc_config(field_name="min_confidence")) + harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) @dataclass class ImageData(DataClassJsonMixin): @@ -15432,22 +7700,12 @@ class ImageData(DataClassJsonMixin): url: str = dc_field(metadata=dc_config(field_name="url")) width: str = dc_field(metadata=dc_config(field_name="width")) - @dataclass class ImageRuleParameters(DataClassJsonMixin): - min_confidence: float | None = dc_field( - default=None, metadata=dc_config(field_name="min_confidence") - ) - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - time_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="time_window") - ) - harm_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="harm_labels") - ) - + min_confidence: float | None = dc_field(default=None, metadata=dc_config(field_name="min_confidence")) + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) + harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) @dataclass class ImageSize(DataClassJsonMixin): @@ -15460,59 +7718,36 @@ class ImageSize(DataClassJsonMixin): # Target image width width: int | None = dc_field(default=None, metadata=dc_config(field_name="width")) - @dataclass class ImageUploadRequest(DataClassJsonMixin): file: str | None = dc_field(default=None, metadata=dc_config(field_name="file")) # field with JSON-encoded array of image size configurations - upload_sizes: "list[ImageSize] | None" = dc_field( - default=None, metadata=dc_config(field_name="upload_sizes") - ) - user: "OnlyUserID | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + upload_sizes: 'list[ImageSize] | None' = dc_field(default=None, metadata=dc_config(field_name="upload_sizes")) + user: 'OnlyUserID | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ImageUploadResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) file: str | None = dc_field(default=None, metadata=dc_config(field_name="file")) - thumb_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="thumb_url") - ) + thumb_url: str | None = dc_field(default=None, metadata=dc_config(field_name="thumb_url")) # Array of image size configurations - upload_sizes: "list[ImageSize] | None" = dc_field( - default=None, metadata=dc_config(field_name="upload_sizes") - ) - + upload_sizes: 'list[ImageSize] | None' = dc_field(default=None, metadata=dc_config(field_name="upload_sizes")) @dataclass class Images(DataClassJsonMixin): - fixed_height: "ImageData" = dc_field(metadata=dc_config(field_name="fixed_height")) - fixed_height_downsampled: "ImageData" = dc_field( - metadata=dc_config(field_name="fixed_height_downsampled") - ) - fixed_height_still: "ImageData" = dc_field( - metadata=dc_config(field_name="fixed_height_still") - ) - fixed_width: "ImageData" = dc_field(metadata=dc_config(field_name="fixed_width")) - fixed_width_downsampled: "ImageData" = dc_field( - metadata=dc_config(field_name="fixed_width_downsampled") - ) - fixed_width_still: "ImageData" = dc_field( - metadata=dc_config(field_name="fixed_width_still") - ) - original: "ImageData" = dc_field(metadata=dc_config(field_name="original")) - + fixed_height: 'ImageData' = dc_field(metadata=dc_config(field_name="fixed_height")) + fixed_height_downsampled: 'ImageData' = dc_field(metadata=dc_config(field_name="fixed_height_downsampled")) + fixed_height_still: 'ImageData' = dc_field(metadata=dc_config(field_name="fixed_height_still")) + fixed_width: 'ImageData' = dc_field(metadata=dc_config(field_name="fixed_width")) + fixed_width_downsampled: 'ImageData' = dc_field(metadata=dc_config(field_name="fixed_width_downsampled")) + fixed_width_still: 'ImageData' = dc_field(metadata=dc_config(field_name="fixed_width_still")) + original: 'ImageData' = dc_field(metadata=dc_config(field_name="original")) @dataclass class ImportBlockListRequest(DataClassJsonMixin): items: list[str] = dc_field(metadata=dc_config(field_name="items")) - chunk_size: int | None = dc_field( - default=None, metadata=dc_config(field_name="chunk_size") - ) - + chunk_size: int | None = dc_field(default=None, metadata=dc_config(field_name="chunk_size")) @dataclass class ImportBlockListResponse(DataClassJsonMixin): @@ -15520,96 +7755,42 @@ class ImportBlockListResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - @dataclass class ImportTask(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) id: str = dc_field(metadata=dc_config(field_name="id")) mode: str = dc_field(metadata=dc_config(field_name="mode")) path: str = dc_field(metadata=dc_config(field_name="path")) state: str = dc_field(metadata=dc_config(field_name="state")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - history: "list[ImportTaskHistory]" = dc_field( - metadata=dc_config(field_name="history") - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + history: 'list[ImportTaskHistory]' = dc_field(metadata=dc_config(field_name="history")) size: int | None = dc_field(default=None, metadata=dc_config(field_name="size")) - @dataclass class ImportTaskHistory(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) next_state: str = dc_field(metadata=dc_config(field_name="next_state")) prev_state: str = dc_field(metadata=dc_config(field_name="prev_state")) - @dataclass class ImportV2TaskItem(DataClassJsonMixin): app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) id: str = dc_field(metadata=dc_config(field_name="id")) product: str = dc_field(metadata=dc_config(field_name="product")) state: int = dc_field(metadata=dc_config(field_name="state")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - settings: "ImportV2TaskSettings" = dc_field( - metadata=dc_config(field_name="settings") - ) - result: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="result") - ) - + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + settings: 'ImportV2TaskSettings' = dc_field(metadata=dc_config(field_name="settings")) + result: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="result")) @dataclass class ImportV2TaskSettings(DataClassJsonMixin): - merge_custom: bool | None = dc_field( - default=None, metadata=dc_config(field_name="merge_custom") - ) + merge_custom: bool | None = dc_field(default=None, metadata=dc_config(field_name="merge_custom")) mode: str | None = dc_field(default=None, metadata=dc_config(field_name="mode")) path: str | None = dc_field(default=None, metadata=dc_config(field_name="path")) - skip_references_check: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_references_check") - ) - use_import_time_as_op_time: bool | None = dc_field( - default=None, metadata=dc_config(field_name="use_import_time_as_op_time") - ) - s3: "ImportV2TaskSettingsS3 | None" = dc_field( - default=None, metadata=dc_config(field_name="s3") - ) - + skip_references_check: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_references_check")) + use_import_time_as_op_time: bool | None = dc_field(default=None, metadata=dc_config(field_name="use_import_time_as_op_time")) + s3: 'ImportV2TaskSettingsS3 | None' = dc_field(default=None, metadata=dc_config(field_name="s3")) @dataclass class ImportV2TaskSettingsS3(DataClassJsonMixin): @@ -15617,47 +7798,33 @@ class ImportV2TaskSettingsS3(DataClassJsonMixin): dir: str | None = dc_field(default=None, metadata=dc_config(field_name="dir")) region: str | None = dc_field(default=None, metadata=dc_config(field_name="region")) - @dataclass class Incident(DataClassJsonMixin): _from: str = dc_field(metadata=dc_config(field_name="from")) peak_concurrency: int = dc_field(metadata=dc_config(field_name="peak_concurrency")) to: str = dc_field(metadata=dc_config(field_name="to")) - viewers_interrupted: int = dc_field( - metadata=dc_config(field_name="viewers_interrupted") - ) - + viewers_interrupted: int = dc_field(metadata=dc_config(field_name="viewers_interrupted")) @dataclass class IndividualRecordSettings(DataClassJsonMixin): mode: str = dc_field(metadata=dc_config(field_name="mode")) - output_types: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="output_types") - ) - + output_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="output_types")) @dataclass class IndividualRecordingResponse(DataClassJsonMixin): status: str = dc_field(metadata=dc_config(field_name="status")) - @dataclass class IndividualRecordingSettingsRequest(DataClassJsonMixin): # Recording mode. One of: available, disabled, auto-on mode: str = dc_field(metadata=dc_config(field_name="mode")) # Output types to include: audio_only, video_only, audio_video, screenshare_audio_only, screenshare_video_only, screenshare_audio_video - output_types: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="output_types") - ) - + output_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="output_types")) @dataclass class IndividualRecordingSettingsResponse(DataClassJsonMixin): mode: str = dc_field(metadata=dc_config(field_name="mode")) - output_types: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="output_types") - ) - + output_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="output_types")) @dataclass class IngressAudioEncodingOptions(DataClassJsonMixin): @@ -15665,15 +7832,11 @@ class IngressAudioEncodingOptions(DataClassJsonMixin): channels: int = dc_field(metadata=dc_config(field_name="channels")) enable_dtx: bool = dc_field(metadata=dc_config(field_name="enable_dtx")) - @dataclass class IngressAudioEncodingOptionsRequest(DataClassJsonMixin): bitrate: int = dc_field(metadata=dc_config(field_name="bitrate")) channels: int = dc_field(metadata=dc_config(field_name="channels")) - enable_dtx: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enable_dtx") - ) - + enable_dtx: bool | None = dc_field(default=None, metadata=dc_config(field_name="enable_dtx")) @dataclass class IngressAudioEncodingResponse(DataClassJsonMixin): @@ -15681,24 +7844,14 @@ class IngressAudioEncodingResponse(DataClassJsonMixin): channels: int = dc_field(metadata=dc_config(field_name="channels")) enable_dtx: bool = dc_field(metadata=dc_config(field_name="enable_dtx")) - @dataclass class IngressErrorEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Human-readable error message error: str = dc_field(metadata=dc_config(field_name="error")) # Unique identifier for the stream - ingress_stream_id: str = dc_field( - metadata=dc_config(field_name="ingress_stream_id") - ) + ingress_stream_id: str = dc_field(metadata=dc_config(field_name="ingress_stream_id")) # User who was streaming user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # The type of event: "ingress.error" in this case @@ -15706,41 +7859,23 @@ class IngressErrorEvent(DataClassJsonMixin): # Error code code: str | None = dc_field(default=None, metadata=dc_config(field_name="code")) - @dataclass class IngressSettings(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - audio_encoding_options: "IngressAudioEncodingOptions | None" = dc_field( - default=None, metadata=dc_config(field_name="audio_encoding_options") - ) - video_encoding_options: "dict[str, IngressVideoEncodingOptions] | None" = dc_field( - default=None, metadata=dc_config(field_name="video_encoding_options") - ) - + audio_encoding_options: 'IngressAudioEncodingOptions | None' = dc_field(default=None, metadata=dc_config(field_name="audio_encoding_options")) + video_encoding_options: 'dict[str, IngressVideoEncodingOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="video_encoding_options")) @dataclass class IngressSettingsRequest(DataClassJsonMixin): - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - audio_encoding_options: "IngressAudioEncodingOptionsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="audio_encoding_options") - ) - video_encoding_options: "dict[str, IngressVideoEncodingOptionsRequest] | None" = ( - dc_field(default=None, metadata=dc_config(field_name="video_encoding_options")) - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + audio_encoding_options: 'IngressAudioEncodingOptionsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="audio_encoding_options")) + video_encoding_options: 'dict[str, IngressVideoEncodingOptionsRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="video_encoding_options")) @dataclass class IngressSettingsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - audio_encoding_options: "IngressAudioEncodingResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="audio_encoding_options") - ) - video_encoding_options: "dict[str, IngressVideoEncodingResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="video_encoding_options") - ) - + audio_encoding_options: 'IngressAudioEncodingResponse | None' = dc_field(default=None, metadata=dc_config(field_name="audio_encoding_options")) + video_encoding_options: 'dict[str, IngressVideoEncodingResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="video_encoding_options")) @dataclass class IngressSource(DataClassJsonMixin): @@ -15748,106 +7883,62 @@ class IngressSource(DataClassJsonMixin): height: int = dc_field(metadata=dc_config(field_name="height")) width: int = dc_field(metadata=dc_config(field_name="width")) - @dataclass class IngressSourceRequest(DataClassJsonMixin): fps: int = dc_field(metadata=dc_config(field_name="fps")) height: int = dc_field(metadata=dc_config(field_name="height")) width: int = dc_field(metadata=dc_config(field_name="width")) - @dataclass class IngressSourceResponse(DataClassJsonMixin): fps: int = dc_field(metadata=dc_config(field_name="fps")) height: int = dc_field(metadata=dc_config(field_name="height")) width: int = dc_field(metadata=dc_config(field_name="width")) - @dataclass class IngressStartedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Unique identifier for this stream - ingress_stream_id: str = dc_field( - metadata=dc_config(field_name="ingress_stream_id") - ) + ingress_stream_id: str = dc_field(metadata=dc_config(field_name="ingress_stream_id")) # Streaming protocol (e.g., 'rtmps', 'srt', 'rtmp', 'rtsp') publisher_type: str = dc_field(metadata=dc_config(field_name="publisher_type")) # User who started the stream user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # The type of event: "ingress.started" in this case - type: str = dc_field( - default="ingress.started", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="ingress.started", metadata=dc_config(field_name="type")) # Client IP address - client_ip: str | None = dc_field( - default=None, metadata=dc_config(field_name="client_ip") - ) + client_ip: str | None = dc_field(default=None, metadata=dc_config(field_name="client_ip")) # Streaming client software name (e.g., 'OBS Studio') - client_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="client_name") - ) + client_name: str | None = dc_field(default=None, metadata=dc_config(field_name="client_name")) # Client software version - version: str | None = dc_field( - default=None, metadata=dc_config(field_name="version") - ) - + version: str | None = dc_field(default=None, metadata=dc_config(field_name="version")) @dataclass class IngressStoppedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Unique identifier for the stream - ingress_stream_id: str = dc_field( - metadata=dc_config(field_name="ingress_stream_id") - ) + ingress_stream_id: str = dc_field(metadata=dc_config(field_name="ingress_stream_id")) # User who was streaming user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # The type of event: "ingress.stopped" in this case - type: str = dc_field( - default="ingress.stopped", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="ingress.stopped", metadata=dc_config(field_name="type")) @dataclass class IngressVideoEncodingOptions(DataClassJsonMixin): - layers: "list[IngressVideoLayer]" = dc_field( - metadata=dc_config(field_name="layers") - ) - source: "IngressSource | None" = dc_field( - default=None, metadata=dc_config(field_name="source") - ) - + layers: 'list[IngressVideoLayer]' = dc_field(metadata=dc_config(field_name="layers")) + source: 'IngressSource | None' = dc_field(default=None, metadata=dc_config(field_name="source")) @dataclass class IngressVideoEncodingOptionsRequest(DataClassJsonMixin): - layers: "list[IngressVideoLayerRequest]" = dc_field( - metadata=dc_config(field_name="layers") - ) - source: "IngressSourceRequest" = dc_field(metadata=dc_config(field_name="source")) - + layers: 'list[IngressVideoLayerRequest]' = dc_field(metadata=dc_config(field_name="layers")) + source: 'IngressSourceRequest' = dc_field(metadata=dc_config(field_name="source")) @dataclass class IngressVideoEncodingResponse(DataClassJsonMixin): - layers: "list[IngressVideoLayerResponse]" = dc_field( - metadata=dc_config(field_name="layers") - ) - source: "IngressSourceResponse" = dc_field(metadata=dc_config(field_name="source")) - + layers: 'list[IngressVideoLayerResponse]' = dc_field(metadata=dc_config(field_name="layers")) + source: 'IngressSourceResponse' = dc_field(metadata=dc_config(field_name="source")) @dataclass class IngressVideoLayer(DataClassJsonMixin): @@ -15857,7 +7948,6 @@ class IngressVideoLayer(DataClassJsonMixin): max_dimension: int = dc_field(metadata=dc_config(field_name="max_dimension")) min_dimension: int = dc_field(metadata=dc_config(field_name="min_dimension")) - @dataclass class IngressVideoLayerRequest(DataClassJsonMixin): bitrate: int = dc_field(metadata=dc_config(field_name="bitrate")) @@ -15866,7 +7956,6 @@ class IngressVideoLayerRequest(DataClassJsonMixin): max_dimension: int = dc_field(metadata=dc_config(field_name="max_dimension")) min_dimension: int = dc_field(metadata=dc_config(field_name="min_dimension")) - @dataclass class IngressVideoLayerResponse(DataClassJsonMixin): bitrate: int = dc_field(metadata=dc_config(field_name="bitrate")) @@ -15875,15 +7964,12 @@ class IngressVideoLayerResponse(DataClassJsonMixin): max_dimension: int = dc_field(metadata=dc_config(field_name="max_dimension")) min_dimension: int = dc_field(metadata=dc_config(field_name="min_dimension")) - @dataclass class InsertActionLogRequest(DataClassJsonMixin): # Type of moderation action taken action_type: str = dc_field(metadata=dc_config(field_name="action_type")) # ID of the user who created the entity - entity_creator_id: str = dc_field( - metadata=dc_config(field_name="entity_creator_id") - ) + entity_creator_id: str = dc_field(metadata=dc_config(field_name="entity_creator_id")) # ID of the entity the action was taken on entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) # Type of entity the action was taken on @@ -15891,24 +7977,16 @@ class InsertActionLogRequest(DataClassJsonMixin): # Reason for the action reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) # Type of reporter; 'api_integration' when the action was triggered by an API integration call with no authenticated user - reporter_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="reporter_type") - ) + reporter_type: str | None = dc_field(default=None, metadata=dc_config(field_name="reporter_type")) # ID of the user who triggered the action; empty for automated actions - reporter_user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="reporter_user_id") - ) + reporter_user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="reporter_user_id")) # Custom metadata for the action log - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class InsertActionLogResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class InterestTagResponse(DataClassJsonMixin): # Number of distinct reacted-to activities tagged with this value @@ -15916,61 +7994,32 @@ class InterestTagResponse(DataClassJsonMixin): # The interest tag value tag: str = dc_field(metadata=dc_config(field_name="tag")) - @dataclass class JoinCallAPIMetrics(DataClassJsonMixin): failures: float = dc_field(metadata=dc_config(field_name="failures")) total: float = dc_field(metadata=dc_config(field_name="total")) - latency: "ActiveCallsLatencyStats | None" = dc_field( - default=None, metadata=dc_config(field_name="latency") - ) - + latency: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="latency")) @dataclass class Joins(DataClassJsonMixin): reason: str = dc_field(metadata=dc_config(field_name="reason")) - disconnect_reasons: "dict[str, int]" = dc_field( - metadata=dc_config(field_name="disconnect_reasons") - ) - failure_stages: "dict[str, int]" = dc_field( - metadata=dc_config(field_name="failure_stages") - ) - join_attempts: int | None = dc_field( - default=None, metadata=dc_config(field_name="join_attempts") - ) - join_success_rate: float | None = dc_field( - default=None, metadata=dc_config(field_name="join_success_rate") - ) - + disconnect_reasons: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="disconnect_reasons")) + failure_stages: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="failure_stages")) + join_attempts: int | None = dc_field(default=None, metadata=dc_config(field_name="join_attempts")) + join_success_rate: float | None = dc_field(default=None, metadata=dc_config(field_name="join_success_rate")) @dataclass class KeyframeOCRRuleParameters(DataClassJsonMixin): - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - time_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="time_window") - ) - harm_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="harm_labels") - ) - + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) + harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) @dataclass class KeyframeRuleParameters(DataClassJsonMixin): - min_confidence: float | None = dc_field( - default=None, metadata=dc_config(field_name="min_confidence") - ) - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - time_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="time_window") - ) - harm_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="harm_labels") - ) - + min_confidence: float | None = dc_field(default=None, metadata=dc_config(field_name="min_confidence")) + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) + harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) @dataclass class KickUserRequest(DataClassJsonMixin): @@ -15979,83 +8028,46 @@ class KickUserRequest(DataClassJsonMixin): # If true, also block the user from rejoining the call block: bool | None = dc_field(default=None, metadata=dc_config(field_name="block")) # Server-side: ID of the user performing the action - kicked_by_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="kicked_by_id") - ) + kicked_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="kicked_by_id")) # User request object - kicked_by: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="kicked_by") - ) - + kicked_by: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="kicked_by")) @dataclass class KickUserResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class KickedUserEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.kicked_user" in this case - type: str = dc_field( - default="call.kicked_user", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="call.kicked_user", metadata=dc_config(field_name="type")) # User response object - kicked_by_user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="kicked_by_user") - ) - + kicked_by_user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="kicked_by_user")) @dataclass class LLMConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - app_context: str | None = dc_field( - default=None, metadata=dc_config(field_name="app_context") - ) - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - rules: "list[LLMRule] | None" = dc_field( - default=None, metadata=dc_config(field_name="rules") - ) - severity_descriptions: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="severity_descriptions") - ) - + app_context: str | None = dc_field(default=None, metadata=dc_config(field_name="app_context")) + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + rules: 'list[LLMRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) + severity_descriptions: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="severity_descriptions")) @dataclass class LLMRule(DataClassJsonMixin): label: str = dc_field(metadata=dc_config(field_name="label")) action: str | None = dc_field(default=None, metadata=dc_config(field_name="action")) - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) - severity_rules: "list[BodyguardSeverityRule] | None" = dc_field( - default=None, metadata=dc_config(field_name="severity_rules") - ) - + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + severity_rules: 'list[BodyguardSeverityRule] | None' = dc_field(default=None, metadata=dc_config(field_name="severity_rules")) @dataclass class LabelResponse(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) - harm_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="harm_labels") - ) - phrase_list_ids: "list[int] | None" = dc_field( - default=None, metadata=dc_config(field_name="phrase_list_ids") - ) - + harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) + phrase_list_ids: 'list[int] | None' = dc_field(default=None, metadata=dc_config(field_name="phrase_list_ids")) @dataclass class LabelResultResponse(DataClassJsonMixin): @@ -16065,14 +8077,7 @@ class LabelResultResponse(DataClassJsonMixin): content: str = dc_field(metadata=dc_config(field_name="content")) content_type: str = dc_field(metadata=dc_config(field_name="content_type")) # Timestamp - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # High-level harm category harm_type: str = dc_field(metadata=dc_config(field_name="harm_type")) # Unique identifier @@ -16080,35 +8085,22 @@ class LabelResultResponse(DataClassJsonMixin): # Detected language language: str = dc_field(metadata=dc_config(field_name="language")) # Provider recommended action - recommended_action: str = dc_field( - metadata=dc_config(field_name="recommended_action") - ) + recommended_action: str = dc_field(metadata=dc_config(field_name="recommended_action")) # Severity level severity: str = dc_field(metadata=dc_config(field_name="severity")) # Moderation labels labels: list[str] = dc_field(metadata=dc_config(field_name="labels")) # Customer-supplied identifier for the moderated content - content_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="content_id") - ) + content_id: str | None = dc_field(default=None, metadata=dc_config(field_name="content_id")) # Who the content is directed at (USER, GROUP, EVERYONE, NONE, etc.) - directed_at: str | None = dc_field( - default=None, metadata=dc_config(field_name="directed_at") - ) + directed_at: str | None = dc_field(default=None, metadata=dc_config(field_name="directed_at")) # The stored content with every non-whitespace character masked. Present only when recommended_action is not 'keep'. Derived at runtime and never stored. - fully_masked_content: str | None = dc_field( - default=None, metadata=dc_config(field_name="fully_masked_content") - ) + fully_masked_content: str | None = dc_field(default=None, metadata=dc_config(field_name="fully_masked_content")) # Content with blocklisted tokens masked (when a blocklist rule with action=mask rewrote the original) - masked_content: str | None = dc_field( - default=None, metadata=dc_config(field_name="masked_content") - ) + masked_content: str | None = dc_field(default=None, metadata=dc_config(field_name="masked_content")) policy: str | None = dc_field(default=None, metadata=dc_config(field_name="policy")) # Customer-supplied user identifier for the content author - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) @dataclass class LabelThresholds(DataClassJsonMixin): @@ -16117,118 +8109,68 @@ class LabelThresholds(DataClassJsonMixin): # Threshold for automatic message flag flag: float | None = dc_field(default=None, metadata=dc_config(field_name="flag")) - @dataclass class LabelsRequest(DataClassJsonMixin): # Content to moderate content: str = dc_field(metadata=dc_config(field_name="content")) # Optional category for filtering (max 128 chars) - category: str | None = dc_field( - default=None, metadata=dc_config(field_name="category") - ) + category: str | None = dc_field(default=None, metadata=dc_config(field_name="category")) # Customer-supplied identifier for the moderated content, for tracing - content_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="content_id") - ) + content_id: str | None = dc_field(default=None, metadata=dc_config(field_name="content_id")) # Type of content: 'text' (default), 'message', or 'username'. Stored as-sent; only 'username' routes to the username moderation API. - content_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="content_type") - ) + content_type: str | None = dc_field(default=None, metadata=dc_config(field_name="content_type")) # When true, run moderation and return labels without persisting the result. Useful for one-off checks (e.g. UI testers) that should not be recorded in the stored history. - dry_run: bool | None = dc_field( - default=None, metadata=dc_config(field_name="dry_run") - ) + dry_run: bool | None = dc_field(default=None, metadata=dc_config(field_name="dry_run")) # Optional moderation policy key (max 128 chars). For username moderation, set this to a policy whose key starts with 'username:' (e.g. 'username:default') to opt into the low-latency fast-path: blocklists (customer + Stream-managed defaults) short-circuit the LLM, and the LLM fallback uses gpt-4.1-nano with a 24h Valkey verdict cache. Without a 'username:' prefix the request falls through to the standard Bodyguard Analyze v1 username path. policy: str | None = dc_field(default=None, metadata=dc_config(field_name="policy")) # Optional customer-supplied user identifier for the content author (max 256 chars). Enables filtering stored results by user_id. - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) @dataclass class LabelsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Provider recommended action - recommended_action: str = dc_field( - metadata=dc_config(field_name="recommended_action") - ) + recommended_action: str = dc_field(metadata=dc_config(field_name="recommended_action")) # Customer-supplied identifier for the moderated content, for tracing - content_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="content_id") - ) + content_id: str | None = dc_field(default=None, metadata=dc_config(field_name="content_id")) # Who the content is directed at (USER, GROUP, EVERYONE, NONE, etc.), when the provider exposes it - directed_at: str | None = dc_field( - default=None, metadata=dc_config(field_name="directed_at") - ) + directed_at: str | None = dc_field(default=None, metadata=dc_config(field_name="directed_at")) # The original content with every non-whitespace character masked. Present only when recommended_action is not 'keep'. Derived at runtime and never stored. - fully_masked_content: str | None = dc_field( - default=None, metadata=dc_config(field_name="fully_masked_content") - ) + fully_masked_content: str | None = dc_field(default=None, metadata=dc_config(field_name="fully_masked_content")) # High-level harm category - harm_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="harm_type") - ) + harm_type: str | None = dc_field(default=None, metadata=dc_config(field_name="harm_type")) # Detected language - language: str | None = dc_field( - default=None, metadata=dc_config(field_name="language") - ) + language: str | None = dc_field(default=None, metadata=dc_config(field_name="language")) # Content with blocklisted tokens masked or substituted. Present only when a blocklist rewrote the original content. - masked_content: str | None = dc_field( - default=None, metadata=dc_config(field_name="masked_content") - ) + masked_content: str | None = dc_field(default=None, metadata=dc_config(field_name="masked_content")) # Severity level - severity: str | None = dc_field( - default=None, metadata=dc_config(field_name="severity") - ) + severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) # Moderation labels detected - labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="labels") - ) - + labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="labels")) @dataclass class LayoutSettings(DataClassJsonMixin): external_app_url: str = dc_field(metadata=dc_config(field_name="external_app_url")) external_css_url: str = dc_field(metadata=dc_config(field_name="external_css_url")) name: str = dc_field(metadata=dc_config(field_name="name")) - detect_orientation: bool | None = dc_field( - default=None, metadata=dc_config(field_name="detect_orientation") - ) - options: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="options") - ) - + detect_orientation: bool | None = dc_field(default=None, metadata=dc_config(field_name="detect_orientation")) + options: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="options")) @dataclass class LayoutSettingsRequest(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) - detect_orientation: bool | None = dc_field( - default=None, metadata=dc_config(field_name="detect_orientation") - ) - external_app_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="external_app_url") - ) - external_css_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="external_css_url") - ) - options: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="options") - ) - + detect_orientation: bool | None = dc_field(default=None, metadata=dc_config(field_name="detect_orientation")) + external_app_url: str | None = dc_field(default=None, metadata=dc_config(field_name="external_app_url")) + external_css_url: str | None = dc_field(default=None, metadata=dc_config(field_name="external_css_url")) + options: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="options")) @dataclass class LayoutSettingsResponse(DataClassJsonMixin): external_app_url: str = dc_field(metadata=dc_config(field_name="external_app_url")) external_css_url: str = dc_field(metadata=dc_config(field_name="external_css_url")) name: str = dc_field(metadata=dc_config(field_name="name")) - detect_orientation: bool | None = dc_field( - default=None, metadata=dc_config(field_name="detect_orientation") - ) - options: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="options") - ) - + detect_orientation: bool | None = dc_field(default=None, metadata=dc_config(field_name="detect_orientation")) + options: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="options")) @dataclass class LimitInfoResponse(DataClassJsonMixin): @@ -16239,231 +8181,147 @@ class LimitInfoResponse(DataClassJsonMixin): # The Unix timestamp when the rate limit resets reset: int = dc_field(metadata=dc_config(field_name="reset")) - @dataclass class LimitsSettings(DataClassJsonMixin): - max_participants_exclude_roles: list[str] = dc_field( - metadata=dc_config(field_name="max_participants_exclude_roles") - ) - max_duration_seconds: int | None = dc_field( - default=None, metadata=dc_config(field_name="max_duration_seconds") - ) - max_participants: int | None = dc_field( - default=None, metadata=dc_config(field_name="max_participants") - ) - max_participants_exclude_owner: bool | None = dc_field( - default=None, metadata=dc_config(field_name="max_participants_exclude_owner") - ) - + max_participants_exclude_roles: list[str] = dc_field(metadata=dc_config(field_name="max_participants_exclude_roles")) + max_duration_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="max_duration_seconds")) + max_participants: int | None = dc_field(default=None, metadata=dc_config(field_name="max_participants")) + max_participants_exclude_owner: bool | None = dc_field(default=None, metadata=dc_config(field_name="max_participants_exclude_owner")) @dataclass class LimitsSettingsRequest(DataClassJsonMixin): - max_duration_seconds: int | None = dc_field( - default=None, metadata=dc_config(field_name="max_duration_seconds") - ) - max_participants: int | None = dc_field( - default=None, metadata=dc_config(field_name="max_participants") - ) - max_participants_exclude_owner: bool | None = dc_field( - default=None, metadata=dc_config(field_name="max_participants_exclude_owner") - ) - max_participants_exclude_roles: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="max_participants_exclude_roles") - ) - + max_duration_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="max_duration_seconds")) + max_participants: int | None = dc_field(default=None, metadata=dc_config(field_name="max_participants")) + max_participants_exclude_owner: bool | None = dc_field(default=None, metadata=dc_config(field_name="max_participants_exclude_owner")) + max_participants_exclude_roles: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="max_participants_exclude_roles")) @dataclass class LimitsSettingsResponse(DataClassJsonMixin): - max_participants_exclude_roles: list[str] = dc_field( - metadata=dc_config(field_name="max_participants_exclude_roles") - ) - max_duration_seconds: int | None = dc_field( - default=None, metadata=dc_config(field_name="max_duration_seconds") - ) - max_participants: int | None = dc_field( - default=None, metadata=dc_config(field_name="max_participants") - ) - max_participants_exclude_owner: bool | None = dc_field( - default=None, metadata=dc_config(field_name="max_participants_exclude_owner") - ) - + max_participants_exclude_roles: list[str] = dc_field(metadata=dc_config(field_name="max_participants_exclude_roles")) + max_duration_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="max_duration_seconds")) + max_participants: int | None = dc_field(default=None, metadata=dc_config(field_name="max_participants")) + max_participants_exclude_owner: bool | None = dc_field(default=None, metadata=dc_config(field_name="max_participants_exclude_owner")) @dataclass class ListBlockListResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - blocklists: "list[BlockListResponse]" = dc_field( - metadata=dc_config(field_name="blocklists") - ) - next_cursor: str | None = dc_field( - default=None, metadata=dc_config(field_name="next_cursor") - ) - + blocklists: 'list[BlockListResponse]' = dc_field(metadata=dc_config(field_name="blocklists")) + next_cursor: str | None = dc_field(default=None, metadata=dc_config(field_name="next_cursor")) @dataclass class ListCallTypeResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - call_types: "dict[str, CallTypeResponse]" = dc_field( - metadata=dc_config(field_name="call_types") - ) - + call_types: 'dict[str, CallTypeResponse]' = dc_field(metadata=dc_config(field_name="call_types")) @dataclass class ListChannelTypesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Object with all channel types - channel_types: "dict[str, ChannelTypeConfig | None]" = dc_field( - metadata=dc_config(field_name="channel_types") - ) - + channel_types: 'dict[str, ChannelTypeConfig | None]' = dc_field(metadata=dc_config(field_name="channel_types")) @dataclass class ListCommandsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of commands - commands: "list[Command]" = dc_field(metadata=dc_config(field_name="commands")) - + commands: 'list[Command]' = dc_field(metadata=dc_config(field_name="commands")) @dataclass class ListDevicesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of devices - devices: "list[DeviceResponse]" = dc_field(metadata=dc_config(field_name="devices")) - + devices: 'list[DeviceResponse]' = dc_field(metadata=dc_config(field_name="devices")) @dataclass class ListExternalStorageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - external_storages: "dict[str, ExternalStorageResponse]" = dc_field( - metadata=dc_config(field_name="external_storages") - ) - + external_storages: 'dict[str, ExternalStorageResponse]' = dc_field(metadata=dc_config(field_name="external_storages")) @dataclass class ListFeedGroupsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - groups: "dict[str, FeedGroupResponse]" = dc_field( - metadata=dc_config(field_name="groups") - ) - + groups: 'dict[str, FeedGroupResponse]' = dc_field(metadata=dc_config(field_name="groups")) @dataclass class ListFeedViewsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Map of feed view ID to feed view - views: "dict[str, FeedViewResponse]" = dc_field( - metadata=dc_config(field_name="views") - ) - + views: 'dict[str, FeedViewResponse]' = dc_field(metadata=dc_config(field_name="views")) @dataclass class ListFeedVisibilitiesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Map of feed visibility configurations by name - feed_visibilities: "dict[str, FeedVisibilityResponse]" = dc_field( - metadata=dc_config(field_name="feed_visibilities") - ) - + feed_visibilities: 'dict[str, FeedVisibilityResponse]' = dc_field(metadata=dc_config(field_name="feed_visibilities")) @dataclass class ListImportV2TasksResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - import_tasks: "list[ImportV2TaskItem]" = dc_field( - metadata=dc_config(field_name="import_tasks") - ) + import_tasks: 'list[ImportV2TaskItem]' = dc_field(metadata=dc_config(field_name="import_tasks")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class ListImportsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - import_tasks: "list[ImportTask]" = dc_field( - metadata=dc_config(field_name="import_tasks") - ) - + import_tasks: 'list[ImportTask]' = dc_field(metadata=dc_config(field_name="import_tasks")) @dataclass class ListPermissionsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - permissions: "list[Permission]" = dc_field( - metadata=dc_config(field_name="permissions") - ) - + permissions: 'list[Permission]' = dc_field(metadata=dc_config(field_name="permissions")) @dataclass class ListPushProvidersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - push_providers: "list[PushProviderResponse]" = dc_field( - metadata=dc_config(field_name="push_providers") - ) - + push_providers: 'list[PushProviderResponse]' = dc_field(metadata=dc_config(field_name="push_providers")) @dataclass class ListQueuesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - queues: "list[ModerationQueueResponse]" = dc_field( - metadata=dc_config(field_name="queues") - ) - + queues: 'list[ModerationQueueResponse]' = dc_field(metadata=dc_config(field_name="queues")) @dataclass class ListRecordingsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - recordings: "list[CallRecording]" = dc_field( - metadata=dc_config(field_name="recordings") - ) - + recordings: 'list[CallRecording]' = dc_field(metadata=dc_config(field_name="recordings")) @dataclass class ListRolesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - roles: "list[Role]" = dc_field(metadata=dc_config(field_name="roles")) - + roles: 'list[Role]' = dc_field(metadata=dc_config(field_name="roles")) @dataclass class ListSIPInboundRoutingRuleResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of SIP Inbound Routing Rules for the application - sip_inbound_routing_rules: "list[SIPInboundRoutingRuleResponse]" = dc_field( - metadata=dc_config(field_name="sip_inbound_routing_rules") - ) - + sip_inbound_routing_rules: 'list[SIPInboundRoutingRuleResponse]' = dc_field(metadata=dc_config(field_name="sip_inbound_routing_rules")) @dataclass class ListSIPTrunksResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of SIP trunks for the application - sip_trunks: "list[SIPTrunkResponse]" = dc_field( - metadata=dc_config(field_name="sip_trunks") - ) - + sip_trunks: 'list[SIPTrunkResponse]' = dc_field(metadata=dc_config(field_name="sip_trunks")) @dataclass class ListTranscriptionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of transcriptions for the call - transcriptions: "list[CallTranscription]" = dc_field( - metadata=dc_config(field_name="transcriptions") - ) - + transcriptions: 'list[CallTranscription]' = dc_field(metadata=dc_config(field_name="transcriptions")) @dataclass class ListUserGroupsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of user groups - user_groups: "list[UserGroupResponse]" = dc_field( - metadata=dc_config(field_name="user_groups") - ) - + user_groups: 'list[UserGroupResponse]' = dc_field(metadata=dc_config(field_name="user_groups")) @dataclass class Location(DataClassJsonMixin): @@ -16472,7 +8330,6 @@ class Location(DataClassJsonMixin): # Longitude coordinate lng: float = dc_field(metadata=dc_config(field_name="lng")) - @dataclass class LocationResponse(DataClassJsonMixin): # Continent code @@ -16480,477 +8337,242 @@ class LocationResponse(DataClassJsonMixin): # Country ISO code country_iso_code: str = dc_field(metadata=dc_config(field_name="country_iso_code")) # Subdivision ISO code - subdivision_iso_code: str = dc_field( - metadata=dc_config(field_name="subdivision_iso_code") - ) - + subdivision_iso_code: str = dc_field(metadata=dc_config(field_name="subdivision_iso_code")) @dataclass class MarkActivityRequest(DataClassJsonMixin): # Whether to mark all activities as read - mark_all_read: bool | None = dc_field( - default=None, metadata=dc_config(field_name="mark_all_read") - ) + mark_all_read: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_all_read")) # Whether to mark all activities as seen - mark_all_seen: bool | None = dc_field( - default=None, metadata=dc_config(field_name="mark_all_seen") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + mark_all_seen: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_all_seen")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # List of activity IDs to mark as read - mark_read: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mark_read") - ) + mark_read: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mark_read")) # List of activity IDs to mark as seen - mark_seen: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mark_seen") - ) + mark_seen: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mark_seen")) # List of activity IDs to mark as watched (for stories) - mark_watched: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mark_watched") - ) + mark_watched: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mark_watched")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MarkChannelsReadRequest(DataClassJsonMixin): - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Map of channel ID to last read message ID - read_by_channel: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="read_by_channel") - ) + read_by_channel: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="read_by_channel")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MarkDeliveredRequest(DataClassJsonMixin): - latest_delivered_messages: "list[DeliveredMessagePayload] | None" = dc_field( - default=None, metadata=dc_config(field_name="latest_delivered_messages") - ) - + latest_delivered_messages: 'list[DeliveredMessagePayload] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_delivered_messages")) @dataclass class MarkDeliveredResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class MarkReadRequest(DataClassJsonMixin): # ID of the message that is considered last read by client - message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="message_id") - ) + message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="message_id")) # Optional Thread ID to specifically mark a given thread as read - thread_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="thread_id") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + thread_id: str | None = dc_field(default=None, metadata=dc_config(field_name="thread_id")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MarkReadResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - event: "MarkReadResponseEvent | None" = dc_field( - default=None, metadata=dc_config(field_name="event") - ) - + event: 'MarkReadResponseEvent | None' = dc_field(default=None, metadata=dc_config(field_name="event")) @dataclass class MarkReadResponseEvent(DataClassJsonMixin): channel_id: str = dc_field(metadata=dc_config(field_name="channel_id")) channel_type: str = dc_field(metadata=dc_config(field_name="channel_type")) cid: str = dc_field(metadata=dc_config(field_name="cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) type: str = dc_field(metadata=dc_config(field_name="type")) - channel_last_message_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="channel_last_message_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - last_read_message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="last_read_message_id") - ) + channel_last_message_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="channel_last_message_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_read_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="last_read_message_id")) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) - thread: "ThreadResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="thread") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + thread: 'ThreadResponse | None' = dc_field(default=None, metadata=dc_config(field_name="thread")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MarkReviewedRequestPayload(DataClassJsonMixin): # Maximum content items to mark as reviewed - content_to_mark_as_reviewed_limit: int | None = dc_field( - default=None, metadata=dc_config(field_name="content_to_mark_as_reviewed_limit") - ) + content_to_mark_as_reviewed_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="content_to_mark_as_reviewed_limit")) # Reason for the appeal decision - decision_reason: str | None = dc_field( - default=None, metadata=dc_config(field_name="decision_reason") - ) + decision_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="decision_reason")) # Skip marking content as reviewed - disable_marking_content_as_reviewed: bool | None = dc_field( - default=None, - metadata=dc_config(field_name="disable_marking_content_as_reviewed"), - ) - + disable_marking_content_as_reviewed: bool | None = dc_field(default=None, metadata=dc_config(field_name="disable_marking_content_as_reviewed")) @dataclass class MarkUnreadRequest(DataClassJsonMixin): # ID of the message from where the channel is marked unread - message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="message_id") - ) + message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="message_id")) # Timestamp of the message from where the channel is marked unread - message_timestamp: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="message_timestamp", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + message_timestamp: datetime | None = dc_field(default=None, metadata=dc_config(field_name="message_timestamp", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Mark a thread unread, specify one of the thread, message timestamp, or message id - thread_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="thread_id") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + thread_id: str | None = dc_field(default=None, metadata=dc_config(field_name="thread_id")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MatchedContent(DataClassJsonMixin): # The `content_ids[label]` value supplied on the `/analyze` request that contributed this entry. id: str = dc_field(metadata=dc_config(field_name="id")) # `content_published_at` from the contributing `/analyze` request, or server receive time when that field was omitted. - published_at: datetime = dc_field( - metadata=dc_config( - field_name="published_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + published_at: datetime = dc_field(metadata=dc_config(field_name="published_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Content type that contributed this entry: `image` or `text`. type: str = dc_field(metadata=dc_config(field_name="type")) # Image-classification entries only. Aggregate (max) confidence score across the entry's classifications + sub-classifications. Absent on text and OCR entries. - confidence: float | None = dc_field( - default=None, metadata=dc_config(field_name="confidence") - ) + confidence: float | None = dc_field(default=None, metadata=dc_config(field_name="confidence")) # Text and OCR entries. Aggregate (max) Bodyguard severity level (`LOW` / `MEDIUM` / `HIGH` / `CRITICAL`). Absent on image-classification entries. - severity: str | None = dc_field( - default=None, metadata=dc_config(field_name="severity") - ) + severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) # Image-classification entries (keyframe rule, Type=image) carry nested L1 → L2 classifications. Text entries (closed_caption rule, Type=text) carry flat label + severity. Resolved against the app's effective taxonomy on the image side. - classifications: "list[Classification] | None" = dc_field( - default=None, metadata=dc_config(field_name="classifications") - ) + classifications: 'list[Classification] | None' = dc_field(default=None, metadata=dc_config(field_name="classifications")) # OCR entries only (keyframe_ocr rule, Type=image). Bodyguard labels that fired against the keyframe's OCR-extracted text (e.g. `INSULT`, `HATE_SPEECH`). Distinct from `classifications` so consumers can route OCR matches separately from image-classification matches. - ocr_classifications: "list[Classification] | None" = dc_field( - default=None, metadata=dc_config(field_name="ocr_classifications") - ) - + ocr_classifications: 'list[Classification] | None' = dc_field(default=None, metadata=dc_config(field_name="ocr_classifications")) @dataclass class MaxStreakChangedEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="channel.max_streak_changed", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="channel.max_streak_changed", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class MemberAddedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents channel in chat - channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - member: "ChannelMemberResponse" = dc_field(metadata=dc_config(field_name="member")) + member: 'ChannelMemberResponse' = dc_field(metadata=dc_config(field_name="member")) # The type of event: "member.added" in this case type: str = dc_field(default="member.added", metadata=dc_config(field_name="type")) # The ID of the channel to which the member was added - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) # The number of messages in the channel - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel to which the member was added - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel to which the member was added cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MemberRemovedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents channel in chat - channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - member: "ChannelMemberResponse" = dc_field(metadata=dc_config(field_name="member")) + member: 'ChannelMemberResponse' = dc_field(metadata=dc_config(field_name="member")) # The type of event: "member.removed" in this case - type: str = dc_field( - default="member.removed", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="member.removed", metadata=dc_config(field_name="type")) # The ID of the channel from which the member was removed - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) # The number of messages in the channel - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel from which the member was removed - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel from which the member was removed cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MemberRequest(DataClassJsonMixin): user_id: str = dc_field(metadata=dc_config(field_name="user_id")) role: str | None = dc_field(default=None, metadata=dc_config(field_name="role")) # Custom data for this object - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class MemberResponse(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Date/time of the last update - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # Custom member response data custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # Date/time of deletion - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) role: str | None = dc_field(default=None, metadata=dc_config(field_name="role")) - @dataclass class MemberUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents channel in chat - channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - member: "ChannelMemberResponse" = dc_field(metadata=dc_config(field_name="member")) + member: 'ChannelMemberResponse' = dc_field(metadata=dc_config(field_name="member")) # The type of event: "member.updated" in this case - type: str = dc_field( - default="member.updated", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="member.updated", metadata=dc_config(field_name="type")) # The ID of the channel in which the member was updated - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) # The number of messages in the channel - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel in which the member was updated - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel in which the member was updated cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) +@dataclass +class MemberUserRequest(DataClassJsonMixin): + id: str = dc_field(metadata=dc_config(field_name="id")) + image: str | None = dc_field(default=None, metadata=dc_config(field_name="image")) + invisible: bool | None = dc_field(default=None, metadata=dc_config(field_name="invisible")) + language: str | None = dc_field(default=None, metadata=dc_config(field_name="language")) + name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) + role: str | None = dc_field(default=None, metadata=dc_config(field_name="role")) + teams: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="teams")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + privacy_settings: 'PrivacySettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="privacy_settings")) + teams_role: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="teams_role")) @dataclass class MembersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of found members - members: "list[ChannelMemberResponse]" = dc_field( - metadata=dc_config(field_name="members") - ) - + members: 'list[ChannelMemberResponse]' = dc_field(metadata=dc_config(field_name="members")) @dataclass class MembershipLevelResponse(DataClassJsonMixin): # When the membership level was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Unique identifier for the membership level id: str = dc_field(metadata=dc_config(field_name="id")) # Display name for the membership level @@ -16958,494 +8580,218 @@ class MembershipLevelResponse(DataClassJsonMixin): # Priority level priority: int = dc_field(metadata=dc_config(field_name="priority")) # When the membership level was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Activity tags this membership level gives access to tags: list[str] = dc_field(metadata=dc_config(field_name="tags")) # Description of the membership level - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) # Custom data for the membership level - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class MessageActionRequest(DataClassJsonMixin): # ReadOnlyData to execute command with - form_data: "dict[str, str]" = dc_field(metadata=dc_config(field_name="form_data")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + form_data: 'dict[str, str]' = dc_field(metadata=dc_config(field_name="form_data")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MessageActionResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) @dataclass class MessageChangeSet(DataClassJsonMixin): attachments: bool = dc_field(metadata=dc_config(field_name="attachments")) custom: bool = dc_field(metadata=dc_config(field_name="custom")) html: bool = dc_field(metadata=dc_config(field_name="html")) - mentioned_user_ids: bool = dc_field( - metadata=dc_config(field_name="mentioned_user_ids") - ) + mentioned_user_ids: bool = dc_field(metadata=dc_config(field_name="mentioned_user_ids")) mml: bool = dc_field(metadata=dc_config(field_name="mml")) pin: bool = dc_field(metadata=dc_config(field_name="pin")) - quoted_message_id: bool = dc_field( - metadata=dc_config(field_name="quoted_message_id") - ) + quoted_message_id: bool = dc_field(metadata=dc_config(field_name="quoted_message_id")) silent: bool = dc_field(metadata=dc_config(field_name="silent")) text: bool = dc_field(metadata=dc_config(field_name="text")) - @dataclass class MessageDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Whether the message was hard deleted hard_delete: bool = dc_field(metadata=dc_config(field_name="hard_delete")) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Represents any chat message - message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) + message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) # The type of event: "message.deleted" in this case - type: str = dc_field( - default="message.deleted", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="message.deleted", metadata=dc_config(field_name="type")) # The ID of the channel where the message was sent - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) # The number of messages in the channel - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel where the message was sent - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel where the message was sent cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) # Whether the message was deleted only for the current user - deleted_for_me: bool | None = dc_field( - default=None, metadata=dc_config(field_name="deleted_for_me") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + deleted_for_me: bool | None = dc_field(default=None, metadata=dc_config(field_name="deleted_for_me")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MessageFlagResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - created_by_automod: bool = dc_field( - metadata=dc_config(field_name="created_by_automod") - ) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - approved_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="approved_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_by_automod: bool = dc_field(metadata=dc_config(field_name="created_by_automod")) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + approved_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="approved_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - rejected_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="rejected_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - reviewed_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="reviewed_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - details: "FlagDetailsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="details") - ) + rejected_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="rejected_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + reviewed_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="reviewed_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + details: 'FlagDetailsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="details")) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - moderation_feedback: "FlagFeedbackResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation_feedback") - ) + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + moderation_feedback: 'FlagFeedbackResponse | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_feedback")) # Result of the message moderation - moderation_result: "MessageModerationResult | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation_result") - ) + moderation_result: 'MessageModerationResult | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_result")) # User response object - reviewed_by: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="reviewed_by") - ) + reviewed_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="reviewed_by")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MessageFlaggedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # Represents any chat message - message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) + message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) # The type of event: "message.flagged" in this case - type: str = dc_field( - default="message.flagged", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="message.flagged", metadata=dc_config(field_name="type")) # The ID of the channel where the message was sent - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) # The number of messages in the channel - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel where the message was sent - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel where the message was sent cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) # The reason for the flag reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # The total number of flags for the user - total_flags: int | None = dc_field( - default=None, metadata=dc_config(field_name="total_flags") - ) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) + total_flags: int | None = dc_field(default=None, metadata=dc_config(field_name="total_flags")) + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) # Custom data - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # Result of the message moderation - details: "MessageModerationResult | None" = dc_field( - default=None, metadata=dc_config(field_name="details") - ) - flag: "FlagResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="flag") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + details: 'MessageModerationResult | None' = dc_field(default=None, metadata=dc_config(field_name="details")) + flag: 'FlagResponse | None' = dc_field(default=None, metadata=dc_config(field_name="flag")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MessageHistoryEntryResponse(DataClassJsonMixin): is_deleted: bool = dc_field(metadata=dc_config(field_name="is_deleted")) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) - message_updated_at: datetime = dc_field( - metadata=dc_config( - field_name="message_updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - message_updated_by_id: str = dc_field( - metadata=dc_config(field_name="message_updated_by_id") - ) + message_updated_at: datetime = dc_field(metadata=dc_config(field_name="message_updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + message_updated_by_id: str = dc_field(metadata=dc_config(field_name="message_updated_by_id")) text: str = dc_field(metadata=dc_config(field_name="text")) - attachments: "list[Attachment]" = dc_field( - metadata=dc_config(field_name="attachments") - ) + attachments: 'list[Attachment]' = dc_field(metadata=dc_config(field_name="attachments")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - @dataclass class MessageModerationResult(DataClassJsonMixin): # Action taken by automod action: str = dc_field(metadata=dc_config(field_name="action")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # ID of the message message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # Date/time of the last update - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Whether user has bad karma user_bad_karma: bool = dc_field(metadata=dc_config(field_name="user_bad_karma")) # Karma of the user user_karma: float = dc_field(metadata=dc_config(field_name="user_karma")) # Word that was blocked - blocked_word: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocked_word") - ) + blocked_word: str | None = dc_field(default=None, metadata=dc_config(field_name="blocked_word")) # Name of the blocklist - blocklist_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist_name") - ) + blocklist_name: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_name")) # User who moderated the message - moderated_by: str | None = dc_field( - default=None, metadata=dc_config(field_name="moderated_by") - ) - ai_moderation_response: "ModerationResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="ai_moderation_response") - ) + moderated_by: str | None = dc_field(default=None, metadata=dc_config(field_name="moderated_by")) + ai_moderation_response: 'ModerationResponse | None' = dc_field(default=None, metadata=dc_config(field_name="ai_moderation_response")) # Sets thresholds for AI moderation - moderation_thresholds: "Thresholds | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation_thresholds") - ) - + moderation_thresholds: 'Thresholds | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_thresholds")) @dataclass class MessageNewEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # The number of watchers watcher_count: int = dc_field(metadata=dc_config(field_name="watcher_count")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Represents any chat message - message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) + message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) # The type of event: "message.new" in this case type: str = dc_field(default="message.new", metadata=dc_config(field_name="type")) # The ID of the channel where the message was sent - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) # The number of messages in the channel - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel where the message was sent - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel where the message was sent cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) # The author of the parent message - parent_author: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_author") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + parent_author: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_author")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - total_unread_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="total_unread_count") - ) - unread_channels: int | None = dc_field( - default=None, metadata=dc_config(field_name="unread_channels") - ) + total_unread_count: int | None = dc_field(default=None, metadata=dc_config(field_name="total_unread_count")) + unread_channels: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_channels")) # The number of unread messages - unread_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="unread_count") - ) + unread_count: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_count")) # The participants of the thread - thread_participants: "list[UserResponseCommonFields] | None" = dc_field( - default=None, metadata=dc_config(field_name="thread_participants") - ) + thread_participants: 'list[UserResponseCommonFields] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - grouped_unread_channels: "dict[str, int] | None" = dc_field( - default=None, metadata=dc_config(field_name="grouped_unread_channels") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + grouped_unread_channels: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="grouped_unread_channels")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MessageOptions(DataClassJsonMixin): - include_thread_participants: bool | None = dc_field( - default=None, metadata=dc_config(field_name="include_thread_participants") - ) - member_custom_include: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="member_custom_include") - ) - + include_thread_participants: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_thread_participants")) + member_custom_include: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="member_custom_include")) @dataclass class MessagePaginationParams(DataClassJsonMixin): # The timestamp to get messages with a created_at timestamp greater than - created_at_after: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="created_at_after", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + created_at_after: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at_after", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The timestamp to get messages with a created_at timestamp greater than or equal to - created_at_after_or_equal: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="created_at_after_or_equal", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + created_at_after_or_equal: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at_after_or_equal", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The result will be a set of messages, that are both older and newer than the created_at timestamp provided, distributed evenly around the timestamp - created_at_around: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="created_at_around", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + created_at_around: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at_around", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The timestamp to get messages with a created_at timestamp smaller than - created_at_before: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="created_at_before", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + created_at_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The timestamp to get messages with a created_at timestamp smaller than or equal to - created_at_before_or_equal: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="created_at_before_or_equal", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + created_at_before_or_equal: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at_before_or_equal", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The result will be a set of messages, that are both older and newer than the message with the provided ID, and the message with the ID provided will be in the middle of the set - id_around: str | None = dc_field( - default=None, metadata=dc_config(field_name="id_around") - ) + id_around: str | None = dc_field(default=None, metadata=dc_config(field_name="id_around")) # The ID of the message to get messages with a timestamp greater than id_gt: str | None = dc_field(default=None, metadata=dc_config(field_name="id_gt")) # The ID of the message to get messages with a timestamp greater than or equal to @@ -17454,71 +8800,36 @@ class MessagePaginationParams(DataClassJsonMixin): id_lt: str | None = dc_field(default=None, metadata=dc_config(field_name="id_lt")) # The ID of the message to get messages with a timestamp smaller than or equal to id_lte: str | None = dc_field(default=None, metadata=dc_config(field_name="id_lte")) - # The maximum number of messages to return (max limit + # The maximum number of messages to return (max limit limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) - @dataclass class MessageReadEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "message.read" in this case type: str = dc_field(default="message.read", metadata=dc_config(field_name="type")) # The ID of the channel where the message was read - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) # The number of messages in the channel - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel where the message was read - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel where the message was read cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) # The ID of the last read message - last_read_message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="last_read_message_id") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + last_read_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="last_read_message_id")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - thread: "ThreadResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="thread") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + thread: 'ThreadResponse | None' = dc_field(default=None, metadata=dc_config(field_name="thread")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MessageRequest(DataClassJsonMixin): @@ -17526,119 +8837,57 @@ class MessageRequest(DataClassJsonMixin): html: str | None = dc_field(default=None, metadata=dc_config(field_name="html")) # Message ID is unique string identifier of the message id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) - mentioned_channel: bool | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_channel") - ) - mentioned_here: bool | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_here") - ) + mentioned_channel: bool | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_channel")) + mentioned_here: bool | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_here")) # Should be empty if `text` is provided. Can only be set when using server-side API mml: str | None = dc_field(default=None, metadata=dc_config(field_name="mml")) # ID of parent message (thread) - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) # Date when pinned message expires - pin_expires: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="pin_expires", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + pin_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pin_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Whether message is pinned or not - pinned: bool | None = dc_field( - default=None, metadata=dc_config(field_name="pinned") - ) + pinned: bool | None = dc_field(default=None, metadata=dc_config(field_name="pinned")) # Date when message got pinned - pinned_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="pinned_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + pinned_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pinned_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Identifier of the poll to include in the message - poll_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="poll_id") - ) - quoted_message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="quoted_message_id") - ) + poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) + quoted_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="quoted_message_id")) # Whether thread reply should be shown in the channel as well - show_in_channel: bool | None = dc_field( - default=None, metadata=dc_config(field_name="show_in_channel") - ) + show_in_channel: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_in_channel")) # Whether message is silent or not - silent: bool | None = dc_field( - default=None, metadata=dc_config(field_name="silent") - ) + silent: bool | None = dc_field(default=None, metadata=dc_config(field_name="silent")) # Text of the message. Should be empty if `mml` is provided text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) # Contains type of the message. One of: regular, system type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Array of message attachments - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) # List of user group IDs to mention. Group members who are also channel members will receive push notifications. Max 10 groups - mentioned_group_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_group_ids") - ) - mentioned_roles: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_roles") - ) + mentioned_group_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_group_ids")) + mentioned_roles: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_roles")) # Array of user IDs to mention - mentioned_users: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_users") - ) + mentioned_users: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_users")) # A list of user ids that have restricted visibility to the message - restricted_visibility: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="restricted_visibility") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - shared_location: "SharedLocation | None" = dc_field( - default=None, metadata=dc_config(field_name="shared_location") - ) + restricted_visibility: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="restricted_visibility")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + shared_location: 'SharedLocation | None' = dc_field(default=None, metadata=dc_config(field_name="shared_location")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MessageResponse(DataClassJsonMixin): # Channel unique identifier in : format cid: str = dc_field(metadata=dc_config(field_name="cid")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - deleted_reply_count: int = dc_field( - metadata=dc_config(field_name="deleted_reply_count") - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_reply_count: int = dc_field(metadata=dc_config(field_name="deleted_reply_count")) # Contains HTML markup of the message. Can only be set when using server-side API html: str = dc_field(metadata=dc_config(field_name="html")) # Message ID is unique string identifier of the message id: str = dc_field(metadata=dc_config(field_name="id")) # Whether the message mentioned the channel tag - mentioned_channel: bool = dc_field( - metadata=dc_config(field_name="mentioned_channel") - ) + mentioned_channel: bool = dc_field(metadata=dc_config(field_name="mentioned_channel")) # Whether the message mentioned online users with @here tag mentioned_here: bool = dc_field(metadata=dc_config(field_name="mentioned_here")) # Whether message is pinned or not @@ -17654,351 +8903,158 @@ class MessageResponse(DataClassJsonMixin): # Contains type of the message. One of: regular, ephemeral, error, reply, system, deleted type: str = dc_field(metadata=dc_config(field_name="type")) # Date/time of the last update - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Array of message attachments - attachments: "list[Attachment]" = dc_field( - metadata=dc_config(field_name="attachments") - ) + attachments: 'list[Attachment]' = dc_field(metadata=dc_config(field_name="attachments")) # List of 10 latest reactions to this message - latest_reactions: "list[ReactionResponse]" = dc_field( - metadata=dc_config(field_name="latest_reactions") - ) + latest_reactions: 'list[ReactionResponse]' = dc_field(metadata=dc_config(field_name="latest_reactions")) # List of mentioned users - mentioned_users: "list[UserResponse]" = dc_field( - metadata=dc_config(field_name="mentioned_users") - ) + mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) # List of 10 latest reactions of authenticated user to this message - own_reactions: "list[ReactionResponse]" = dc_field( - metadata=dc_config(field_name="own_reactions") - ) + own_reactions: 'list[ReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) # A list of user ids that have restricted visibility to the message, if the list is not empty, the message is only visible to the users in the list - restricted_visibility: list[str] = dc_field( - metadata=dc_config(field_name="restricted_visibility") - ) + restricted_visibility: list[str] = dc_field(metadata=dc_config(field_name="restricted_visibility")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # An object containing number of reactions of each type. Key: reaction type (string), value: number of reactions (int) - reaction_counts: "dict[str, int]" = dc_field( - metadata=dc_config(field_name="reaction_counts") - ) + reaction_counts: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="reaction_counts")) # An object containing scores of reactions of each type. Key: reaction type (string), value: total score of reactions (int) - reaction_scores: "dict[str, int]" = dc_field( - metadata=dc_config(field_name="reaction_scores") - ) + reaction_scores: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="reaction_scores")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # Contains provided slash command - command: str | None = dc_field( - default=None, metadata=dc_config(field_name="command") - ) + command: str | None = dc_field(default=None, metadata=dc_config(field_name="command")) # Date/time of deletion - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - deleted_for_me: bool | None = dc_field( - default=None, metadata=dc_config(field_name="deleted_for_me") - ) - message_text_updated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="message_text_updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_for_me: bool | None = dc_field(default=None, metadata=dc_config(field_name="deleted_for_me")) + message_text_updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="message_text_updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Should be empty if `text` is provided. Can only be set when using server-side API mml: str | None = dc_field(default=None, metadata=dc_config(field_name="mml")) # ID of parent message (thread) - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) # Date when pinned message expires - pin_expires: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="pin_expires", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + pin_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pin_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Date when message got pinned - pinned_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="pinned_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + pinned_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pinned_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Identifier of the poll to include in the message - poll_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="poll_id") - ) - quoted_message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="quoted_message_id") - ) + poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) + quoted_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="quoted_message_id")) # Whether thread reply should be shown in the channel as well - show_in_channel: bool | None = dc_field( - default=None, metadata=dc_config(field_name="show_in_channel") - ) + show_in_channel: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_in_channel")) # List of user group IDs mentioned in the message. Group members who are also channel members will receive push notifications based on their push preferences. Max 10 groups - mentioned_group_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_group_ids") - ) + mentioned_group_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_group_ids")) # List of mentioned user group objects. - mentioned_groups: "list[UserGroupResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="mentioned_groups") - ) + mentioned_groups: 'list[UserGroupResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_groups")) # List of roles mentioned in the message (e.g. admin, channel_moderator, custom roles). Members with matching roles will receive push notifications based on their push preferences. Max 10 roles - mentioned_roles: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_roles") - ) + mentioned_roles: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_roles")) # List of users who participate in thread - thread_participants: "list[UserResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="thread_participants") - ) - draft: "DraftResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="draft") - ) + thread_participants: 'list[UserResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) + draft: 'DraftResponse | None' = dc_field(default=None, metadata=dc_config(field_name="draft")) # Object with translations. Key `language` contains the original language key. Other keys contain translations - i18n: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="i18n") - ) + i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) # Contains image moderation information - image_labels: "dict[str, list[str]] | None" = dc_field( - default=None, metadata=dc_config(field_name="image_labels") - ) - member: "ChannelMemberPartialResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="member") - ) - moderation: "ModerationV2Response | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation") - ) + image_labels: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="image_labels")) + member: 'ChannelMemberPartialResponse | None' = dc_field(default=None, metadata=dc_config(field_name="member")) + # Channel member data for the users mentioned in the message, keyed by user id. Only present when the app has member custom on mentioned users enabled, and only for the first two mentioned users of each message + mentioned_channel_members: 'dict[str, ChannelMemberPartialResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_channel_members")) + moderation: 'ModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) # User response object - pinned_by: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="pinned_by") - ) - poll: "PollResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="poll") - ) + pinned_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="pinned_by")) + poll: 'PollResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll")) # Represents any chat message - quoted_message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="quoted_message") - ) - reaction_groups: "dict[str, ReactionGroupResponse | None] | None" = dc_field( - default=None, metadata=dc_config(field_name="reaction_groups") - ) - reminder: "ReminderResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="reminder") - ) - shared_location: "SharedLocationResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="shared_location") - ) - + quoted_message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="quoted_message")) + reaction_groups: 'dict[str, ReactionGroupResponse | None] | None' = dc_field(default=None, metadata=dc_config(field_name="reaction_groups")) + reminder: 'ReminderResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="reminder")) + shared_location: 'SharedLocationResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="shared_location")) @dataclass class MessageStatsResponse(DataClassJsonMixin): - count_over_time: "list[CountByMinuteResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="count_over_time") - ) - + count_over_time: 'list[CountByMinuteResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="count_over_time")) @dataclass class MessageUnblockedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Represents any chat message - message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) + message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) # The type of event: "message.unblocked" in this case - type: str = dc_field( - default="message.unblocked", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="message.unblocked", metadata=dc_config(field_name="type")) # The CID of the channel where the message was unblocked cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MessageUndeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Represents any chat message - message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) + message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) # The type of event: "message.undeleted" in this case - type: str = dc_field( - default="message.undeleted", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="message.undeleted", metadata=dc_config(field_name="type")) # The ID of the channel where the message was sent - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) # The number of messages in the channel - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel where the message was sent - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel where the message was sent cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) @dataclass class MessageUpdate(DataClassJsonMixin): - old_text: str | None = dc_field( - default=None, metadata=dc_config(field_name="old_text") - ) - change_set: "MessageChangeSet | None" = dc_field( - default=None, metadata=dc_config(field_name="change_set") - ) - + old_text: str | None = dc_field(default=None, metadata=dc_config(field_name="old_text")) + change_set: 'MessageChangeSet | None' = dc_field(default=None, metadata=dc_config(field_name="change_set")) @dataclass class MessageUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Represents any chat message - message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) + message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) # The type of event: "message.updated" in this case - type: str = dc_field( - default="message.updated", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="message.updated", metadata=dc_config(field_name="type")) # The ID of the channel where the message was sent - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) # The number of messages in the channel - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel where the message was sent - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel where the message was sent cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - message_update: "MessageUpdate | None" = dc_field( - default=None, metadata=dc_config(field_name="message_update") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + message_update: 'MessageUpdate | None' = dc_field(default=None, metadata=dc_config(field_name="message_update")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MessageWithChannelResponse(DataClassJsonMixin): # Channel unique identifier in : format cid: str = dc_field(metadata=dc_config(field_name="cid")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - deleted_reply_count: int = dc_field( - metadata=dc_config(field_name="deleted_reply_count") - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_reply_count: int = dc_field(metadata=dc_config(field_name="deleted_reply_count")) # Contains HTML markup of the message. Can only be set when using server-side API html: str = dc_field(metadata=dc_config(field_name="html")) # Message ID is unique string identifier of the message id: str = dc_field(metadata=dc_config(field_name="id")) # Whether the message mentioned the channel tag - mentioned_channel: bool = dc_field( - metadata=dc_config(field_name="mentioned_channel") - ) + mentioned_channel: bool = dc_field(metadata=dc_config(field_name="mentioned_channel")) # Whether the message mentioned online users with @here tag mentioned_here: bool = dc_field(metadata=dc_config(field_name="mentioned_here")) # Whether message is pinned or not @@ -18014,220 +9070,103 @@ class MessageWithChannelResponse(DataClassJsonMixin): # Contains type of the message. One of: regular, ephemeral, error, reply, system, deleted type: str = dc_field(metadata=dc_config(field_name="type")) # Date/time of the last update - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Array of message attachments - attachments: "list[Attachment]" = dc_field( - metadata=dc_config(field_name="attachments") - ) + attachments: 'list[Attachment]' = dc_field(metadata=dc_config(field_name="attachments")) # List of 10 latest reactions to this message - latest_reactions: "list[ReactionResponse]" = dc_field( - metadata=dc_config(field_name="latest_reactions") - ) + latest_reactions: 'list[ReactionResponse]' = dc_field(metadata=dc_config(field_name="latest_reactions")) # List of mentioned users - mentioned_users: "list[UserResponse]" = dc_field( - metadata=dc_config(field_name="mentioned_users") - ) + mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) # List of 10 latest reactions of authenticated user to this message - own_reactions: "list[ReactionResponse]" = dc_field( - metadata=dc_config(field_name="own_reactions") - ) + own_reactions: 'list[ReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) # A list of user ids that have restricted visibility to the message, if the list is not empty, the message is only visible to the users in the list - restricted_visibility: list[str] = dc_field( - metadata=dc_config(field_name="restricted_visibility") - ) + restricted_visibility: list[str] = dc_field(metadata=dc_config(field_name="restricted_visibility")) # Represents channel in chat - channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # An object containing number of reactions of each type. Key: reaction type (string), value: number of reactions (int) - reaction_counts: "dict[str, int]" = dc_field( - metadata=dc_config(field_name="reaction_counts") - ) + reaction_counts: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="reaction_counts")) # An object containing scores of reactions of each type. Key: reaction type (string), value: total score of reactions (int) - reaction_scores: "dict[str, int]" = dc_field( - metadata=dc_config(field_name="reaction_scores") - ) + reaction_scores: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="reaction_scores")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # Contains provided slash command - command: str | None = dc_field( - default=None, metadata=dc_config(field_name="command") - ) + command: str | None = dc_field(default=None, metadata=dc_config(field_name="command")) # Date/time of deletion - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - deleted_for_me: bool | None = dc_field( - default=None, metadata=dc_config(field_name="deleted_for_me") - ) - message_text_updated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="message_text_updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_for_me: bool | None = dc_field(default=None, metadata=dc_config(field_name="deleted_for_me")) + message_text_updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="message_text_updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Should be empty if `text` is provided. Can only be set when using server-side API mml: str | None = dc_field(default=None, metadata=dc_config(field_name="mml")) # ID of parent message (thread) - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) # Date when pinned message expires - pin_expires: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="pin_expires", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + pin_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pin_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Date when message got pinned - pinned_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="pinned_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + pinned_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pinned_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Identifier of the poll to include in the message - poll_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="poll_id") - ) - quoted_message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="quoted_message_id") - ) + poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) + quoted_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="quoted_message_id")) # Whether thread reply should be shown in the channel as well - show_in_channel: bool | None = dc_field( - default=None, metadata=dc_config(field_name="show_in_channel") - ) + show_in_channel: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_in_channel")) # List of user group IDs mentioned in the message. Group members who are also channel members will receive push notifications based on their push preferences. Max 10 groups - mentioned_group_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_group_ids") - ) + mentioned_group_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_group_ids")) # List of mentioned user group objects. - mentioned_groups: "list[UserGroupResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="mentioned_groups") - ) + mentioned_groups: 'list[UserGroupResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_groups")) # List of roles mentioned in the message (e.g. admin, channel_moderator, custom roles). Members with matching roles will receive push notifications based on their push preferences. Max 10 roles - mentioned_roles: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_roles") - ) + mentioned_roles: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_roles")) # List of users who participate in thread - thread_participants: "list[UserResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="thread_participants") - ) - draft: "DraftResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="draft") - ) + thread_participants: 'list[UserResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) + draft: 'DraftResponse | None' = dc_field(default=None, metadata=dc_config(field_name="draft")) # Object with translations. Key `language` contains the original language key. Other keys contain translations - i18n: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="i18n") - ) + i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) # Contains image moderation information - image_labels: "dict[str, list[str]] | None" = dc_field( - default=None, metadata=dc_config(field_name="image_labels") - ) - member: "ChannelMemberPartialResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="member") - ) - moderation: "ModerationV2Response | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation") - ) + image_labels: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="image_labels")) + member: 'ChannelMemberPartialResponse | None' = dc_field(default=None, metadata=dc_config(field_name="member")) + # Channel member data for the users mentioned in the message, keyed by user id. Only present when the app has member custom on mentioned users enabled, and only for the first two mentioned users of each message + mentioned_channel_members: 'dict[str, ChannelMemberPartialResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_channel_members")) + moderation: 'ModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) # User response object - pinned_by: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="pinned_by") - ) - poll: "PollResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="poll") - ) + pinned_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="pinned_by")) + poll: 'PollResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll")) # Represents any chat message - quoted_message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="quoted_message") - ) - reaction_groups: "dict[str, ReactionGroupResponse | None] | None" = dc_field( - default=None, metadata=dc_config(field_name="reaction_groups") - ) - reminder: "ReminderResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="reminder") - ) - shared_location: "SharedLocationResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="shared_location") - ) - + quoted_message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="quoted_message")) + reaction_groups: 'dict[str, ReactionGroupResponse | None] | None' = dc_field(default=None, metadata=dc_config(field_name="reaction_groups")) + reminder: 'ReminderResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="reminder")) + shared_location: 'SharedLocationResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="shared_location")) @dataclass class MetricDescriptor(DataClassJsonMixin): label: str = dc_field(metadata=dc_config(field_name="label")) - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) unit: str | None = dc_field(default=None, metadata=dc_config(field_name="unit")) - @dataclass class MetricStats(DataClassJsonMixin): # Aggregated total value total: int = dc_field(metadata=dc_config(field_name="total")) # Per-day values (only present in daily mode) - daily: "list[DailyValue] | None" = dc_field( - default=None, metadata=dc_config(field_name="daily") - ) - + daily: 'list[DailyValue] | None' = dc_field(default=None, metadata=dc_config(field_name="daily")) @dataclass class MetricThreshold(DataClassJsonMixin): level: str = dc_field(metadata=dc_config(field_name="level")) operator: str = dc_field(metadata=dc_config(field_name="operator")) value: float = dc_field(metadata=dc_config(field_name="value")) - value_unit: str | None = dc_field( - default=None, metadata=dc_config(field_name="value_unit") - ) - window_seconds: int | None = dc_field( - default=None, metadata=dc_config(field_name="window_seconds") - ) - + value_unit: str | None = dc_field(default=None, metadata=dc_config(field_name="value_unit")) + window_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="window_seconds")) @dataclass class MetricTimeSeries(DataClassJsonMixin): - data_points: "list[list[float]] | None" = dc_field( - default=None, metadata=dc_config(field_name="data_points") - ) - + data_points: 'list[list[float]] | None' = dc_field(default=None, metadata=dc_config(field_name="data_points")) @dataclass class MetricsPct(DataClassJsonMixin): - freezes: float | None = dc_field( - default=None, metadata=dc_config(field_name="freezes") - ) + freezes: float | None = dc_field(default=None, metadata=dc_config(field_name="freezes")) geo: float | None = dc_field(default=None, metadata=dc_config(field_name="geo")) - jitter: float | None = dc_field( - default=None, metadata=dc_config(field_name="jitter") - ) - latency: float | None = dc_field( - default=None, metadata=dc_config(field_name="latency") - ) - quality_score: float | None = dc_field( - default=None, metadata=dc_config(field_name="quality_score") - ) - + jitter: float | None = dc_field(default=None, metadata=dc_config(field_name="jitter")) + latency: float | None = dc_field(default=None, metadata=dc_config(field_name="latency")) + quality_score: float | None = dc_field(default=None, metadata=dc_config(field_name="quality_score")) @dataclass class ModerationActionConfigResponse(DataClassJsonMixin): @@ -18243,621 +9182,250 @@ class ModerationActionConfigResponse(DataClassJsonMixin): order: int = dc_field(metadata=dc_config(field_name="order")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # Queue type this action config belongs to - queue_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="queue_type") - ) + queue_type: str | None = dc_field(default=None, metadata=dc_config(field_name="queue_type")) # Custom data for the action - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class ModerationAnalysisFailedEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - type: str = dc_field( - default="moderation.analysis.failed", metadata=dc_config(field_name="type") - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field(default="moderation.analysis.failed", metadata=dc_config(field_name="type")) # The moderation policy key the request targeted. - config_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="config_key") - ) + config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) # Echo of the `entity_creator_id` on the /analyze request. - entity_creator_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_creator_id") - ) + entity_creator_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_creator_id")) # Echo of the `entity_id` on the /analyze request. - entity_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_id") - ) + entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) # Echo of the `entity_type` on the /analyze request. - entity_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Echo of the request's `content_ids`, keyed by text/image label. On keyframe and caption streams every request repeats the same entity_type/entity_id/entity_creator_id, so this is what identifies the specific submission that went unscreened. - content_ids: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="content_ids") - ) + content_ids: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="content_ids")) # Echo of the `custom` metadata on the /analyze request. - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class ModerationBanResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class ModerationCallResponse(DataClassJsonMixin): backstage: bool = dc_field(metadata=dc_config(field_name="backstage")) captioning: bool = dc_field(metadata=dc_config(field_name="captioning")) cid: str = dc_field(metadata=dc_config(field_name="cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - current_session_id: str = dc_field( - metadata=dc_config(field_name="current_session_id") - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + current_session_id: str = dc_field(metadata=dc_config(field_name="current_session_id")) id: str = dc_field(metadata=dc_config(field_name="id")) recording: bool = dc_field(metadata=dc_config(field_name="recording")) transcribing: bool = dc_field(metadata=dc_config(field_name="transcribing")) translating: bool = dc_field(metadata=dc_config(field_name="translating")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - blocked_user_ids: list[str] = dc_field( - metadata=dc_config(field_name="blocked_user_ids") - ) - custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - channel_cid: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_cid") - ) - ended_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="ended_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - join_ahead_time_seconds: int | None = dc_field( - default=None, metadata=dc_config(field_name="join_ahead_time_seconds") - ) - routing_number: str | None = dc_field( - default=None, metadata=dc_config(field_name="routing_number") - ) - starts_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="starts_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + blocked_user_ids: list[str] = dc_field(metadata=dc_config(field_name="blocked_user_ids")) + custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) + ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + join_ahead_time_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="join_ahead_time_seconds")) + routing_number: str | None = dc_field(default=None, metadata=dc_config(field_name="routing_number")) + starts_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="starts_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # User response object - created_by: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) - + created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) @dataclass class ModerationCheckCompletedEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The ID of entity which was moderated entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) # The type of the entity which was moderated entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) # The recommended action - recommended_action: str = dc_field( - metadata=dc_config(field_name="recommended_action") - ) + recommended_action: str = dc_field(metadata=dc_config(field_name="recommended_action")) # The review queue item ID - review_queue_item_id: str = dc_field( - metadata=dc_config(field_name="review_queue_item_id") - ) + review_queue_item_id: str = dc_field(metadata=dc_config(field_name="review_queue_item_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="moderation_check.completed", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="moderation_check.completed", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class ModerationConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - created_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) key: str | None = dc_field(default=None, metadata=dc_config(field_name="key")) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - updated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - supported_video_call_harm_types: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="supported_video_call_harm_types") - ) - ai_image_config: "AIImageConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ai_image_config") - ) - ai_image_lite_config: "BodyguardImageAnalysisConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ai_image_lite_config") - ) - ai_text_config: "AITextConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ai_text_config") - ) - ai_video_config: "AIVideoConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ai_video_config") - ) - automod_platform_circumvention_config: "AutomodPlatformCircumventionConfig | None" = dc_field( - default=None, - metadata=dc_config(field_name="automod_platform_circumvention_config"), - ) - automod_semantic_filters_config: "AutomodSemanticFiltersConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="automod_semantic_filters_config") - ) - automod_toxicity_config: "AutomodToxicityConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="automod_toxicity_config") - ) - block_list_config: "BlockListConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="block_list_config") - ) - flood_config: "FloodConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="flood_config") - ) - google_vision_config: "GoogleVisionConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="google_vision_config") - ) - llm_config: "LLMConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="llm_config") - ) - velocity_filter_config: "VelocityFilterConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="velocity_filter_config") - ) - video_call_rule_config: "VideoCallRuleConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="video_call_rule_config") - ) - + updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + supported_video_call_harm_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="supported_video_call_harm_types")) + ai_image_config: 'AIImageConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ai_image_config")) + ai_image_lite_config: 'BodyguardImageAnalysisConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ai_image_lite_config")) + ai_text_config: 'AITextConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ai_text_config")) + ai_video_config: 'AIVideoConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ai_video_config")) + automod_platform_circumvention_config: 'AutomodPlatformCircumventionConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_platform_circumvention_config")) + automod_semantic_filters_config: 'AutomodSemanticFiltersConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_semantic_filters_config")) + automod_toxicity_config: 'AutomodToxicityConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_toxicity_config")) + block_list_config: 'BlockListConfig | None' = dc_field(default=None, metadata=dc_config(field_name="block_list_config")) + flood_config: 'FloodConfig | None' = dc_field(default=None, metadata=dc_config(field_name="flood_config")) + google_vision_config: 'GoogleVisionConfig | None' = dc_field(default=None, metadata=dc_config(field_name="google_vision_config")) + llm_config: 'LLMConfig | None' = dc_field(default=None, metadata=dc_config(field_name="llm_config")) + velocity_filter_config: 'VelocityFilterConfig | None' = dc_field(default=None, metadata=dc_config(field_name="velocity_filter_config")) + video_call_rule_config: 'VideoCallRuleConfig | None' = dc_field(default=None, metadata=dc_config(field_name="video_call_rule_config")) @dataclass class ModerationCustomActionEvent(DataClassJsonMixin): # The ID of the custom action that was executed action_id: str = dc_field(metadata=dc_config(field_name="action_id")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - review_queue_item: "ReviewQueueItemResponse" = dc_field( - metadata=dc_config(field_name="review_queue_item") - ) - type: str = dc_field( - default="moderation.custom_action", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + review_queue_item: 'ReviewQueueItemResponse' = dc_field(metadata=dc_config(field_name="review_queue_item")) + type: str = dc_field(default="moderation.custom_action", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Additional options passed to the custom action - action_options: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="action_options") - ) + action_options: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="action_options")) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) @dataclass class ModerationDashboardPreferences(DataClassJsonMixin): - async_review_queue_upsert: bool | None = dc_field( - default=None, metadata=dc_config(field_name="async_review_queue_upsert") - ) - block_foreign_cdn_attachments: bool | None = dc_field( - default=None, metadata=dc_config(field_name="block_foreign_cdn_attachments") - ) - custom_views_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="custom_views_enabled") - ) - disable_audit_logs: bool | None = dc_field( - default=None, metadata=dc_config(field_name="disable_audit_logs") - ) - disable_flagging_reviewed_entity: bool | None = dc_field( - default=None, metadata=dc_config(field_name="disable_flagging_reviewed_entity") - ) - escalation_queue_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="escalation_queue_enabled") - ) - flag_user_on_flagged_content: bool | None = dc_field( - default=None, metadata=dc_config(field_name="flag_user_on_flagged_content") - ) - include_attachment_payload: bool | None = dc_field( - default=None, metadata=dc_config(field_name="include_attachment_payload") - ) - media_queue_blur_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="media_queue_blur_enabled") - ) - allowed_moderation_action_reasons: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="allowed_moderation_action_reasons") - ) - escalation_reasons: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="escalation_reasons") - ) - filterable_custom_keys: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="filterable_custom_keys") - ) - keyframe_classifications_map: "dict[str, dict[str, bool]] | None" = dc_field( - default=None, metadata=dc_config(field_name="keyframe_classifications_map") - ) - overview_dashboard: "OverviewDashboardConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="overview_dashboard") - ) - + async_review_queue_upsert: bool | None = dc_field(default=None, metadata=dc_config(field_name="async_review_queue_upsert")) + block_foreign_cdn_attachments: bool | None = dc_field(default=None, metadata=dc_config(field_name="block_foreign_cdn_attachments")) + custom_views_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="custom_views_enabled")) + disable_audit_logs: bool | None = dc_field(default=None, metadata=dc_config(field_name="disable_audit_logs")) + disable_flagging_reviewed_entity: bool | None = dc_field(default=None, metadata=dc_config(field_name="disable_flagging_reviewed_entity")) + escalation_queue_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="escalation_queue_enabled")) + flag_user_on_flagged_content: bool | None = dc_field(default=None, metadata=dc_config(field_name="flag_user_on_flagged_content")) + include_attachment_payload: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_attachment_payload")) + media_queue_blur_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="media_queue_blur_enabled")) + allowed_moderation_action_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_moderation_action_reasons")) + escalation_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="escalation_reasons")) + filterable_custom_keys: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filterable_custom_keys")) + keyframe_classifications_map: 'dict[str, dict[str, bool]] | None' = dc_field(default=None, metadata=dc_config(field_name="keyframe_classifications_map")) + overview_dashboard: 'OverviewDashboardConfig | None' = dc_field(default=None, metadata=dc_config(field_name="overview_dashboard")) @dataclass class ModerationFlagResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - result: "list[dict[str, object]]" = dc_field( - metadata=dc_config(field_name="result") - ) - entity_creator_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_creator_id") - ) + result: 'list[dict[str, object]]' = dc_field(metadata=dc_config(field_name="result")) + content_published_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="content_published_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + entity_creator_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_creator_id")) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - review_queue_item_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="review_queue_item_id") - ) - labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="labels") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + review_queue_item_id: str | None = dc_field(default=None, metadata=dc_config(field_name="review_queue_item_id")) + labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="labels")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # Content payload for moderation - moderation_payload: "ModerationPayloadResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation_payload") - ) - review_queue_item: "ReviewQueueItemResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="review_queue_item") - ) + moderation_payload: 'ModerationPayloadResponse | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_payload")) + review_queue_item: 'ReviewQueueItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="review_queue_item")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ModerationFlaggedEvent(DataClassJsonMixin): # The type of content that was flagged content_type: str = dc_field(metadata=dc_config(field_name="content_type")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The ID of the flagged content object_id: str = dc_field(metadata=dc_config(field_name="object_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="moderation.flagged", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="moderation.flagged", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class ModerationImageAnalysisCompleteEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - type: str = dc_field( - default="moderation.image_analysis.complete", - metadata=dc_config(field_name="type"), - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field(default="moderation.image_analysis.complete", metadata=dc_config(field_name="type")) # The moderation policy key that was applied. - config_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="config_key") - ) + config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) # Echo of the `entity_creator_id` on the /analyze request. - entity_creator_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_creator_id") - ) + entity_creator_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_creator_id")) # Echo of the `entity_id` on the /analyze request. - entity_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_id") - ) + entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) # Echo of the `entity_type` on the /analyze request. - entity_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Review queue row ID for deep-linking into the dashboard. - review_queue_item_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="review_queue_item_id") - ) + review_queue_item_id: str | None = dc_field(default=None, metadata=dc_config(field_name="review_queue_item_id")) # Echo of the `custom` metadata on the /analyze request. - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # Per-image verdicts, same shape as the /analyze HTTP response. Each entry carries `id` when the request supplied `content_ids`. - images: "dict[str, AnalyzeImageField] | None" = dc_field( - default=None, metadata=dc_config(field_name="images") - ) + images: 'dict[str, AnalyzeImageField] | None' = dc_field(default=None, metadata=dc_config(field_name="images")) # Per-text-field verdicts, same shape as the /analyze HTTP response. Each entry carries `id` when the request supplied `content_ids`. - texts: "dict[str, AnalyzeTextField] | None" = dc_field( - default=None, metadata=dc_config(field_name="texts") - ) - + texts: 'dict[str, AnalyzeTextField] | None' = dc_field(default=None, metadata=dc_config(field_name="texts")) @dataclass class ModerationMarkReviewedEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - item: "ReviewQueueItemResponse" = dc_field(metadata=dc_config(field_name="item")) - type: str = dc_field( - default="moderation.mark_reviewed", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + item: 'ReviewQueueItemResponse' = dc_field(metadata=dc_config(field_name="item")) + type: str = dc_field(default="moderation.mark_reviewed", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) @dataclass class ModerationPayload(DataClassJsonMixin): - audios: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="audios") - ) - image_ordered_keys: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="image_ordered_keys") - ) - images: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="images") - ) - other_media: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="other_media") - ) - text_ordered_keys: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="text_ordered_keys") - ) - texts: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="texts") - ) - videos: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="videos") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - image_ids: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="image_ids") - ) - text_ids: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="text_ids") - ) - + audios: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="audios")) + image_ordered_keys: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="image_ordered_keys")) + images: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="images")) + other_media: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="other_media")) + text_ordered_keys: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="text_ordered_keys")) + texts: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="texts")) + videos: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="videos")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + image_ids: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="image_ids")) + text_ids: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="text_ids")) @dataclass class ModerationPayloadRequest(DataClassJsonMixin): # Audio URLs to moderate - audios: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="audios") - ) + audios: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="audios")) # Image URLs to moderate (max 30) - images: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="images") - ) + images: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="images")) # Text content to moderate - texts: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="texts") - ) + texts: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="texts")) # Video URLs to moderate - videos: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="videos") - ) + videos: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="videos")) # Custom data for moderation - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class ModerationPayloadResponse(DataClassJsonMixin): # Audio URLs to moderate - audios: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="audios") - ) + audios: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="audios")) # Caller-supplied keys for images, index-aligned with images[] - image_ordered_keys: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="image_ordered_keys") - ) + image_ordered_keys: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="image_ordered_keys")) # Image URLs to moderate - images: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="images") - ) + images: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="images")) # Media URLs from attachments outside the typed image/video/audio lists (custom attachment types such as GIF pickers) - other_media: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="other_media") - ) + other_media: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="other_media")) # Caller-supplied keys for texts (e.g. "title", "description"), index-aligned with texts[] - text_ordered_keys: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="text_ordered_keys") - ) + text_ordered_keys: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="text_ordered_keys")) # Text content to moderate - texts: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="texts") - ) + texts: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="texts")) # Video URLs to moderate - videos: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="videos") - ) + videos: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="videos")) # Custom data for moderation - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # Caller-supplied content IDs per image key (from content_ids on /analyze) - image_ids: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="image_ids") - ) + image_ids: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="image_ids")) # Caller-supplied content IDs per text key (from content_ids on /analyze) - text_ids: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="text_ids") - ) - + text_ids: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="text_ids")) @dataclass class ModerationQueueResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) created_by: str = dc_field(metadata=dc_config(field_name="created_by")) description: str = dc_field(metadata=dc_config(field_name="description")) id: str = dc_field(metadata=dc_config(field_name="id")) item_count: int = dc_field(metadata=dc_config(field_name="item_count")) name: str = dc_field(metadata=dc_config(field_name="name")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - sort: "list[dict[str, object]]" = dc_field(metadata=dc_config(field_name="sort")) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + sort: 'list[dict[str, object]]' = dc_field(metadata=dc_config(field_name="sort")) filters: dict[str, object] = dc_field(metadata=dc_config(field_name="filters")) - @dataclass class ModerationResponse(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) @@ -18865,7 +9433,6 @@ class ModerationResponse(DataClassJsonMixin): spam: float = dc_field(metadata=dc_config(field_name="spam")) toxic: float = dc_field(metadata=dc_config(field_name="toxic")) - @dataclass class ModerationRuleInfo(DataClassJsonMixin): description: str = dc_field(metadata=dc_config(field_name="description")) @@ -18873,60 +9440,27 @@ class ModerationRuleInfo(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) type: str = dc_field(metadata=dc_config(field_name="type")) - @dataclass class ModerationRuleV2Response(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) description: str = dc_field(metadata=dc_config(field_name="description")) enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) id: str = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) rule_type: str = dc_field(metadata=dc_config(field_name="rule_type")) team: str = dc_field(metadata=dc_config(field_name="team")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) config_keys: list[str] = dc_field(metadata=dc_config(field_name="config_keys")) - cooldown_period: str | None = dc_field( - default=None, metadata=dc_config(field_name="cooldown_period") - ) + cooldown_period: str | None = dc_field(default=None, metadata=dc_config(field_name="cooldown_period")) logic: str | None = dc_field(default=None, metadata=dc_config(field_name="logic")) - action_sequences: "list[CallRuleActionSequence] | None" = dc_field( - default=None, metadata=dc_config(field_name="action_sequences") - ) - conditions: "list[RuleBuilderCondition] | None" = dc_field( - default=None, metadata=dc_config(field_name="conditions") - ) - groups: "list[RuleBuilderConditionGroup] | None" = dc_field( - default=None, metadata=dc_config(field_name="groups") - ) - action: "RuleBuilderAction | None" = dc_field( - default=None, metadata=dc_config(field_name="action") - ) - + action_sequences: 'list[CallRuleActionSequence] | None' = dc_field(default=None, metadata=dc_config(field_name="action_sequences")) + conditions: 'list[RuleBuilderCondition] | None' = dc_field(default=None, metadata=dc_config(field_name="conditions")) + groups: 'list[RuleBuilderConditionGroup] | None' = dc_field(default=None, metadata=dc_config(field_name="groups")) + action: 'RuleBuilderAction | None' = dc_field(default=None, metadata=dc_config(field_name="action")) @dataclass class ModerationRulesTriggeredEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The ID of the entity that triggered the rule entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) # The type of the entity (call, user, message, etc.) @@ -18934,490 +9468,230 @@ class ModerationRulesTriggeredEvent(DataClassJsonMixin): # The ID of the user who triggered the rule user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # Array of action types that were triggered - triggered_actions: list[str] = dc_field( - metadata=dc_config(field_name="triggered_actions") - ) + triggered_actions: list[str] = dc_field(metadata=dc_config(field_name="triggered_actions")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - rule: "ModerationRuleInfo" = dc_field(metadata=dc_config(field_name="rule")) - type: str = dc_field( - default="moderation_rule.triggered", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + rule: 'ModerationRuleInfo' = dc_field(metadata=dc_config(field_name="rule")) + type: str = dc_field(default="moderation_rule.triggered", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The review queue item ID if applicable - review_queue_item_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="review_queue_item_id") - ) + review_queue_item_id: str | None = dc_field(default=None, metadata=dc_config(field_name="review_queue_item_id")) # The violation number for call rules (optional) - violation_number: int | None = dc_field( - default=None, metadata=dc_config(field_name="violation_number") - ) + violation_number: int | None = dc_field(default=None, metadata=dc_config(field_name="violation_number")) # Ordered list of contents whose verdicts contributed to an aggregation rule's threshold. Populated only for aggregation rules when callers supplied `content_ids`. - matched_contents: "list[MatchedContent] | None" = dc_field( - default=None, metadata=dc_config(field_name="matched_contents") - ) - + matched_contents: 'list[MatchedContent] | None' = dc_field(default=None, metadata=dc_config(field_name="matched_contents")) @dataclass class ModerationTextAnalysisCompleteEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - type: str = dc_field( - default="moderation.text_analysis.complete", - metadata=dc_config(field_name="type"), - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field(default="moderation.text_analysis.complete", metadata=dc_config(field_name="type")) # The moderation policy key that was applied. - config_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="config_key") - ) + config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) # Echo of the `entity_creator_id` on the /analyze request. - entity_creator_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_creator_id") - ) + entity_creator_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_creator_id")) # Echo of the `entity_id` on the /analyze request. - entity_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_id") - ) + entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) # Echo of the `entity_type` on the /analyze request. - entity_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Review queue row ID for deep-linking into the dashboard. - review_queue_item_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="review_queue_item_id") - ) + review_queue_item_id: str | None = dc_field(default=None, metadata=dc_config(field_name="review_queue_item_id")) # Echo of the `custom` metadata on the /analyze request. - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # Per-text-field verdicts, same shape as the /analyze HTTP response. Each entry carries `id` when the request supplied `content_ids`. - texts: "dict[str, AnalyzeTextField] | None" = dc_field( - default=None, metadata=dc_config(field_name="texts") - ) - + texts: 'dict[str, AnalyzeTextField] | None' = dc_field(default=None, metadata=dc_config(field_name="texts")) @dataclass class ModerationV2Response(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) original_text: str = dc_field(metadata=dc_config(field_name="original_text")) - blocklist_matched: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist_matched") - ) - platform_circumvented: bool | None = dc_field( - default=None, metadata=dc_config(field_name="platform_circumvented") - ) - semantic_filter_matched: str | None = dc_field( - default=None, metadata=dc_config(field_name="semantic_filter_matched") - ) - blocklists_matched: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="blocklists_matched") - ) - image_harms: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="image_harms") - ) - text_harms: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="text_harms") - ) - + blocklist_matched: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_matched")) + platform_circumvented: bool | None = dc_field(default=None, metadata=dc_config(field_name="platform_circumvented")) + semantic_filter_matched: str | None = dc_field(default=None, metadata=dc_config(field_name="semantic_filter_matched")) + blocklists_matched: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="blocklists_matched")) + image_harms: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="image_harms")) + text_harms: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="text_harms")) @dataclass class MuteChannelRequest(DataClassJsonMixin): # Duration of mute in milliseconds - expiration: int | None = dc_field( - default=None, metadata=dc_config(field_name="expiration") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + expiration: int | None = dc_field(default=None, metadata=dc_config(field_name="expiration")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Channel CIDs to mute (if multiple channels) - channel_cids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_cids") - ) + channel_cids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="channel_cids")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MuteChannelResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Object with mutes (if multiple channels were muted) - channel_mutes: "list[ChannelMute] | None" = dc_field( - default=None, metadata=dc_config(field_name="channel_mutes") - ) - channel_mute: "ChannelMute | None" = dc_field( - default=None, metadata=dc_config(field_name="channel_mute") - ) - own_user: "OwnUserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="own_user") - ) - + channel_mutes: 'list[ChannelMute] | None' = dc_field(default=None, metadata=dc_config(field_name="channel_mutes")) + channel_mute: 'ChannelMute | None' = dc_field(default=None, metadata=dc_config(field_name="channel_mute")) + own_user: 'OwnUserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="own_user")) @dataclass class MuteRequest(DataClassJsonMixin): # User IDs to mute (if multiple users) target_ids: list[str] = dc_field(metadata=dc_config(field_name="target_ids")) # Duration of mute in minutes - timeout: int | None = dc_field( - default=None, metadata=dc_config(field_name="timeout") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + timeout: int | None = dc_field(default=None, metadata=dc_config(field_name="timeout")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class MuteResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Object with mutes (if multiple users were muted) - mutes: "list[UserMuteResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="mutes") - ) + mutes: 'list[UserMuteResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mutes")) # A list of users that can't be found. Common cause for this is deleted users - non_existing_users: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="non_existing_users") - ) - own_user: "OwnUserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="own_user") - ) - + non_existing_users: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="non_existing_users")) + own_user: 'OwnUserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="own_user")) @dataclass class MuteUsersRequest(DataClassJsonMixin): audio: bool | None = dc_field(default=None, metadata=dc_config(field_name="audio")) - mute_all_users: bool | None = dc_field( - default=None, metadata=dc_config(field_name="mute_all_users") - ) - muted_by_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="muted_by_id") - ) - screenshare: bool | None = dc_field( - default=None, metadata=dc_config(field_name="screenshare") - ) - screenshare_audio: bool | None = dc_field( - default=None, metadata=dc_config(field_name="screenshare_audio") - ) + mute_all_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="mute_all_users")) + muted_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="muted_by_id")) + screenshare: bool | None = dc_field(default=None, metadata=dc_config(field_name="screenshare")) + screenshare_audio: bool | None = dc_field(default=None, metadata=dc_config(field_name="screenshare_audio")) video: bool | None = dc_field(default=None, metadata=dc_config(field_name="video")) - user_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="user_ids") - ) + user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="user_ids")) # User request object - muted_by: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="muted_by") - ) - + muted_by: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="muted_by")) @dataclass class MuteUsersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class NetworkMetricsReportResponse(DataClassJsonMixin): - average_connection_time: float | None = dc_field( - default=None, metadata=dc_config(field_name="average_connection_time") - ) - average_jitter: float | None = dc_field( - default=None, metadata=dc_config(field_name="average_jitter") - ) - average_latency: float | None = dc_field( - default=None, metadata=dc_config(field_name="average_latency") - ) - average_time_to_reconnect: float | None = dc_field( - default=None, metadata=dc_config(field_name="average_time_to_reconnect") - ) - + average_connection_time: float | None = dc_field(default=None, metadata=dc_config(field_name="average_connection_time")) + average_jitter: float | None = dc_field(default=None, metadata=dc_config(field_name="average_jitter")) + average_latency: float | None = dc_field(default=None, metadata=dc_config(field_name="average_latency")) + average_time_to_reconnect: float | None = dc_field(default=None, metadata=dc_config(field_name="average_time_to_reconnect")) @dataclass class NoiseCancellationSettings(DataClassJsonMixin): mode: str = dc_field(metadata=dc_config(field_name="mode")) - @dataclass class NotificationComment(DataClassJsonMixin): comment: str = dc_field(metadata=dc_config(field_name="comment")) id: str = dc_field(metadata=dc_config(field_name="id")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) - + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) @dataclass class NotificationConfig(DataClassJsonMixin): # Time window for deduplicating notification activities (reactions and follows). Empty or '0' = always deduplicate (default). Examples: '1h', '24h', '7d', '1w' - deduplication_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="deduplication_window") - ) + deduplication_window: str | None = dc_field(default=None, metadata=dc_config(field_name="deduplication_window")) # Whether to track read status - track_read: bool | None = dc_field( - default=None, metadata=dc_config(field_name="track_read") - ) + track_read: bool | None = dc_field(default=None, metadata=dc_config(field_name="track_read")) # Whether to track seen status - track_seen: bool | None = dc_field( - default=None, metadata=dc_config(field_name="track_seen") - ) - + track_seen: bool | None = dc_field(default=None, metadata=dc_config(field_name="track_seen")) @dataclass class NotificationContext(DataClassJsonMixin): - target: "NotificationTarget | None" = dc_field( - default=None, metadata=dc_config(field_name="target") - ) - trigger: "NotificationTrigger | None" = dc_field( - default=None, metadata=dc_config(field_name="trigger") - ) - + target: 'NotificationTarget | None' = dc_field(default=None, metadata=dc_config(field_name="target")) + trigger: 'NotificationTrigger | None' = dc_field(default=None, metadata=dc_config(field_name="trigger")) @dataclass class NotificationFeedUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The ID of the feed fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.notification_feed.updated" in this case - type: str = dc_field( - default="feeds.notification_feed.updated", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + type: str = dc_field(default="feeds.notification_feed.updated", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Aggregated activities for notification feeds - aggregated_activities: "list[AggregatedActivityResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="aggregated_activities") - ) - notification_status: "NotificationStatusResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="notification_status") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + aggregated_activities: 'list[AggregatedActivityResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="aggregated_activities")) + notification_status: 'NotificationStatusResponse | None' = dc_field(default=None, metadata=dc_config(field_name="notification_status")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class NotificationMarkUnreadEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "notification.mark_unread" in this case - type: str = dc_field( - default="notification.mark_unread", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="notification.mark_unread", metadata=dc_config(field_name="type")) # The ID of the channel which was marked as unread - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel which was marked as unread - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel which was marked as unread cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) # The ID of the first unread message - first_unread_message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="first_unread_message_id") - ) + first_unread_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="first_unread_message_id")) # The time when the channel/thread was marked as unread - last_read_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_read_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + last_read_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_read_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The ID of the last read message - last_read_message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="last_read_message_id") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + last_read_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="last_read_message_id")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # The ID of the thread which was marked as unread - thread_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="thread_id") - ) + thread_id: str | None = dc_field(default=None, metadata=dc_config(field_name="thread_id")) # The total number of unread messages - total_unread_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="total_unread_count") - ) + total_unread_count: int | None = dc_field(default=None, metadata=dc_config(field_name="total_unread_count")) # The number of channels with unread messages - unread_channels: int | None = dc_field( - default=None, metadata=dc_config(field_name="unread_channels") - ) + unread_channels: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_channels")) # The total number of unread messages - unread_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="unread_count") - ) + unread_count: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_count")) # The number of unread messages in the channel/thread after first_unread_message_id - unread_messages: int | None = dc_field( - default=None, metadata=dc_config(field_name="unread_messages") - ) + unread_messages: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_messages")) # The total number of unread messages in the threads - unread_thread_messages: int | None = dc_field( - default=None, metadata=dc_config(field_name="unread_thread_messages") - ) + unread_thread_messages: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_thread_messages")) # The number of unread threads - unread_threads: int | None = dc_field( - default=None, metadata=dc_config(field_name="unread_threads") - ) + unread_threads: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_threads")) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - grouped_unread_channels: "dict[str, int] | None" = dc_field( - default=None, metadata=dc_config(field_name="grouped_unread_channels") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + grouped_unread_channels: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="grouped_unread_channels")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class NotificationParentActivity(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) - + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) @dataclass class NotificationSettings(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - call_live_started: "EventNotificationSettings" = dc_field( - metadata=dc_config(field_name="call_live_started") - ) - call_missed: "EventNotificationSettings" = dc_field( - metadata=dc_config(field_name="call_missed") - ) - call_notification: "EventNotificationSettings" = dc_field( - metadata=dc_config(field_name="call_notification") - ) - call_ring: "EventNotificationSettings" = dc_field( - metadata=dc_config(field_name="call_ring") - ) - session_started: "EventNotificationSettings" = dc_field( - metadata=dc_config(field_name="session_started") - ) - + call_live_started: 'EventNotificationSettings' = dc_field(metadata=dc_config(field_name="call_live_started")) + call_missed: 'EventNotificationSettings' = dc_field(metadata=dc_config(field_name="call_missed")) + call_notification: 'EventNotificationSettings' = dc_field(metadata=dc_config(field_name="call_notification")) + call_ring: 'EventNotificationSettings' = dc_field(metadata=dc_config(field_name="call_ring")) + session_started: 'EventNotificationSettings' = dc_field(metadata=dc_config(field_name="session_started")) @dataclass class NotificationSettingsRequest(DataClassJsonMixin): - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - call_live_started: "EventNotificationSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="call_live_started") - ) - call_missed: "EventNotificationSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="call_missed") - ) - call_notification: "EventNotificationSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="call_notification") - ) - call_ring: "EventNotificationSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="call_ring") - ) - session_started: "EventNotificationSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="session_started") - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + call_live_started: 'EventNotificationSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="call_live_started")) + call_missed: 'EventNotificationSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="call_missed")) + call_notification: 'EventNotificationSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="call_notification")) + call_ring: 'EventNotificationSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="call_ring")) + session_started: 'EventNotificationSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="session_started")) @dataclass class NotificationSettingsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - call_live_started: "EventNotificationSettingsResponse" = dc_field( - metadata=dc_config(field_name="call_live_started") - ) - call_missed: "EventNotificationSettingsResponse" = dc_field( - metadata=dc_config(field_name="call_missed") - ) - call_notification: "EventNotificationSettingsResponse" = dc_field( - metadata=dc_config(field_name="call_notification") - ) - call_ring: "EventNotificationSettingsResponse" = dc_field( - metadata=dc_config(field_name="call_ring") - ) - session_started: "EventNotificationSettingsResponse" = dc_field( - metadata=dc_config(field_name="session_started") - ) - + call_live_started: 'EventNotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="call_live_started")) + call_missed: 'EventNotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="call_missed")) + call_notification: 'EventNotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="call_notification")) + call_ring: 'EventNotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="call_ring")) + session_started: 'EventNotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="session_started")) @dataclass class NotificationStatusResponse(DataClassJsonMixin): @@ -19426,34 +9700,13 @@ class NotificationStatusResponse(DataClassJsonMixin): # Number of unseen notifications unseen: int = dc_field(metadata=dc_config(field_name="unseen")) # When notifications were last read - last_read_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_read_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + last_read_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_read_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # When notifications were last seen - last_seen_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_seen_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + last_seen_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_seen_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Deprecated: use is_read on each activity/group instead. IDs of activities that have been read. Capped at ~101 entries for aggregated feeds. - read_activities: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="read_activities") - ) + read_activities: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="read_activities")) # Deprecated: use is_seen on each activity/group instead. IDs of activities that have been seen. Capped at ~101 entries for aggregated feeds. - seen_activities: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="seen_activities") - ) - + seen_activities: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="seen_activities")) @dataclass class NotificationTarget(DataClassJsonMixin): @@ -19466,94 +9719,47 @@ class NotificationTarget(DataClassJsonMixin): # The type of the target activity (for activity targets) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) # The ID of the user who created the target activity (for activity targets) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Attachments on the target activity (for activity targets) - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) - comment: "NotificationComment | None" = dc_field( - default=None, metadata=dc_config(field_name="comment") - ) + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + comment: 'NotificationComment | None' = dc_field(default=None, metadata=dc_config(field_name="comment")) # Custom data from the target activity - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - parent_activity: "NotificationParentActivity | None" = dc_field( - default=None, metadata=dc_config(field_name="parent_activity") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + parent_activity: 'NotificationParentActivity | None' = dc_field(default=None, metadata=dc_config(field_name="parent_activity")) @dataclass class NotificationThreadMessageNewEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # The ID of the thread thread_id: str = dc_field(metadata=dc_config(field_name="thread_id")) # The number of watchers watcher_count: int = dc_field(metadata=dc_config(field_name="watcher_count")) # Represents channel in chat - channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Represents any chat message - message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) + message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) # The type of event: "notification.message_new" in this case - type: str = dc_field( - default="notification.thread_message_new", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="notification.thread_message_new", metadata=dc_config(field_name="type")) # The ID of the channel where the message was sent - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel where the message was sent - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel where the message was sent cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - parent_author: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_author") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + parent_author: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_author")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - unread_thread_messages: int | None = dc_field( - default=None, metadata=dc_config(field_name="unread_thread_messages") - ) - unread_threads: int | None = dc_field( - default=None, metadata=dc_config(field_name="unread_threads") - ) + unread_thread_messages: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_thread_messages")) + unread_threads: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_threads")) # The participants of the thread - thread_participants: "list[UserResponseCommonFields] | None" = dc_field( - default=None, metadata=dc_config(field_name="thread_participants") - ) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - + thread_participants: 'list[UserResponseCommonFields] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) @dataclass class NotificationTrigger(DataClassJsonMixin): @@ -19561,216 +9767,118 @@ class NotificationTrigger(DataClassJsonMixin): text: str = dc_field(metadata=dc_config(field_name="text")) # The type of notification (mention, reaction, comment, follow, etc.) type: str = dc_field(metadata=dc_config(field_name="type")) - comment: "NotificationComment | None" = dc_field( - default=None, metadata=dc_config(field_name="comment") - ) + comment: 'NotificationComment | None' = dc_field(default=None, metadata=dc_config(field_name="comment")) # Custom data from the trigger object (comment, reaction, etc.) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class OCRContentParameters(DataClassJsonMixin): - label_operator: str | None = dc_field( - default=None, metadata=dc_config(field_name="label_operator") - ) - severity: str | None = dc_field( - default=None, metadata=dc_config(field_name="severity") - ) - harm_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="harm_labels") - ) - + label_operator: str | None = dc_field(default=None, metadata=dc_config(field_name="label_operator")) + severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) + harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) @dataclass class OCRRule(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) label: str = dc_field(metadata=dc_config(field_name="label")) - @dataclass class OnlyUserID(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) - @dataclass class OverviewDashboardConfig(DataClassJsonMixin): - default_date_range_days: int | None = dc_field( - default=None, metadata=dc_config(field_name="default_date_range_days") - ) - visible_charts: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="visible_charts") - ) - + default_date_range_days: int | None = dc_field(default=None, metadata=dc_config(field_name="default_date_range_days")) + visible_charts: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="visible_charts")) @dataclass class OwnBatchRequest(DataClassJsonMixin): # List of feed IDs to get own fields for feeds: list[str] = dc_field(metadata=dc_config(field_name="feeds")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Optional list of specific fields to return. If not specified, all fields (own_follows, own_followings, own_capabilities, own_membership) are returned - fields: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="fields") - ) + fields: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="fields")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class OwnBatchResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Map of feed ID to own fields data - data: "dict[str, FeedOwnData]" = dc_field(metadata=dc_config(field_name="data")) - - -OwnCapabilityType = NewType("OwnCapabilityType", str) + data: 'dict[str, FeedOwnData]' = dc_field(metadata=dc_config(field_name="data")) +OwnCapabilityType = NewType('OwnCapabilityType', str) class OwnCapability: - BLOCK_USERS: Final[OwnCapabilityType] = "block-users" - CHANGE_MAX_DURATION: Final[OwnCapabilityType] = "change-max-duration" - CREATE_CALL: Final[OwnCapabilityType] = "create-call" - CREATE_REACTION: Final[OwnCapabilityType] = "create-reaction" - ENABLE_NOISE_CANCELLATION: Final[OwnCapabilityType] = "enable-noise-cancellation" - END_CALL: Final[OwnCapabilityType] = "end-call" - JOIN_BACKSTAGE: Final[OwnCapabilityType] = "join-backstage" - JOIN_CALL: Final[OwnCapabilityType] = "join-call" - JOIN_ENDED_CALL: Final[OwnCapabilityType] = "join-ended-call" - KICK_USER: Final[OwnCapabilityType] = "kick-user" - MUTE_USERS: Final[OwnCapabilityType] = "mute-users" - PIN_FOR_EVERYONE: Final[OwnCapabilityType] = "pin-for-everyone" - READ_CALL: Final[OwnCapabilityType] = "read-call" - REMOVE_CALL_MEMBER: Final[OwnCapabilityType] = "remove-call-member" - SCREENSHARE: Final[OwnCapabilityType] = "screenshare" - SEND_AUDIO: Final[OwnCapabilityType] = "send-audio" - SEND_CLOSED_CAPTIONS_CALL: Final[OwnCapabilityType] = "send-closed-captions-call" - SEND_VIDEO: Final[OwnCapabilityType] = "send-video" - START_BROADCAST_CALL: Final[OwnCapabilityType] = "start-broadcast-call" - START_CLOSED_CAPTIONS_CALL: Final[OwnCapabilityType] = "start-closed-captions-call" - START_FRAME_RECORD_CALL: Final[OwnCapabilityType] = "start-frame-record-call" - START_INDIVIDUAL_RECORD_CALL: Final[OwnCapabilityType] = ( - "start-individual-record-call" - ) - START_RAW_RECORD_CALL: Final[OwnCapabilityType] = "start-raw-record-call" - START_RECORD_CALL: Final[OwnCapabilityType] = "start-record-call" - START_TRANSCRIPTION_CALL: Final[OwnCapabilityType] = "start-transcription-call" - STOP_BROADCAST_CALL: Final[OwnCapabilityType] = "stop-broadcast-call" - STOP_CLOSED_CAPTIONS_CALL: Final[OwnCapabilityType] = "stop-closed-captions-call" - STOP_FRAME_RECORD_CALL: Final[OwnCapabilityType] = "stop-frame-record-call" - STOP_INDIVIDUAL_RECORD_CALL: Final[OwnCapabilityType] = ( - "stop-individual-record-call" - ) - STOP_RAW_RECORD_CALL: Final[OwnCapabilityType] = "stop-raw-record-call" - STOP_RECORD_CALL: Final[OwnCapabilityType] = "stop-record-call" - STOP_TRANSCRIPTION_CALL: Final[OwnCapabilityType] = "stop-transcription-call" - UPDATE_CALL: Final[OwnCapabilityType] = "update-call" - UPDATE_CALL_MEMBER: Final[OwnCapabilityType] = "update-call-member" - UPDATE_CALL_PERMISSIONS: Final[OwnCapabilityType] = "update-call-permissions" - UPDATE_CALL_SETTINGS: Final[OwnCapabilityType] = "update-call-settings" - + BLOCK_USERS: Final[OwnCapabilityType] = 'block-users' + CHANGE_MAX_DURATION: Final[OwnCapabilityType] = 'change-max-duration' + CREATE_CALL: Final[OwnCapabilityType] = 'create-call' + CREATE_REACTION: Final[OwnCapabilityType] = 'create-reaction' + ENABLE_NOISE_CANCELLATION: Final[OwnCapabilityType] = 'enable-noise-cancellation' + END_CALL: Final[OwnCapabilityType] = 'end-call' + JOIN_BACKSTAGE: Final[OwnCapabilityType] = 'join-backstage' + JOIN_CALL: Final[OwnCapabilityType] = 'join-call' + JOIN_ENDED_CALL: Final[OwnCapabilityType] = 'join-ended-call' + KICK_USER: Final[OwnCapabilityType] = 'kick-user' + MUTE_USERS: Final[OwnCapabilityType] = 'mute-users' + PIN_FOR_EVERYONE: Final[OwnCapabilityType] = 'pin-for-everyone' + READ_CALL: Final[OwnCapabilityType] = 'read-call' + REMOVE_CALL_MEMBER: Final[OwnCapabilityType] = 'remove-call-member' + SCREENSHARE: Final[OwnCapabilityType] = 'screenshare' + SEND_AUDIO: Final[OwnCapabilityType] = 'send-audio' + SEND_CLOSED_CAPTIONS_CALL: Final[OwnCapabilityType] = 'send-closed-captions-call' + SEND_VIDEO: Final[OwnCapabilityType] = 'send-video' + START_BROADCAST_CALL: Final[OwnCapabilityType] = 'start-broadcast-call' + START_CLOSED_CAPTIONS_CALL: Final[OwnCapabilityType] = 'start-closed-captions-call' + START_FRAME_RECORD_CALL: Final[OwnCapabilityType] = 'start-frame-record-call' + START_INDIVIDUAL_RECORD_CALL: Final[OwnCapabilityType] = 'start-individual-record-call' + START_RAW_RECORD_CALL: Final[OwnCapabilityType] = 'start-raw-record-call' + START_RECORD_CALL: Final[OwnCapabilityType] = 'start-record-call' + START_TRANSCRIPTION_CALL: Final[OwnCapabilityType] = 'start-transcription-call' + STOP_BROADCAST_CALL: Final[OwnCapabilityType] = 'stop-broadcast-call' + STOP_CLOSED_CAPTIONS_CALL: Final[OwnCapabilityType] = 'stop-closed-captions-call' + STOP_FRAME_RECORD_CALL: Final[OwnCapabilityType] = 'stop-frame-record-call' + STOP_INDIVIDUAL_RECORD_CALL: Final[OwnCapabilityType] = 'stop-individual-record-call' + STOP_RAW_RECORD_CALL: Final[OwnCapabilityType] = 'stop-raw-record-call' + STOP_RECORD_CALL: Final[OwnCapabilityType] = 'stop-record-call' + STOP_TRANSCRIPTION_CALL: Final[OwnCapabilityType] = 'stop-transcription-call' + UPDATE_CALL: Final[OwnCapabilityType] = 'update-call' + UPDATE_CALL_MEMBER: Final[OwnCapabilityType] = 'update-call-member' + UPDATE_CALL_PERMISSIONS: Final[OwnCapabilityType] = 'update-call-permissions' + UPDATE_CALL_SETTINGS: Final[OwnCapabilityType] = 'update-call-settings' @dataclass class OwnUserResponse(DataClassJsonMixin): banned: bool = dc_field(metadata=dc_config(field_name="banned")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) id: str = dc_field(metadata=dc_config(field_name="id")) invisible: bool = dc_field(metadata=dc_config(field_name="invisible")) language: str = dc_field(metadata=dc_config(field_name="language")) online: bool = dc_field(metadata=dc_config(field_name="online")) role: str = dc_field(metadata=dc_config(field_name="role")) - total_unread_count: int = dc_field( - metadata=dc_config(field_name="total_unread_count") - ) + total_unread_count: int = dc_field(metadata=dc_config(field_name="total_unread_count")) unread_channels: int = dc_field(metadata=dc_config(field_name="unread_channels")) unread_count: int = dc_field(metadata=dc_config(field_name="unread_count")) unread_threads: int = dc_field(metadata=dc_config(field_name="unread_threads")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - channel_mutes: "list[ChannelMute]" = dc_field( - metadata=dc_config(field_name="channel_mutes") - ) - devices: "list[DeviceResponse]" = dc_field(metadata=dc_config(field_name="devices")) - mutes: "list[UserMuteResponse]" = dc_field(metadata=dc_config(field_name="mutes")) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + channel_mutes: 'list[ChannelMute]' = dc_field(metadata=dc_config(field_name="channel_mutes")) + devices: 'list[DeviceResponse]' = dc_field(metadata=dc_config(field_name="devices")) + mutes: 'list[UserMuteResponse]' = dc_field(metadata=dc_config(field_name="mutes")) teams: list[str] = dc_field(metadata=dc_config(field_name="teams")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - avg_response_time: int | None = dc_field( - default=None, metadata=dc_config(field_name="avg_response_time") - ) - deactivated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deactivated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + avg_response_time: int | None = dc_field(default=None, metadata=dc_config(field_name="avg_response_time")) + deactivated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deactivated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) image: str | None = dc_field(default=None, metadata=dc_config(field_name="image")) - last_active: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_active", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + last_active: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_active", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - revoke_tokens_issued_before: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="revoke_tokens_issued_before", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - blocked_user_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="blocked_user_ids") - ) - latest_hidden_channels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="latest_hidden_channels") - ) - privacy_settings: "PrivacySettingsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="privacy_settings") - ) - push_preferences: "PushPreferencesResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="push_preferences") - ) - teams_role: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="teams_role") - ) - total_unread_count_by_team: "dict[str, int] | None" = dc_field( - default=None, metadata=dc_config(field_name="total_unread_count_by_team") - ) - + revoke_tokens_issued_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="revoke_tokens_issued_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + blocked_user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="blocked_user_ids")) + latest_hidden_channels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="latest_hidden_channels")) + privacy_settings: 'PrivacySettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="privacy_settings")) + push_preferences: 'PushPreferencesResponse | None' = dc_field(default=None, metadata=dc_config(field_name="push_preferences")) + teams_role: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="teams_role")) + total_unread_count_by_team: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="total_unread_count_by_team")) @dataclass class PagerRequest(DataClassJsonMixin): @@ -19778,27 +9886,21 @@ class PagerRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class PagerResponse(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class PaginationParams(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) offset: int | None = dc_field(default=None, metadata=dc_config(field_name="offset")) - @dataclass class ParsedPredefinedFilterResponse(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) filter: dict[str, object] = dc_field(metadata=dc_config(field_name="filter")) - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) - + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) @dataclass class ParticipantCountByMinuteResponse(DataClassJsonMixin): @@ -19806,128 +9908,54 @@ class ParticipantCountByMinuteResponse(DataClassJsonMixin): last: int = dc_field(metadata=dc_config(field_name="last")) max: int = dc_field(metadata=dc_config(field_name="max")) min: int = dc_field(metadata=dc_config(field_name="min")) - start_ts: datetime = dc_field( - metadata=dc_config( - field_name="start_ts", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - + start_ts: datetime = dc_field(metadata=dc_config(field_name="start_ts", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class ParticipantCountOverTimeResponse(DataClassJsonMixin): - by_minute: "list[ParticipantCountByMinuteResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="by_minute") - ) - + by_minute: 'list[ParticipantCountByMinuteResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="by_minute")) @dataclass class ParticipantReportResponse(DataClassJsonMixin): sum: int = dc_field(metadata=dc_config(field_name="sum")) unique: int = dc_field(metadata=dc_config(field_name="unique")) - max_concurrent: int | None = dc_field( - default=None, metadata=dc_config(field_name="max_concurrent") - ) - by_browser: "list[GroupedStatsResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="by_browser") - ) - by_country: "list[GroupedStatsResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="by_country") - ) - by_device: "list[GroupedStatsResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="by_device") - ) - by_operating_system: "list[GroupedStatsResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="by_operating_system") - ) - count_over_time: "ParticipantCountOverTimeResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="count_over_time") - ) - publishers: "PublisherStatsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="publishers") - ) - subscribers: "SubscriberStatsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="subscribers") - ) - + max_concurrent: int | None = dc_field(default=None, metadata=dc_config(field_name="max_concurrent")) + by_browser: 'list[GroupedStatsResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="by_browser")) + by_country: 'list[GroupedStatsResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="by_country")) + by_device: 'list[GroupedStatsResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="by_device")) + by_operating_system: 'list[GroupedStatsResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="by_operating_system")) + count_over_time: 'ParticipantCountOverTimeResponse | None' = dc_field(default=None, metadata=dc_config(field_name="count_over_time")) + publishers: 'PublisherStatsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="publishers")) + subscribers: 'SubscriberStatsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="subscribers")) @dataclass class ParticipantSeriesPublisherStats(DataClassJsonMixin): - global_metrics_order: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="global_metrics_order") - ) - _global: "dict[str, list[list[float]]] | None" = dc_field( - default=None, metadata=dc_config(field_name="global") - ) - global_meta: "dict[str, MetricDescriptor] | None" = dc_field( - default=None, metadata=dc_config(field_name="global_meta") - ) - global_thresholds: "dict[str, list[MetricThreshold]] | None" = dc_field( - default=None, metadata=dc_config(field_name="global_thresholds") - ) - tracks: "dict[str, list[ParticipantSeriesTrackMetrics]] | None" = dc_field( - default=None, metadata=dc_config(field_name="tracks") - ) - + global_metrics_order: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="global_metrics_order")) + _global: 'dict[str, list[list[float]]] | None' = dc_field(default=None, metadata=dc_config(field_name="global")) + global_meta: 'dict[str, MetricDescriptor] | None' = dc_field(default=None, metadata=dc_config(field_name="global_meta")) + global_thresholds: 'dict[str, list[MetricThreshold]] | None' = dc_field(default=None, metadata=dc_config(field_name="global_thresholds")) + tracks: 'dict[str, list[ParticipantSeriesTrackMetrics]] | None' = dc_field(default=None, metadata=dc_config(field_name="tracks")) @dataclass class ParticipantSeriesSubscriberStats(DataClassJsonMixin): - global_metrics_order: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="global_metrics_order") - ) - subscriptions: "list[ParticipantSeriesSubscriptionTrackMetrics] | None" = dc_field( - default=None, metadata=dc_config(field_name="subscriptions") - ) - _global: "dict[str, list[list[float]]] | None" = dc_field( - default=None, metadata=dc_config(field_name="global") - ) - global_meta: "dict[str, MetricDescriptor] | None" = dc_field( - default=None, metadata=dc_config(field_name="global_meta") - ) - global_thresholds: "dict[str, list[MetricThreshold]] | None" = dc_field( - default=None, metadata=dc_config(field_name="global_thresholds") - ) - + global_metrics_order: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="global_metrics_order")) + subscriptions: 'list[ParticipantSeriesSubscriptionTrackMetrics] | None' = dc_field(default=None, metadata=dc_config(field_name="subscriptions")) + _global: 'dict[str, list[list[float]]] | None' = dc_field(default=None, metadata=dc_config(field_name="global")) + global_meta: 'dict[str, MetricDescriptor] | None' = dc_field(default=None, metadata=dc_config(field_name="global_meta")) + global_thresholds: 'dict[str, list[MetricThreshold]] | None' = dc_field(default=None, metadata=dc_config(field_name="global_thresholds")) @dataclass class ParticipantSeriesSubscriptionTrackMetrics(DataClassJsonMixin): - publisher_user_id: str = dc_field( - metadata=dc_config(field_name="publisher_user_id") - ) - publisher_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="publisher_name") - ) - publisher_user_session_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="publisher_user_session_id") - ) - tracks: "dict[str, list[ParticipantSeriesTrackMetrics]] | None" = dc_field( - default=None, metadata=dc_config(field_name="tracks") - ) - + publisher_user_id: str = dc_field(metadata=dc_config(field_name="publisher_user_id")) + publisher_name: str | None = dc_field(default=None, metadata=dc_config(field_name="publisher_name")) + publisher_user_session_id: str | None = dc_field(default=None, metadata=dc_config(field_name="publisher_user_session_id")) + tracks: 'dict[str, list[ParticipantSeriesTrackMetrics]] | None' = dc_field(default=None, metadata=dc_config(field_name="tracks")) @dataclass class ParticipantSeriesTimeframe(DataClassJsonMixin): max_points: int = dc_field(metadata=dc_config(field_name="max_points")) - since: datetime = dc_field( - metadata=dc_config( - field_name="since", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + since: datetime = dc_field(metadata=dc_config(field_name="since", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) step_seconds: int = dc_field(metadata=dc_config(field_name="step_seconds")) - until: datetime = dc_field( - metadata=dc_config( - field_name="until", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - + until: datetime = dc_field(metadata=dc_config(field_name="until", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class ParticipantSeriesTrackMetrics(DataClassJsonMixin): @@ -19935,38 +9963,18 @@ class ParticipantSeriesTrackMetrics(DataClassJsonMixin): codec: str | None = dc_field(default=None, metadata=dc_config(field_name="codec")) label: str | None = dc_field(default=None, metadata=dc_config(field_name="label")) rid: str | None = dc_field(default=None, metadata=dc_config(field_name="rid")) - track_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="track_type") - ) - metrics_order: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="metrics_order") - ) - metrics: "dict[str, list[list[float]]] | None" = dc_field( - default=None, metadata=dc_config(field_name="metrics") - ) - metrics_meta: "dict[str, MetricDescriptor] | None" = dc_field( - default=None, metadata=dc_config(field_name="metrics_meta") - ) - thresholds: "dict[str, list[MetricThreshold]] | None" = dc_field( - default=None, metadata=dc_config(field_name="thresholds") - ) - + track_type: str | None = dc_field(default=None, metadata=dc_config(field_name="track_type")) + metrics_order: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="metrics_order")) + metrics: 'dict[str, list[list[float]]] | None' = dc_field(default=None, metadata=dc_config(field_name="metrics")) + metrics_meta: 'dict[str, MetricDescriptor] | None' = dc_field(default=None, metadata=dc_config(field_name="metrics_meta")) + thresholds: 'dict[str, list[MetricThreshold]] | None' = dc_field(default=None, metadata=dc_config(field_name="thresholds")) @dataclass class ParticipantSeriesUserStats(DataClassJsonMixin): - metrics_order: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="metrics_order") - ) - metrics: "dict[str, list[list[float]]] | None" = dc_field( - default=None, metadata=dc_config(field_name="metrics") - ) - metrics_meta: "dict[str, MetricDescriptor] | None" = dc_field( - default=None, metadata=dc_config(field_name="metrics_meta") - ) - thresholds: "dict[str, list[MetricThreshold]] | None" = dc_field( - default=None, metadata=dc_config(field_name="thresholds") - ) - + metrics_order: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="metrics_order")) + metrics: 'dict[str, list[list[float]]] | None' = dc_field(default=None, metadata=dc_config(field_name="metrics")) + metrics_meta: 'dict[str, MetricDescriptor] | None' = dc_field(default=None, metadata=dc_config(field_name="metrics_meta")) + thresholds: 'dict[str, list[MetricThreshold]] | None' = dc_field(default=None, metadata=dc_config(field_name="thresholds")) @dataclass class ParticipantSessionDetails(DataClassJsonMixin): @@ -19974,135 +9982,60 @@ class ParticipantSessionDetails(DataClassJsonMixin): user_id: str = dc_field(metadata=dc_config(field_name="user_id")) user_session_id: str = dc_field(metadata=dc_config(field_name="user_session_id")) roles: list[str] = dc_field(metadata=dc_config(field_name="roles")) - duration_in_seconds: int | None = dc_field( - default=None, metadata=dc_config(field_name="duration_in_seconds") - ) - joined_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="joined_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - left_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="left_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + duration_in_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="duration_in_seconds")) + joined_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="joined_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + left_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="left_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class PendingMessageEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The method used for the pending message method: str = dc_field(metadata=dc_config(field_name="method")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "message.pending" in this case - type: str = dc_field( - default="message.pending", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + type: str = dc_field(default="message.pending", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) # Metadata attached to the pending message - metadata: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="metadata") - ) + metadata: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="metadata")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class PendingMessageResponse(DataClassJsonMixin): # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - metadata: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="metadata") - ) + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + metadata: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="metadata")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class PerSDKUsageReport(DataClassJsonMixin): total: int = dc_field(metadata=dc_config(field_name="total")) - by_version: "dict[str, int]" = dc_field(metadata=dc_config(field_name="by_version")) - + by_version: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="by_version")) @dataclass class Percentiles(DataClassJsonMixin): p50: float | None = dc_field(default=None, metadata=dc_config(field_name="p50")) p95: float | None = dc_field(default=None, metadata=dc_config(field_name="p95")) - @dataclass class PerformanceAnalysisResponse(DataClassJsonMixin): analysis_type: str = dc_field(metadata=dc_config(field_name="analysis_type")) score: str = dc_field(metadata=dc_config(field_name="score")) - indexed_fields: list[str] = dc_field( - metadata=dc_config(field_name="indexed_fields") - ) - recommendations: list[str] = dc_field( - metadata=dc_config(field_name="recommendations") - ) - unindexed_fields: list[str] = dc_field( - metadata=dc_config(field_name="unindexed_fields") - ) - unindexed_sort_fields: list[str] = dc_field( - metadata=dc_config(field_name="unindexed_sort_fields") - ) + indexed_fields: list[str] = dc_field(metadata=dc_config(field_name="indexed_fields")) + recommendations: list[str] = dc_field(metadata=dc_config(field_name="recommendations")) + unindexed_fields: list[str] = dc_field(metadata=dc_config(field_name="unindexed_fields")) + unindexed_sort_fields: list[str] = dc_field(metadata=dc_config(field_name="unindexed_sort_fields")) warnings: list[str] = dc_field(metadata=dc_config(field_name="warnings")) - last_analyzed: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_analyzed", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - scan_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="scan_type") - ) - + last_analyzed: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_analyzed", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + scan_type: str | None = dc_field(default=None, metadata=dc_config(field_name="scan_type")) @dataclass class Permission(DataClassJsonMixin): @@ -20127,10 +10060,7 @@ class Permission(DataClassJsonMixin): # List of tags of the permission tags: list[str] = dc_field(metadata=dc_config(field_name="tags")) # MongoDB style condition which decides whether or not the permission is granted - condition: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="condition") - ) - + condition: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="condition")) @dataclass class PermissionRequest(DataClassJsonMixin): @@ -20141,71 +10071,41 @@ class PermissionRequest(DataClassJsonMixin): # MongoDB style condition which decides whether or not the permission is granted condition: dict[str, object] = dc_field(metadata=dc_config(field_name="condition")) # Description of the permission - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) # Whether this permission applies to resource owner or not owner: bool | None = dc_field(default=None, metadata=dc_config(field_name="owner")) # Whether this permission applies to teammates (multi-tenancy mode only) - same_team: bool | None = dc_field( - default=None, metadata=dc_config(field_name="same_team") - ) - + same_team: bool | None = dc_field(default=None, metadata=dc_config(field_name="same_team")) @dataclass class PermissionRequestEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The list of permissions requested by the user permissions: list[str] = dc_field(metadata=dc_config(field_name="permissions")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.permission_request" in this case - type: str = dc_field( - default="call.permission_request", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.permission_request", metadata=dc_config(field_name="type")) @dataclass class PinActivityRequest(DataClassJsonMixin): # If true, enriches the activity's current_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enrich_own_fields") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class PinActivityResponse(DataClassJsonMixin): # When the activity was pinned - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) duration: str = dc_field(metadata=dc_config(field_name="duration")) # Fully qualified ID of the feed the activity was pinned to feed: str = dc_field(metadata=dc_config(field_name="feed")) # ID of the user who pinned the activity user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) - + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) @dataclass class PinRequest(DataClassJsonMixin): @@ -20214,51 +10114,32 @@ class PinRequest(DataClassJsonMixin): # the user ID of the user who pinned the message user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - @dataclass class PinResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class PlatformDataResponse(DataClassJsonMixin): - browser: "BrowserDataResponse" = dc_field(metadata=dc_config(field_name="browser")) - device: "DeviceDataResponse" = dc_field(metadata=dc_config(field_name="device")) - os: "ClientOSDataResponse" = dc_field(metadata=dc_config(field_name="os")) - + browser: 'BrowserDataResponse' = dc_field(metadata=dc_config(field_name="browser")) + device: 'DeviceDataResponse' = dc_field(metadata=dc_config(field_name="device")) + os: 'ClientOSDataResponse' = dc_field(metadata=dc_config(field_name="os")) @dataclass class Policy(DataClassJsonMixin): action: int = dc_field(metadata=dc_config(field_name="action")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) name: str = dc_field(metadata=dc_config(field_name="name")) owner: bool = dc_field(metadata=dc_config(field_name="owner")) priority: int = dc_field(metadata=dc_config(field_name="priority")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) resources: list[str] = dc_field(metadata=dc_config(field_name="resources")) roles: list[str] = dc_field(metadata=dc_config(field_name="roles")) - @dataclass class PolicyConfig(DataClassJsonMixin): max_age_hours: int = dc_field(metadata=dc_config(field_name="max_age_hours")) - @dataclass class PolicyRequest(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) @@ -20273,80 +10154,40 @@ class PolicyRequest(DataClassJsonMixin): # List of roles to apply policy to roles: list[str] = dc_field(metadata=dc_config(field_name="roles")) - @dataclass class PolicyTestLabelDrift(DataClassJsonMixin): changed: int = dc_field(metadata=dc_config(field_name="changed")) same: int = dc_field(metadata=dc_config(field_name="same")) - @dataclass class PolicyTestResult(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) id: int = dc_field(metadata=dc_config(field_name="id")) message_text: str = dc_field(metadata=dc_config(field_name="message_text")) row_index: int = dc_field(metadata=dc_config(field_name="row_index")) run_id: str = dc_field(metadata=dc_config(field_name="run_id")) scored: bool = dc_field(metadata=dc_config(field_name="scored")) - actual_action: str | None = dc_field( - default=None, metadata=dc_config(field_name="actual_action") - ) - expected_action: str | None = dc_field( - default=None, metadata=dc_config(field_name="expected_action") - ) - failure_reason: str | None = dc_field( - default=None, metadata=dc_config(field_name="failure_reason") - ) - passed: bool | None = dc_field( - default=None, metadata=dc_config(field_name="passed") - ) - severity: str | None = dc_field( - default=None, metadata=dc_config(field_name="severity") - ) - actual_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="actual_labels") - ) - expected_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="expected_labels") - ) - raw_response: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="raw_response") - ) - + actual_action: str | None = dc_field(default=None, metadata=dc_config(field_name="actual_action")) + expected_action: str | None = dc_field(default=None, metadata=dc_config(field_name="expected_action")) + failure_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="failure_reason")) + passed: bool | None = dc_field(default=None, metadata=dc_config(field_name="passed")) + severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) + actual_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="actual_labels")) + expected_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="expected_labels")) + raw_response: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="raw_response")) @dataclass class PolicyTestRow(DataClassJsonMixin): - content_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="content_type") - ) + content_type: str | None = dc_field(default=None, metadata=dc_config(field_name="content_type")) policy: str | None = dc_field(default=None, metadata=dc_config(field_name="policy")) - recommended_action: str | None = dc_field( - default=None, metadata=dc_config(field_name="recommended_action") - ) + recommended_action: str | None = dc_field(default=None, metadata=dc_config(field_name="recommended_action")) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) - labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="labels") - ) - + labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="labels")) @dataclass class PolicyTestRun(DataClassJsonMixin): config_key: str = dc_field(metadata=dc_config(field_name="config_key")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) id: str = dc_field(metadata=dc_config(field_name="id")) rows_completed: int = dc_field(metadata=dc_config(field_name="rows_completed")) rows_total: int = dc_field(metadata=dc_config(field_name="rows_total")) @@ -20354,127 +10195,60 @@ class PolicyTestRun(DataClassJsonMixin): status: str = dc_field(metadata=dc_config(field_name="status")) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) triggered_by: str = dc_field(metadata=dc_config(field_name="triggered_by")) - completed_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="completed_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - config_updated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="config_updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - error_message: str | None = dc_field( - default=None, metadata=dc_config(field_name="error_message") - ) - started_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="started_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - metrics: "PolicyTestRunMetrics | None" = dc_field( - default=None, metadata=dc_config(field_name="metrics") - ) - + completed_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="completed_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + config_updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="config_updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + error_message: str | None = dc_field(default=None, metadata=dc_config(field_name="error_message")) + started_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + metrics: 'PolicyTestRunMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="metrics")) @dataclass class PolicyTestRunMetrics(DataClassJsonMixin): mode: str = dc_field(metadata=dc_config(field_name="mode")) - totals: "PolicyTestTotals" = dc_field(metadata=dc_config(field_name="totals")) - by_label: "dict[str, PolicyTestLabelDrift] | None" = dc_field( - default=None, metadata=dc_config(field_name="by_label") - ) - + totals: 'PolicyTestTotals' = dc_field(metadata=dc_config(field_name="totals")) + by_label: 'dict[str, PolicyTestLabelDrift] | None' = dc_field(default=None, metadata=dc_config(field_name="by_label")) @dataclass class PolicyTestRunResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Per-row results (only present once the run has finished) - results: "list[PolicyTestResult] | None" = dc_field( - default=None, metadata=dc_config(field_name="results") - ) - run: "PolicyTestRun | None" = dc_field( - default=None, metadata=dc_config(field_name="run") - ) - + results: 'list[PolicyTestResult] | None' = dc_field(default=None, metadata=dc_config(field_name="results")) + run: 'PolicyTestRun | None' = dc_field(default=None, metadata=dc_config(field_name="run")) @dataclass class PolicyTestSeedSpec(DataClassJsonMixin): # How many rows to sample, newest first; capped at 1000 limit: int = dc_field(metadata=dc_config(field_name="limit")) # Sample only records carrying any of these labels; empty samples everything - labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="labels") - ) - + labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="labels")) @dataclass class PolicyTestSet(DataClassJsonMixin): config_key: str = dc_field(metadata=dc_config(field_name="config_key")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) created_by: str = dc_field(metadata=dc_config(field_name="created_by")) id: str = dc_field(metadata=dc_config(field_name="id")) mode: str = dc_field(metadata=dc_config(field_name="mode")) name: str = dc_field(metadata=dc_config(field_name="name")) row_count: int = dc_field(metadata=dc_config(field_name="row_count")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - rows: "list[PolicyTestRow] | None" = dc_field( - default=None, metadata=dc_config(field_name="rows") - ) - last_run: "PolicyTestRun | None" = dc_field( - default=None, metadata=dc_config(field_name="last_run") - ) - + rows: 'list[PolicyTestRow] | None' = dc_field(default=None, metadata=dc_config(field_name="rows")) + last_run: 'PolicyTestRun | None' = dc_field(default=None, metadata=dc_config(field_name="last_run")) @dataclass class PolicyTestSetListResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of policy test sets for the app - sets: "list[PolicyTestSet]" = dc_field(metadata=dc_config(field_name="sets")) - + sets: 'list[PolicyTestSet]' = dc_field(metadata=dc_config(field_name="sets")) @dataclass class PolicyTestSetResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # The set's baseline run (earliest completed run); later runs are scored against it. Absent until the first run completes - baseline_run_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="baseline_run_id") - ) + baseline_run_id: str | None = dc_field(default=None, metadata=dc_config(field_name="baseline_run_id")) # Retained run history for this set, newest first - recent_runs: "list[PolicyTestRun] | None" = dc_field( - default=None, metadata=dc_config(field_name="recent_runs") - ) - set: "PolicyTestSet | None" = dc_field( - default=None, metadata=dc_config(field_name="set") - ) - + recent_runs: 'list[PolicyTestRun] | None' = dc_field(default=None, metadata=dc_config(field_name="recent_runs")) + set: 'PolicyTestSet | None' = dc_field(default=None, metadata=dc_config(field_name="set")) @dataclass class PolicyTestTotals(DataClassJsonMixin): @@ -20484,32 +10258,22 @@ class PolicyTestTotals(DataClassJsonMixin): scored: int = dc_field(metadata=dc_config(field_name="scored")) unscored: int = dc_field(metadata=dc_config(field_name="unscored")) - @dataclass class PollOptionInput(DataClassJsonMixin): text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class PollOptionRequest(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class PollOptionResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - poll_option: "PollOptionResponseData" = dc_field( - metadata=dc_config(field_name="poll_option") - ) - + poll_option: 'PollOptionResponseData' = dc_field(metadata=dc_config(field_name="poll_option")) @dataclass class PollOptionResponseData(DataClassJsonMixin): @@ -20517,136 +10281,67 @@ class PollOptionResponseData(DataClassJsonMixin): text: str = dc_field(metadata=dc_config(field_name="text")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - @dataclass class PollResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - poll: "PollResponseData" = dc_field(metadata=dc_config(field_name="poll")) - + poll: 'PollResponseData' = dc_field(metadata=dc_config(field_name="poll")) @dataclass class PollResponseData(DataClassJsonMixin): allow_answers: bool = dc_field(metadata=dc_config(field_name="allow_answers")) - allow_user_suggested_options: bool = dc_field( - metadata=dc_config(field_name="allow_user_suggested_options") - ) + allow_user_suggested_options: bool = dc_field(metadata=dc_config(field_name="allow_user_suggested_options")) answers_count: int = dc_field(metadata=dc_config(field_name="answers_count")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) created_by_id: str = dc_field(metadata=dc_config(field_name="created_by_id")) description: str = dc_field(metadata=dc_config(field_name="description")) - enforce_unique_vote: bool = dc_field( - metadata=dc_config(field_name="enforce_unique_vote") - ) + enforce_unique_vote: bool = dc_field(metadata=dc_config(field_name="enforce_unique_vote")) id: str = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) vote_count: int = dc_field(metadata=dc_config(field_name="vote_count")) - voting_visibility: str = dc_field( - metadata=dc_config(field_name="voting_visibility") - ) - latest_answers: "list[PollVoteResponseData]" = dc_field( - metadata=dc_config(field_name="latest_answers") - ) - options: "list[PollOptionResponseData]" = dc_field( - metadata=dc_config(field_name="options") - ) - own_votes: "list[PollVoteResponseData]" = dc_field( - metadata=dc_config(field_name="own_votes") - ) - custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - latest_votes_by_option: "dict[str, list[PollVoteResponseData]]" = dc_field( - metadata=dc_config(field_name="latest_votes_by_option") - ) - vote_counts_by_option: "dict[str, int]" = dc_field( - metadata=dc_config(field_name="vote_counts_by_option") - ) - is_closed: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_closed") - ) - max_votes_allowed: int | None = dc_field( - default=None, metadata=dc_config(field_name="max_votes_allowed") - ) + # Voting visibility of the poll + voting_visibility: str = dc_field(metadata=dc_config(field_name="voting_visibility")) + latest_answers: 'list[PollVoteResponseData]' = dc_field(metadata=dc_config(field_name="latest_answers")) + options: 'list[PollOptionResponseData]' = dc_field(metadata=dc_config(field_name="options")) + own_votes: 'list[PollVoteResponseData]' = dc_field(metadata=dc_config(field_name="own_votes")) + custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + latest_votes_by_option: 'dict[str, list[PollVoteResponseData]]' = dc_field(metadata=dc_config(field_name="latest_votes_by_option")) + vote_counts_by_option: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="vote_counts_by_option")) + is_closed: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_closed")) + max_votes_allowed: int | None = dc_field(default=None, metadata=dc_config(field_name="max_votes_allowed")) # User response object - created_by: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) - + created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) @dataclass class PollVoteResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - poll: "PollResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="poll") - ) - vote: "PollVoteResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="vote") - ) - + poll: 'PollResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll")) + vote: 'PollVoteResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="vote")) @dataclass class PollVoteResponseData(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) id: str = dc_field(metadata=dc_config(field_name="id")) option_id: str = dc_field(metadata=dc_config(field_name="option_id")) poll_id: str = dc_field(metadata=dc_config(field_name="poll_id")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - answer_text: str | None = dc_field( - default=None, metadata=dc_config(field_name="answer_text") - ) - is_answer: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_answer") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + answer_text: str | None = dc_field(default=None, metadata=dc_config(field_name="answer_text")) + is_answer: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_answer")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class PollVotesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Poll votes - votes: "list[PollVoteResponseData]" = dc_field( - metadata=dc_config(field_name="votes") - ) + votes: 'list[PollVoteResponseData]' = dc_field(metadata=dc_config(field_name="votes")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class PoorByCause(DataClassJsonMixin): delivery: int = dc_field(metadata=dc_config(field_name="delivery")) @@ -20655,894 +10350,402 @@ class PoorByCause(DataClassJsonMixin): source: int = dc_field(metadata=dc_config(field_name="source")) unattributed: int = dc_field(metadata=dc_config(field_name="unattributed")) - @dataclass class PoorTail(DataClassJsonMixin): healthy_viewers: int = dc_field(metadata=dc_config(field_name="healthy_viewers")) note: str = dc_field(metadata=dc_config(field_name="note")) poor_total: int = dc_field(metadata=dc_config(field_name="poor_total")) - poor_by_cause: "PoorByCause" = dc_field( - metadata=dc_config(field_name="poor_by_cause") - ) - supporting: "Supporting" = dc_field(metadata=dc_config(field_name="supporting")) - healthy_pct: float | None = dc_field( - default=None, metadata=dc_config(field_name="healthy_pct") - ) - + poor_by_cause: 'PoorByCause' = dc_field(metadata=dc_config(field_name="poor_by_cause")) + supporting: 'Supporting' = dc_field(metadata=dc_config(field_name="supporting")) + healthy_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="healthy_pct")) @dataclass class PredefinedFilterResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) name: str = dc_field(metadata=dc_config(field_name="name")) operation: str = dc_field(metadata=dc_config(field_name="operation")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) filter: dict[str, object] = dc_field(metadata=dc_config(field_name="filter")) - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) - query_id: int | None = dc_field( - default=None, metadata=dc_config(field_name="query_id") - ) - sort: "list[SortParam] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) - performance: "PerformanceAnalysisResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="performance") - ) - stats: "PredefinedFilterStatsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="stats") - ) - + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + query_id: int | None = dc_field(default=None, metadata=dc_config(field_name="query_id")) + sort: 'list[SortParam] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + performance: 'PerformanceAnalysisResponse | None' = dc_field(default=None, metadata=dc_config(field_name="performance")) + stats: 'PredefinedFilterStatsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="stats")) @dataclass class PredefinedFilterStatsResponse(DataClassJsonMixin): calls: int = dc_field(metadata=dc_config(field_name="calls")) max_latency_ms: int = dc_field(metadata=dc_config(field_name="max_latency_ms")) - last_seen: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_seen", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + last_seen: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_seen", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class PrivacySettingsResponse(DataClassJsonMixin): - delivery_receipts: "DeliveryReceiptsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="delivery_receipts") - ) - read_receipts: "ReadReceiptsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="read_receipts") - ) - typing_indicators: "TypingIndicatorsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="typing_indicators") - ) - + delivery_receipts: 'DeliveryReceiptsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="delivery_receipts")) + read_receipts: 'ReadReceiptsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="read_receipts")) + typing_indicators: 'TypingIndicatorsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="typing_indicators")) @dataclass class PublishedTrackFlags(DataClassJsonMixin): audio: bool = dc_field(metadata=dc_config(field_name="audio")) screenshare: bool = dc_field(metadata=dc_config(field_name="screenshare")) - screenshare_audio: bool = dc_field( - metadata=dc_config(field_name="screenshare_audio") - ) + screenshare_audio: bool = dc_field(metadata=dc_config(field_name="screenshare_audio")) video: bool = dc_field(metadata=dc_config(field_name="video")) - @dataclass class PublishedTrackMetrics(DataClassJsonMixin): codec: str | None = dc_field(default=None, metadata=dc_config(field_name="codec")) - track_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="track_id") - ) - track_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="track_type") - ) - warnings: "list[SessionWarningResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="warnings") - ) - bitrate: "MetricTimeSeries | None" = dc_field( - default=None, metadata=dc_config(field_name="bitrate") - ) - framerate: "MetricTimeSeries | None" = dc_field( - default=None, metadata=dc_config(field_name="framerate") - ) - resolution: "ResolutionMetricsTimeSeries | None" = dc_field( - default=None, metadata=dc_config(field_name="resolution") - ) - + track_id: str | None = dc_field(default=None, metadata=dc_config(field_name="track_id")) + track_type: str | None = dc_field(default=None, metadata=dc_config(field_name="track_type")) + warnings: 'list[SessionWarningResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="warnings")) + bitrate: 'MetricTimeSeries | None' = dc_field(default=None, metadata=dc_config(field_name="bitrate")) + framerate: 'MetricTimeSeries | None' = dc_field(default=None, metadata=dc_config(field_name="framerate")) + resolution: 'ResolutionMetricsTimeSeries | None' = dc_field(default=None, metadata=dc_config(field_name="resolution")) @dataclass class PublisherAllMetrics(DataClassJsonMixin): - audio: "PublisherAudioMetrics | None" = dc_field( - default=None, metadata=dc_config(field_name="audio") - ) - rtt_ms: "ActiveCallsLatencyStats | None" = dc_field( - default=None, metadata=dc_config(field_name="rtt_ms") - ) - video: "PublisherVideoMetrics | None" = dc_field( - default=None, metadata=dc_config(field_name="video") - ) - + audio: 'PublisherAudioMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="audio")) + rtt_ms: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="rtt_ms")) + video: 'PublisherVideoMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="video")) @dataclass class PublisherAudioMetrics(DataClassJsonMixin): - jitter_ms: "ActiveCallsLatencyStats | None" = dc_field( - default=None, metadata=dc_config(field_name="jitter_ms") - ) - + jitter_ms: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="jitter_ms")) @dataclass class PublisherSession(DataClassJsonMixin): duration_min: float = dc_field(metadata=dc_config(field_name="duration_min")) - started_offset_min: float = dc_field( - metadata=dc_config(field_name="started_offset_min") - ) + started_offset_min: float = dc_field(metadata=dc_config(field_name="started_offset_min")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) user_session_id: str = dc_field(metadata=dc_config(field_name="user_session_id")) - avg_jitter_ms: float | None = dc_field( - default=None, metadata=dc_config(field_name="avg_jitter_ms") - ) - browser: str | None = dc_field( - default=None, metadata=dc_config(field_name="browser") - ) - delivery_zone: str | None = dc_field( - default=None, metadata=dc_config(field_name="delivery_zone") - ) + avg_jitter_ms: float | None = dc_field(default=None, metadata=dc_config(field_name="avg_jitter_ms")) + browser: str | None = dc_field(default=None, metadata=dc_config(field_name="browser")) + delivery_zone: str | None = dc_field(default=None, metadata=dc_config(field_name="delivery_zone")) ingest: str | None = dc_field(default=None, metadata=dc_config(field_name="ingest")) os: str | None = dc_field(default=None, metadata=dc_config(field_name="os")) - send_quality_score: float | None = dc_field( - default=None, metadata=dc_config(field_name="send_quality_score") - ) + send_quality_score: float | None = dc_field(default=None, metadata=dc_config(field_name="send_quality_score")) tool: str | None = dc_field(default=None, metadata=dc_config(field_name="tool")) - encoding: "EncodingProfile | None" = dc_field( - default=None, metadata=dc_config(field_name="encoding") - ) - + encoding: 'EncodingProfile | None' = dc_field(default=None, metadata=dc_config(field_name="encoding")) @dataclass class PublisherStatsResponse(DataClassJsonMixin): total: int = dc_field(metadata=dc_config(field_name="total")) unique: int = dc_field(metadata=dc_config(field_name="unique")) - by_track: "list[TrackStatsResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="by_track") - ) - + by_track: 'list[TrackStatsResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="by_track")) @dataclass class PublisherVideoMetrics(DataClassJsonMixin): - bitrate: "ActiveCallsBitrateStats | None" = dc_field( - default=None, metadata=dc_config(field_name="bitrate") - ) - fps_30: "ActiveCallsFPSStats | None" = dc_field( - default=None, metadata=dc_config(field_name="fps_30") - ) - frame_encoding_time_ms: "ActiveCallsLatencyStats | None" = dc_field( - default=None, metadata=dc_config(field_name="frame_encoding_time_ms") - ) - jitter_ms: "ActiveCallsLatencyStats | None" = dc_field( - default=None, metadata=dc_config(field_name="jitter_ms") - ) - resolution: "ActiveCallsResolutionStats | None" = dc_field( - default=None, metadata=dc_config(field_name="resolution") - ) - + bitrate: 'ActiveCallsBitrateStats | None' = dc_field(default=None, metadata=dc_config(field_name="bitrate")) + fps_30: 'ActiveCallsFPSStats | None' = dc_field(default=None, metadata=dc_config(field_name="fps_30")) + frame_encoding_time_ms: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="frame_encoding_time_ms")) + jitter_ms: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="jitter_ms")) + resolution: 'ActiveCallsResolutionStats | None' = dc_field(default=None, metadata=dc_config(field_name="resolution")) @dataclass class PublishersMetrics(DataClassJsonMixin): - all: "PublisherAllMetrics | None" = dc_field( - default=None, metadata=dc_config(field_name="all") - ) - + all: 'PublisherAllMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="all")) @dataclass class PushConfig(DataClassJsonMixin): version: str = dc_field(metadata=dc_config(field_name="version")) - offline_only: bool | None = dc_field( - default=None, metadata=dc_config(field_name="offline_only") - ) - + offline_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="offline_only")) @dataclass class PushNotificationConfig(DataClassJsonMixin): # Whether push notifications are enabled for this feed group - enable_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enable_push") - ) + enable_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="enable_push")) # Allowlist of notification types that may trigger push (e.g. follow, comment, reaction, comment_reaction, mention, or any custom activity.type). Empty or omitted means no types. Built-in notifications match notification_context.trigger.type; manually added notification activities match activity.type. - push_types: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="push_types") - ) - + push_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="push_types")) @dataclass class PushNotificationFields(DataClassJsonMixin): offline_only: bool = dc_field(metadata=dc_config(field_name="offline_only")) version: str = dc_field(metadata=dc_config(field_name="version")) - apn: "APNConfigFields" = dc_field(metadata=dc_config(field_name="apn")) - firebase: "FirebaseConfigFields" = dc_field( - metadata=dc_config(field_name="firebase") - ) - huawei: "HuaweiConfigFields" = dc_field(metadata=dc_config(field_name="huawei")) - xiaomi: "XiaomiConfigFields" = dc_field(metadata=dc_config(field_name="xiaomi")) - providers: "list[PushProvider] | None" = dc_field( - default=None, metadata=dc_config(field_name="providers") - ) - + apn: 'APNConfigFields' = dc_field(metadata=dc_config(field_name="apn")) + firebase: 'FirebaseConfigFields' = dc_field(metadata=dc_config(field_name="firebase")) + huawei: 'HuaweiConfigFields' = dc_field(metadata=dc_config(field_name="huawei")) + xiaomi: 'XiaomiConfigFields' = dc_field(metadata=dc_config(field_name="xiaomi")) + providers: 'list[PushProvider] | None' = dc_field(default=None, metadata=dc_config(field_name="providers")) @dataclass class PushNotificationSettingsResponse(DataClassJsonMixin): - disabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="disabled") - ) - disabled_until: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="disabled_until", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="disabled")) + disabled_until: datetime | None = dc_field(default=None, metadata=dc_config(field_name="disabled_until", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class PushPreferenceInput(DataClassJsonMixin): # Set the level of call push notifications for the user. One of: all, none, default - call_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="call_level") - ) + call_level: str | None = dc_field(default=None, metadata=dc_config(field_name="call_level")) # Set the push preferences for a specific channel. If empty it sets the default for the user - channel_cid: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_cid") - ) + channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) # Set the level of chat push notifications for the user. Note: "mentions" is deprecated in favor of "direct_mentions". One of: all, mentions, direct_mentions, all_mentions, none, default - chat_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="chat_level") - ) + chat_level: str | None = dc_field(default=None, metadata=dc_config(field_name="chat_level")) # Disable push notifications till a certain time - disabled_until: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="disabled_until", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + disabled_until: datetime | None = dc_field(default=None, metadata=dc_config(field_name="disabled_until", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Set the level of feeds push notifications for the user. One of: all, none, default - feeds_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="feeds_level") - ) + feeds_level: str | None = dc_field(default=None, metadata=dc_config(field_name="feeds_level")) # Remove the disabled until time. (IE stop snoozing notifications) - remove_disable: bool | None = dc_field( - default=None, metadata=dc_config(field_name="remove_disable") - ) + remove_disable: bool | None = dc_field(default=None, metadata=dc_config(field_name="remove_disable")) # The user id for which to set the push preferences. Required when using server side auths, defaults to current user with client side auth. - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - chat_preferences: "ChatPreferencesInput | None" = dc_field( - default=None, metadata=dc_config(field_name="chat_preferences") - ) - feeds_preferences: "FeedsPreferences | None" = dc_field( - default=None, metadata=dc_config(field_name="feeds_preferences") - ) - + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + chat_preferences: 'ChatPreferencesInput | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) + feeds_preferences: 'FeedsPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="feeds_preferences")) @dataclass class PushPreferencesResponse(DataClassJsonMixin): - call_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="call_level") - ) - chat_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="chat_level") - ) - disabled_until: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="disabled_until", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - feeds_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="feeds_level") - ) - chat_preferences: "ChatPreferencesResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="chat_preferences") - ) - feeds_preferences: "FeedsPreferencesResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="feeds_preferences") - ) - + call_level: str | None = dc_field(default=None, metadata=dc_config(field_name="call_level")) + chat_level: str | None = dc_field(default=None, metadata=dc_config(field_name="chat_level")) + disabled_until: datetime | None = dc_field(default=None, metadata=dc_config(field_name="disabled_until", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + feeds_level: str | None = dc_field(default=None, metadata=dc_config(field_name="feeds_level")) + chat_preferences: 'ChatPreferencesResponse | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) + feeds_preferences: 'FeedsPreferencesResponse | None' = dc_field(default=None, metadata=dc_config(field_name="feeds_preferences")) @dataclass class PushProvider(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) name: str = dc_field(metadata=dc_config(field_name="name")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - apn_auth_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_auth_key") - ) - apn_auth_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_auth_type") - ) - apn_development: bool | None = dc_field( - default=None, metadata=dc_config(field_name="apn_development") - ) - apn_host: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_host") - ) - apn_key_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_key_id") - ) - apn_notification_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_notification_template") - ) - apn_p12_cert: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_p12_cert") - ) - apn_team_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_team_id") - ) - apn_topic: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_topic") - ) - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) - disabled_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="disabled_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - disabled_reason: str | None = dc_field( - default=None, metadata=dc_config(field_name="disabled_reason") - ) - firebase_apn_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_apn_template") - ) - firebase_credentials: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_credentials") - ) - firebase_data_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_data_template") - ) - firebase_host: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_host") - ) - firebase_notification_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_notification_template") - ) - firebase_server_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_server_key") - ) - huawei_app_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="huawei_app_id") - ) - huawei_app_secret: str | None = dc_field( - default=None, metadata=dc_config(field_name="huawei_app_secret") - ) - huawei_host: str | None = dc_field( - default=None, metadata=dc_config(field_name="huawei_host") - ) - xiaomi_app_secret: str | None = dc_field( - default=None, metadata=dc_config(field_name="xiaomi_app_secret") - ) - xiaomi_package_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="xiaomi_package_name") - ) - push_templates: "list[PushTemplate] | None" = dc_field( - default=None, metadata=dc_config(field_name="push_templates") - ) - + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + apn_auth_key: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_auth_key")) + apn_auth_type: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_auth_type")) + apn_development: bool | None = dc_field(default=None, metadata=dc_config(field_name="apn_development")) + apn_host: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_host")) + apn_key_id: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_key_id")) + apn_notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_notification_template")) + apn_p12_cert: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_p12_cert")) + apn_team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_team_id")) + apn_topic: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_topic")) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + disabled_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="disabled_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + disabled_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="disabled_reason")) + firebase_apn_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_apn_template")) + firebase_credentials: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_credentials")) + firebase_data_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_data_template")) + firebase_host: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_host")) + firebase_notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_notification_template")) + firebase_server_key: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_server_key")) + huawei_app_id: str | None = dc_field(default=None, metadata=dc_config(field_name="huawei_app_id")) + huawei_app_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="huawei_app_secret")) + huawei_host: str | None = dc_field(default=None, metadata=dc_config(field_name="huawei_host")) + xiaomi_app_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="xiaomi_app_secret")) + xiaomi_package_name: str | None = dc_field(default=None, metadata=dc_config(field_name="xiaomi_package_name")) + push_templates: 'list[PushTemplate] | None' = dc_field(default=None, metadata=dc_config(field_name="push_templates")) @dataclass class PushProviderRequest(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) - apn_auth_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_auth_key") - ) - apn_auth_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_auth_type") - ) - apn_development: bool | None = dc_field( - default=None, metadata=dc_config(field_name="apn_development") - ) - apn_host: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_host") - ) - apn_key_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_key_id") - ) - apn_notification_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_notification_template") - ) - apn_p12_cert: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_p12_cert") - ) - apn_team_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_team_id") - ) - apn_topic: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_topic") - ) - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) - disabled_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="disabled_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - disabled_reason: str | None = dc_field( - default=None, metadata=dc_config(field_name="disabled_reason") - ) - firebase_apn_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_apn_template") - ) - firebase_credentials: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_credentials") - ) - firebase_data_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_data_template") - ) - firebase_host: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_host") - ) - firebase_notification_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_notification_template") - ) - firebase_server_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_server_key") - ) - huawei_app_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="huawei_app_id") - ) - huawei_app_secret: str | None = dc_field( - default=None, metadata=dc_config(field_name="huawei_app_secret") - ) + apn_auth_key: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_auth_key")) + apn_auth_type: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_auth_type")) + apn_development: bool | None = dc_field(default=None, metadata=dc_config(field_name="apn_development")) + apn_host: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_host")) + apn_key_id: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_key_id")) + apn_notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_notification_template")) + apn_p12_cert: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_p12_cert")) + apn_team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_team_id")) + apn_topic: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_topic")) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + disabled_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="disabled_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + disabled_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="disabled_reason")) + firebase_apn_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_apn_template")) + firebase_credentials: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_credentials")) + firebase_data_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_data_template")) + firebase_host: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_host")) + firebase_notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_notification_template")) + firebase_server_key: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_server_key")) + huawei_app_id: str | None = dc_field(default=None, metadata=dc_config(field_name="huawei_app_id")) + huawei_app_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="huawei_app_secret")) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - xiaomi_app_secret: str | None = dc_field( - default=None, metadata=dc_config(field_name="xiaomi_app_secret") - ) - xiaomi_package_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="xiaomi_package_name") - ) - + xiaomi_app_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="xiaomi_app_secret")) + xiaomi_package_name: str | None = dc_field(default=None, metadata=dc_config(field_name="xiaomi_package_name")) @dataclass class PushProviderResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) name: str = dc_field(metadata=dc_config(field_name="name")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - apn_auth_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_auth_key") - ) - apn_auth_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_auth_type") - ) - apn_development: bool | None = dc_field( - default=None, metadata=dc_config(field_name="apn_development") - ) - apn_host: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_host") - ) - apn_key_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_key_id") - ) - apn_p12_cert: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_p12_cert") - ) - apn_sandbox_certificate: bool | None = dc_field( - default=None, metadata=dc_config(field_name="apn_sandbox_certificate") - ) - apn_supports_remote_notifications: bool | None = dc_field( - default=None, metadata=dc_config(field_name="apn_supports_remote_notifications") - ) - apn_supports_voip_notifications: bool | None = dc_field( - default=None, metadata=dc_config(field_name="apn_supports_voip_notifications") - ) - apn_team_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_team_id") - ) - apn_topic: str | None = dc_field( - default=None, metadata=dc_config(field_name="apn_topic") - ) - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) - disabled_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="disabled_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - disabled_reason: str | None = dc_field( - default=None, metadata=dc_config(field_name="disabled_reason") - ) - firebase_apn_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_apn_template") - ) - firebase_credentials: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_credentials") - ) - firebase_data_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_data_template") - ) - firebase_host: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_host") - ) - firebase_notification_template: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_notification_template") - ) - firebase_server_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="firebase_server_key") - ) - huawei_app_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="huawei_app_id") - ) - huawei_app_secret: str | None = dc_field( - default=None, metadata=dc_config(field_name="huawei_app_secret") - ) - xiaomi_app_secret: str | None = dc_field( - default=None, metadata=dc_config(field_name="xiaomi_app_secret") - ) - xiaomi_package_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="xiaomi_package_name") - ) - + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + apn_auth_key: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_auth_key")) + apn_auth_type: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_auth_type")) + apn_development: bool | None = dc_field(default=None, metadata=dc_config(field_name="apn_development")) + apn_host: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_host")) + apn_key_id: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_key_id")) + apn_p12_cert: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_p12_cert")) + apn_sandbox_certificate: bool | None = dc_field(default=None, metadata=dc_config(field_name="apn_sandbox_certificate")) + apn_supports_remote_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="apn_supports_remote_notifications")) + apn_supports_voip_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="apn_supports_voip_notifications")) + apn_team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_team_id")) + apn_topic: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_topic")) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + disabled_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="disabled_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + disabled_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="disabled_reason")) + firebase_apn_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_apn_template")) + firebase_credentials: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_credentials")) + firebase_data_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_data_template")) + firebase_host: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_host")) + firebase_notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_notification_template")) + firebase_server_key: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_server_key")) + huawei_app_id: str | None = dc_field(default=None, metadata=dc_config(field_name="huawei_app_id")) + huawei_app_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="huawei_app_secret")) + xiaomi_app_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="xiaomi_app_secret")) + xiaomi_package_name: str | None = dc_field(default=None, metadata=dc_config(field_name="xiaomi_package_name")) @dataclass class PushTemplate(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) enable_push: bool = dc_field(metadata=dc_config(field_name="enable_push")) event_type: str = dc_field(metadata=dc_config(field_name="event_type")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - template: str | None = dc_field( - default=None, metadata=dc_config(field_name="template") - ) - + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + template: str | None = dc_field(default=None, metadata=dc_config(field_name="template")) @dataclass class PushTemplateResponse(DataClassJsonMixin): # Time when the template was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Whether push notification is enabled for this event enable_push: bool = dc_field(metadata=dc_config(field_name="enable_push")) # Type of event this template applies to event_type: str = dc_field(metadata=dc_config(field_name="event_type")) # Internal ID of the push provider - push_provider_internal_id: str = dc_field( - metadata=dc_config(field_name="push_provider_internal_id") - ) + push_provider_internal_id: str = dc_field(metadata=dc_config(field_name="push_provider_internal_id")) # Time when the template was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The push notification template - template: str | None = dc_field( - default=None, metadata=dc_config(field_name="template") - ) - + template: str | None = dc_field(default=None, metadata=dc_config(field_name="template")) @dataclass class Quality(DataClassJsonMixin): - viewer_interruption_note: str = dc_field( - metadata=dc_config(field_name="viewer_interruption_note") - ) - interruption_incidents: "list[Incident]" = dc_field( - metadata=dc_config(field_name="interruption_incidents") - ) - connection_avg_jitter_ms: "Percentiles" = dc_field( - metadata=dc_config(field_name="connection_avg_jitter_ms") - ) - connection_avg_latency_ms: "Percentiles" = dc_field( - metadata=dc_config(field_name="connection_avg_latency_ms") - ) - score_bands_by_connection_pct: "ScoreBands" = dc_field( - metadata=dc_config(field_name="score_bands_by_connection_pct") - ) - score_bands_by_watch_time_pct: "ScoreBands" = dc_field( - metadata=dc_config(field_name="score_bands_by_watch_time_pct") - ) - p50_quality_score: float | None = dc_field( - default=None, metadata=dc_config(field_name="p50_quality_score") - ) - p5_quality_score: float | None = dc_field( - default=None, metadata=dc_config(field_name="p5_quality_score") - ) - viewer_interruption_rate_pct: float | None = dc_field( - default=None, metadata=dc_config(field_name="viewer_interruption_rate_pct") - ) - + viewer_interruption_note: str = dc_field(metadata=dc_config(field_name="viewer_interruption_note")) + interruption_incidents: 'list[Incident]' = dc_field(metadata=dc_config(field_name="interruption_incidents")) + connection_avg_jitter_ms: 'Percentiles' = dc_field(metadata=dc_config(field_name="connection_avg_jitter_ms")) + connection_avg_latency_ms: 'Percentiles' = dc_field(metadata=dc_config(field_name="connection_avg_latency_ms")) + score_bands_by_connection_pct: 'ScoreBands' = dc_field(metadata=dc_config(field_name="score_bands_by_connection_pct")) + score_bands_by_watch_time_pct: 'ScoreBands' = dc_field(metadata=dc_config(field_name="score_bands_by_watch_time_pct")) + p50_quality_score: float | None = dc_field(default=None, metadata=dc_config(field_name="p50_quality_score")) + p5_quality_score: float | None = dc_field(default=None, metadata=dc_config(field_name="p5_quality_score")) + viewer_interruption_rate_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="viewer_interruption_rate_pct")) @dataclass class QualityScoreReport(DataClassJsonMixin): - histogram: "list[ReportByHistogramBucket]" = dc_field( - metadata=dc_config(field_name="histogram") - ) - + histogram: 'list[ReportByHistogramBucket]' = dc_field(metadata=dc_config(field_name="histogram")) @dataclass class QualityScoreReportResponse(DataClassJsonMixin): - daily: "list[DailyAggregateQualityScoreReportResponse]" = dc_field( - metadata=dc_config(field_name="daily") - ) - + daily: 'list[DailyAggregateQualityScoreReportResponse]' = dc_field(metadata=dc_config(field_name="daily")) @dataclass class QueryActivitiesRequest(DataClassJsonMixin): - enrich_own_fields: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enrich_own_fields") - ) + enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) # When true, include both expired and non-expired activities in the result. - include_expired_activities: bool | None = dc_field( - default=None, metadata=dc_config(field_name="include_expired_activities") - ) - include_private_activities: bool | None = dc_field( - default=None, metadata=dc_config(field_name="include_private_activities") - ) + include_expired_activities: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_expired_activities")) + include_private_activities: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_private_activities")) # When true, include soft-deleted activities in the result. - include_soft_deleted_activities: bool | None = dc_field( - default=None, metadata=dc_config(field_name="include_soft_deleted_activities") - ) + include_soft_deleted_activities: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_soft_deleted_activities")) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Sorting parameters for the query - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filters to apply to the query. Supports location-based queries with 'near' and 'within_bounds' operators. - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryActivitiesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of activities matching the query - activities: "list[ActivityResponse]" = dc_field( - metadata=dc_config(field_name="activities") - ) + activities: 'list[ActivityResponse]' = dc_field(metadata=dc_config(field_name="activities")) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryActivityReactionsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filters to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) - + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) @dataclass class QueryActivityReactionsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - reactions: "list[FeedsReactionResponse]" = dc_field( - metadata=dc_config(field_name="reactions") - ) + reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="reactions")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryActivitySharesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - shares: "list[ShareResponse]" = dc_field(metadata=dc_config(field_name="shares")) + shares: 'list[ShareResponse]' = dc_field(metadata=dc_config(field_name="shares")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryAggregateCallStatsRequest(DataClassJsonMixin): _from: str | None = dc_field(default=None, metadata=dc_config(field_name="from")) to: str | None = dc_field(default=None, metadata=dc_config(field_name="to")) - report_types: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="report_types") - ) - + report_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="report_types")) @dataclass class QueryAggregateCallStatsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - call_duration_report: "CallDurationReportResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="call_duration_report") - ) - call_participant_count_report: "CallParticipantCountReportResponse | None" = ( - dc_field( - default=None, metadata=dc_config(field_name="call_participant_count_report") - ) - ) - calls_per_day_report: "CallsPerDayReportResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="calls_per_day_report") - ) - network_metrics_report: "NetworkMetricsReportResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="network_metrics_report") - ) - quality_score_report: "QualityScoreReportResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="quality_score_report") - ) - sdk_usage_report: "SDKUsageReportResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="sdk_usage_report") - ) - user_feedback_report: "UserFeedbackReportResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user_feedback_report") - ) - + call_duration_report: 'CallDurationReportResponse | None' = dc_field(default=None, metadata=dc_config(field_name="call_duration_report")) + call_participant_count_report: 'CallParticipantCountReportResponse | None' = dc_field(default=None, metadata=dc_config(field_name="call_participant_count_report")) + calls_per_day_report: 'CallsPerDayReportResponse | None' = dc_field(default=None, metadata=dc_config(field_name="calls_per_day_report")) + network_metrics_report: 'NetworkMetricsReportResponse | None' = dc_field(default=None, metadata=dc_config(field_name="network_metrics_report")) + quality_score_report: 'QualityScoreReportResponse | None' = dc_field(default=None, metadata=dc_config(field_name="quality_score_report")) + sdk_usage_report: 'SDKUsageReportResponse | None' = dc_field(default=None, metadata=dc_config(field_name="sdk_usage_report")) + user_feedback_report: 'UserFeedbackReportResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user_feedback_report")) @dataclass class QueryAppealsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Sorting parameters for appeals - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter conditions for appeals - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryAppealsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of Appeal Items - items: "list[AppealItemResponse]" = dc_field(metadata=dc_config(field_name="items")) + items: 'list[AppealItemResponse]' = dc_field(metadata=dc_config(field_name="items")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryBannedUsersPayload(DataClassJsonMixin): # Filter conditions to apply to the query - filter_conditions: dict[str, object] = dc_field( - metadata=dc_config(field_name="filter_conditions") - ) + filter_conditions: dict[str, object] = dc_field(metadata=dc_config(field_name="filter_conditions")) # Whether to exclude expired bans or not - exclude_expired_bans: bool | None = dc_field( - default=None, metadata=dc_config(field_name="exclude_expired_bans") - ) + exclude_expired_bans: bool | None = dc_field(default=None, metadata=dc_config(field_name="exclude_expired_bans")) # Number of records to return limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) # Number of records to offset offset: int | None = dc_field(default=None, metadata=dc_config(field_name="offset")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryBannedUsersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of found bans - bans: "list[BanResponse]" = dc_field(metadata=dc_config(field_name="bans")) - + bans: 'list[BanResponse]' = dc_field(metadata=dc_config(field_name="bans")) @dataclass class QueryBookmarkFoldersRequest(DataClassJsonMixin): @@ -21550,66 +10753,44 @@ class QueryBookmarkFoldersRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Sorting parameters for the query - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filters to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) - + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) @dataclass class QueryBookmarkFoldersResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of bookmark folders matching the query - bookmark_folders: "list[BookmarkFolderResponse]" = dc_field( - metadata=dc_config(field_name="bookmark_folders") - ) + bookmark_folders: 'list[BookmarkFolderResponse]' = dc_field(metadata=dc_config(field_name="bookmark_folders")) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryBookmarksRequest(DataClassJsonMixin): - enrich_own_fields: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enrich_own_fields") - ) + enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Sorting parameters for the query - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filters to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryBookmarksResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of bookmarks matching the query - bookmarks: "list[BookmarkResponse]" = dc_field( - metadata=dc_config(field_name="bookmarks") - ) + bookmarks: 'list[BookmarkResponse]' = dc_field(metadata=dc_config(field_name="bookmarks")) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryCallMembersRequest(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) @@ -21618,24 +10799,18 @@ class QueryCallMembersRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_conditions") - ) - + filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) @dataclass class QueryCallMembersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) + members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryCallParticipantSessionsResponse(DataClassJsonMixin): call_id: str = dc_field(metadata=dc_config(field_name="call_id")) @@ -21643,47 +10818,28 @@ class QueryCallParticipantSessionsResponse(DataClassJsonMixin): call_type: str = dc_field(metadata=dc_config(field_name="call_type")) # Duration of the request in milliseconds duration: int = dc_field(metadata=dc_config(field_name="duration")) - total_participant_duration: int = dc_field( - metadata=dc_config(field_name="total_participant_duration") - ) - total_participant_sessions: int = dc_field( - metadata=dc_config(field_name="total_participant_sessions") - ) - participants_sessions: "list[ParticipantSessionDetails]" = dc_field( - metadata=dc_config(field_name="participants_sessions") - ) + total_participant_duration: int = dc_field(metadata=dc_config(field_name="total_participant_duration")) + total_participant_sessions: int = dc_field(metadata=dc_config(field_name="total_participant_sessions")) + participants_sessions: 'list[ParticipantSessionDetails]' = dc_field(metadata=dc_config(field_name="participants_sessions")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - session: "CallSessionResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="session") - ) - + session: 'CallSessionResponse | None' = dc_field(default=None, metadata=dc_config(field_name="session")) @dataclass class QueryCallParticipantsRequest(DataClassJsonMixin): # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_conditions") - ) - + filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) @dataclass class QueryCallParticipantsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - total_participants: int = dc_field( - metadata=dc_config(field_name="total_participants") - ) - members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) - own_capabilities: "list[OwnCapability]" = dc_field( - metadata=dc_config(field_name="own_capabilities") - ) + total_participants: int = dc_field(metadata=dc_config(field_name="total_participants")) + members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + own_capabilities: 'list[OwnCapability]' = dc_field(metadata=dc_config(field_name="own_capabilities")) # List of call participants - participants: "list[CallParticipantResponse]" = dc_field( - metadata=dc_config(field_name="participants") - ) + participants: 'list[CallParticipantResponse]' = dc_field(metadata=dc_config(field_name="participants")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) - + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) @dataclass class QueryCallSessionParticipantStatsResponse(DataClassJsonMixin): @@ -21692,39 +10848,14 @@ class QueryCallSessionParticipantStatsResponse(DataClassJsonMixin): call_type: str = dc_field(metadata=dc_config(field_name="call_type")) # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - participants: "list[CallStatsParticipant]" = dc_field( - metadata=dc_config(field_name="participants") - ) - counts: "CallStatsParticipantCounts" = dc_field( - metadata=dc_config(field_name="counts") - ) - call_ended_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="call_ended_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - call_started_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="call_started_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + participants: 'list[CallStatsParticipant]' = dc_field(metadata=dc_config(field_name="participants")) + counts: 'CallStatsParticipantCounts' = dc_field(metadata=dc_config(field_name="counts")) + call_ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="call_ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + call_started_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="call_started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - tmp_data_source: str | None = dc_field( - default=None, metadata=dc_config(field_name="tmp_data_source") - ) - call_events: "list[CallLevelEventPayload] | None" = dc_field( - default=None, metadata=dc_config(field_name="call_events") - ) - + tmp_data_source: str | None = dc_field(default=None, metadata=dc_config(field_name="tmp_data_source")) + call_events: 'list[CallLevelEventPayload] | None' = dc_field(default=None, metadata=dc_config(field_name="call_events")) @dataclass class QueryCallSessionParticipantStatsTimelineResponse(DataClassJsonMixin): @@ -21735,10 +10866,7 @@ class QueryCallSessionParticipantStatsTimelineResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) user_session_id: str = dc_field(metadata=dc_config(field_name="user_session_id")) - events: "list[CallParticipantTimeline]" = dc_field( - metadata=dc_config(field_name="events") - ) - + events: 'list[CallParticipantTimeline]' = dc_field(metadata=dc_config(field_name="events")) @dataclass class QueryCallSessionStatsRequest(DataClassJsonMixin): @@ -21746,26 +10874,18 @@ class QueryCallSessionStatsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_conditions") - ) - + filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) @dataclass class QueryCallSessionStatsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - call_stats: "list[CallStatsSessionResponse]" = dc_field( - metadata=dc_config(field_name="call_stats") - ) + call_stats: 'list[CallStatsSessionResponse]' = dc_field(metadata=dc_config(field_name="call_stats")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryCallStatsMapResponse(DataClassJsonMixin): call_id: str = dc_field(metadata=dc_config(field_name="call_id")) @@ -21773,67 +10893,16 @@ class QueryCallStatsMapResponse(DataClassJsonMixin): call_type: str = dc_field(metadata=dc_config(field_name="call_type")) # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - counts: "CallStatsParticipantCounts" = dc_field( - metadata=dc_config(field_name="counts") - ) - call_ended_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="call_ended_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - call_started_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="call_started_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - data_source: str | None = dc_field( - default=None, metadata=dc_config(field_name="data_source") - ) - end_time: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="end_time", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - generated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="generated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - start_time: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="start_time", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - publishers: "CallStatsMapPublishers | None" = dc_field( - default=None, metadata=dc_config(field_name="publishers") - ) - sfus: "CallStatsMapSFUs | None" = dc_field( - default=None, metadata=dc_config(field_name="sfus") - ) - subscribers: "CallStatsMapSubscribers | None" = dc_field( - default=None, metadata=dc_config(field_name="subscribers") - ) - + counts: 'CallStatsParticipantCounts' = dc_field(metadata=dc_config(field_name="counts")) + call_ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="call_ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + call_started_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="call_started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + data_source: str | None = dc_field(default=None, metadata=dc_config(field_name="data_source")) + end_time: datetime | None = dc_field(default=None, metadata=dc_config(field_name="end_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + generated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="generated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + start_time: datetime | None = dc_field(default=None, metadata=dc_config(field_name="start_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + publishers: 'CallStatsMapPublishers | None' = dc_field(default=None, metadata=dc_config(field_name="publishers")) + sfus: 'CallStatsMapSFUs | None' = dc_field(default=None, metadata=dc_config(field_name="sfus")) + subscribers: 'CallStatsMapSubscribers | None' = dc_field(default=None, metadata=dc_config(field_name="subscribers")) @dataclass class QueryCallStatsRequest(DataClassJsonMixin): @@ -21841,365 +10910,237 @@ class QueryCallStatsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_conditions") - ) - + filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) @dataclass class QueryCallStatsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - reports: "list[CallStatsReportSummaryResponse]" = dc_field( - metadata=dc_config(field_name="reports") - ) + reports: 'list[CallStatsReportSummaryResponse]' = dc_field(metadata=dc_config(field_name="reports")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryCallsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_conditions") - ) - + filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) @dataclass class QueryCallsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - calls: "list[CallStateResponseFields]" = dc_field( - metadata=dc_config(field_name="calls") - ) + calls: 'list[CallStateResponseFields]' = dc_field(metadata=dc_config(field_name="calls")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryCampaignsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_limit: int | None = dc_field( - default=None, metadata=dc_config(field_name="user_limit") - ) - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + user_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="user_limit")) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) - + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) @dataclass class QueryCampaignsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - campaigns: "list[CampaignResponse]" = dc_field( - metadata=dc_config(field_name="campaigns") - ) + campaigns: 'list[CampaignResponse]' = dc_field(metadata=dc_config(field_name="campaigns")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryChannelsRequest(DataClassJsonMixin): # Number of channels to limit limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) # Number of members to limit - member_limit: int | None = dc_field( - default=None, metadata=dc_config(field_name="member_limit") - ) + member_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="member_limit")) # Number of messages to limit - message_limit: int | None = dc_field( - default=None, metadata=dc_config(field_name="message_limit") - ) + message_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="message_limit")) # Channel pagination offset offset: int | None = dc_field(default=None, metadata=dc_config(field_name="offset")) # ID of a predefined filter to use instead of filter_conditions - predefined_filter: str | None = dc_field( - default=None, metadata=dc_config(field_name="predefined_filter") - ) + predefined_filter: str | None = dc_field(default=None, metadata=dc_config(field_name="predefined_filter")) # Whether to update channel state or not state: bool | None = dc_field(default=None, metadata=dc_config(field_name="state")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Top-level keys of the message sender's channel-member custom data to include under member.custom (max 8 keys, 64 chars each) - member_custom_include: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="member_custom_include") - ) + member_custom_include: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="member_custom_include")) # List of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_conditions") - ) + filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) # Values to interpolate into the predefined filter template - filter_values: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_values") - ) - sort_values: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="sort_values") - ) + filter_values: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_values")) + sort_values: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="sort_values")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryChannelsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of channels - channels: "list[ChannelStateResponseFields]" = dc_field( - metadata=dc_config(field_name="channels") - ) - predefined_filter: "ParsedPredefinedFilterResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="predefined_filter") - ) - + channels: 'list[ChannelStateResponseFields]' = dc_field(metadata=dc_config(field_name="channels")) + predefined_filter: 'ParsedPredefinedFilterResponse | None' = dc_field(default=None, metadata=dc_config(field_name="predefined_filter")) @dataclass class QueryCollectionsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Sorting parameters for the query - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filters to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryCollectionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of collections matching the query - collections: "list[CollectionResponse]" = dc_field( - metadata=dc_config(field_name="collections") - ) + collections: 'list[CollectionResponse]' = dc_field(metadata=dc_config(field_name="collections")) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryCommentReactionsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filters to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) - + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) @dataclass class QueryCommentReactionsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - reactions: "list[FeedsReactionResponse]" = dc_field( - metadata=dc_config(field_name="reactions") - ) + reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="reactions")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryCommentsRequest(DataClassJsonMixin): # Filter to apply to the query filter: dict[str, object] = dc_field(metadata=dc_config(field_name="filter")) # Returns the comment with the specified ID along with surrounding comments for context - id_around: str | None = dc_field( - default=None, metadata=dc_config(field_name="id_around") - ) + id_around: str | None = dc_field(default=None, metadata=dc_config(field_name="id_around")) # Maximum number of comments to return limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters sort: str | None = dc_field(default=None, metadata=dc_config(field_name="sort")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryCommentsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of comments matching the query - comments: "list[CommentResponse]" = dc_field( - metadata=dc_config(field_name="comments") - ) + comments: 'list[CommentResponse]' = dc_field(metadata=dc_config(field_name="comments")) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryDraftsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryDraftsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Drafts - drafts: "list[DraftResponse]" = dc_field(metadata=dc_config(field_name="drafts")) + drafts: 'list[DraftResponse]' = dc_field(metadata=dc_config(field_name="drafts")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryFeedMembersRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Sort parameters for the query - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter parameters for the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) - + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) @dataclass class QueryFeedMembersResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of feed members - members: "list[FeedMemberResponse]" = dc_field( - metadata=dc_config(field_name="members") - ) + members: 'list[FeedMemberResponse]' = dc_field(metadata=dc_config(field_name="members")) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryFeedModerationTemplate(DataClassJsonMixin): # When the template was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Name of the moderation template name: str = dc_field(metadata=dc_config(field_name="name")) # When the template was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Configuration for a feeds moderation template - config: "FeedsModerationTemplateConfigPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="config") - ) - + config: 'FeedsModerationTemplateConfigPayload | None' = dc_field(default=None, metadata=dc_config(field_name="config")) @dataclass class QueryFeedModerationTemplatesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of moderation templates - templates: "list[QueryFeedModerationTemplate]" = dc_field( - metadata=dc_config(field_name="templates") - ) - + templates: 'list[QueryFeedModerationTemplate]' = dc_field(metadata=dc_config(field_name="templates")) @dataclass class QueryFeedsRequest(DataClassJsonMixin): - enrich_own_fields: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enrich_own_fields") - ) + enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Whether to subscribe to realtime updates watch: bool | None = dc_field(default=None, metadata=dc_config(field_name="watch")) # Sorting parameters for the query - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filters to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) - + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) @dataclass class QueryFeedsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of feeds matching the query - feeds: "list[FeedResponse]" = dc_field(metadata=dc_config(field_name="feeds")) + feeds: 'list[FeedResponse]' = dc_field(metadata=dc_config(field_name="feeds")) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryFeedsUsageStatsRequest(DataClassJsonMixin): # Start date in YYYY-MM-DD format (optional, defaults to 30 days ago) @@ -22207,26 +11148,14 @@ class QueryFeedsUsageStatsRequest(DataClassJsonMixin): # End date in YYYY-MM-DD format (optional, defaults to today) to: str | None = dc_field(default=None, metadata=dc_config(field_name="to")) - @dataclass class QueryFeedsUsageStatsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activities: "DailyMetricStatsResponse" = dc_field( - metadata=dc_config(field_name="activities") - ) - api_requests: "DailyMetricStatsResponse" = dc_field( - metadata=dc_config(field_name="api_requests") - ) - follows: "DailyMetricStatsResponse" = dc_field( - metadata=dc_config(field_name="follows") - ) - openai_requests: "DailyMetricStatsResponse" = dc_field( - metadata=dc_config(field_name="openai_requests") - ) - emau: "EMAUStatsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="emau") - ) - + activities: 'DailyMetricStatsResponse' = dc_field(metadata=dc_config(field_name="activities")) + api_requests: 'DailyMetricStatsResponse' = dc_field(metadata=dc_config(field_name="api_requests")) + follows: 'DailyMetricStatsResponse' = dc_field(metadata=dc_config(field_name="follows")) + openai_requests: 'DailyMetricStatsResponse' = dc_field(metadata=dc_config(field_name="openai_requests")) + emau: 'EMAUStatsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="emau")) @dataclass class QueryFollowsRequest(DataClassJsonMixin): @@ -22234,123 +11163,80 @@ class QueryFollowsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Sorting parameters for the query - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filters to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) - + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) @dataclass class QueryFollowsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of follow relationships matching the query - follows: "list[FollowResponse]" = dc_field(metadata=dc_config(field_name="follows")) + follows: 'list[FollowResponse]' = dc_field(metadata=dc_config(field_name="follows")) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryFutureChannelBansPayload(DataClassJsonMixin): # Whether to exclude expired bans or not - exclude_expired_bans: bool | None = dc_field( - default=None, metadata=dc_config(field_name="exclude_expired_bans") - ) + exclude_expired_bans: bool | None = dc_field(default=None, metadata=dc_config(field_name="exclude_expired_bans")) # When true, the response includes the total number of bans matching the query filter (independent of limit and offset, capped at 100000) - include_total: bool | None = dc_field( - default=None, metadata=dc_config(field_name="include_total") - ) + include_total: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_total")) # Number of records to return limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) # Number of records to offset offset: int | None = dc_field(default=None, metadata=dc_config(field_name="offset")) # Filter by the target user ID. Server-side: returns all bans against this user. Client-side: narrows the authenticated user's own bans to this target. - target_user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="target_user_id") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + target_user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="target_user_id")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryFutureChannelBansResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of found future channel bans - bans: "list[FutureChannelBanResponse]" = dc_field( - metadata=dc_config(field_name="bans") - ) + bans: 'list[FutureChannelBanResponse]' = dc_field(metadata=dc_config(field_name="bans")) # Total number of bans matching the query filter, computed at query time and capped at 100000. Only present when include_total is set on the request; omitted when computing the total timed out total: int | None = dc_field(default=None, metadata=dc_config(field_name="total")) - @dataclass class QueryLabelResultsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Sorting parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter conditions - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryLabelResultsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of moderation label results - label_results: "list[LabelResultResponse]" = dc_field( - metadata=dc_config(field_name="label_results") - ) + label_results: 'list[LabelResultResponse]' = dc_field(metadata=dc_config(field_name="label_results")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryMembersPayload(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) - # Filter conditions to apply to the query - filter_conditions: dict[str, object] = dc_field( - metadata=dc_config(field_name="filter_conditions") - ) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) offset: int | None = dc_field(default=None, metadata=dc_config(field_name="offset")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - members: "list[ChannelMemberRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="members") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + members: 'list[ChannelMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + # Filter conditions to apply to the query + filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryMembershipLevelsRequest(DataClassJsonMixin): @@ -22358,61 +11244,39 @@ class QueryMembershipLevelsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Sorting parameters for the query - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filters to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) - + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) @dataclass class QueryMembershipLevelsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - membership_levels: "list[MembershipLevelResponse]" = dc_field( - metadata=dc_config(field_name="membership_levels") - ) + membership_levels: 'list[MembershipLevelResponse]' = dc_field(metadata=dc_config(field_name="membership_levels")) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryMessageFlagsPayload(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) offset: int | None = dc_field(default=None, metadata=dc_config(field_name="offset")) # Whether to include deleted messages in the results - show_deleted_messages: bool | None = dc_field( - default=None, metadata=dc_config(field_name="show_deleted_messages") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + show_deleted_messages: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_deleted_messages")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_conditions") - ) + filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryMessageFlagsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # The flags that match the query - flags: "list[MessageFlagResponse]" = dc_field( - metadata=dc_config(field_name="flags") - ) - + flags: 'list[MessageFlagResponse]' = dc_field(metadata=dc_config(field_name="flags")) @dataclass class QueryMessageHistoryRequest(DataClassJsonMixin): @@ -22422,218 +11286,143 @@ class QueryMessageHistoryRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) - + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) @dataclass class QueryMessageHistoryResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Message history entries - message_history: "list[MessageHistoryEntryResponse]" = dc_field( - metadata=dc_config(field_name="message_history") - ) + message_history: 'list[MessageHistoryEntryResponse]' = dc_field(metadata=dc_config(field_name="message_history")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryModerationConfigsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Sorting parameters for the results - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter conditions for moderation configs - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryModerationConfigsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of moderation configurations - configs: "list[ConfigResponse]" = dc_field(metadata=dc_config(field_name="configs")) + configs: 'list[ConfigResponse]' = dc_field(metadata=dc_config(field_name="configs")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryModerationFlagsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter conditions for moderation flags - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) - + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) @dataclass class QueryModerationFlagsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - flags: "list[ModerationFlagResponse]" = dc_field( - metadata=dc_config(field_name="flags") - ) + flags: 'list[ModerationFlagResponse]' = dc_field(metadata=dc_config(field_name="flags")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryModerationLogsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Sorting parameters for the results - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter conditions for moderation logs - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryModerationLogsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of moderation action logs - logs: "list[ActionLogResponse]" = dc_field(metadata=dc_config(field_name="logs")) + logs: 'list[ActionLogResponse]' = dc_field(metadata=dc_config(field_name="logs")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryModerationRulesRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Sorting parameters for the results - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter conditions for moderation rules - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryModerationRulesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # AI image label definitions with metadata for dashboard rendering - ai_image_label_definitions: "list[AIImageLabelDefinition]" = dc_field( - metadata=dc_config(field_name="ai_image_label_definitions") - ) + ai_image_label_definitions: 'list[AIImageLabelDefinition]' = dc_field(metadata=dc_config(field_name="ai_image_label_definitions")) # Available harm labels for closed caption rules - closed_caption_labels: list[str] = dc_field( - metadata=dc_config(field_name="closed_caption_labels") - ) + closed_caption_labels: list[str] = dc_field(metadata=dc_config(field_name="closed_caption_labels")) # Deprecated: use keyframe_label_classifications instead. Available L1 harm labels for keyframe rules - keyframe_labels: list[str] = dc_field( - metadata=dc_config(field_name="keyframe_labels") - ) + keyframe_labels: list[str] = dc_field(metadata=dc_config(field_name="keyframe_labels")) # Available harm labels for OCR-based rule conditions (keyframe_ocr_rule and ocr_content). Mirrors `closed_caption_labels` today but kept as a separate field so the pickers can diverge later. ocr_labels: list[str] = dc_field(metadata=dc_config(field_name="ocr_labels")) # List of moderation rules - rules: "list[ModerationRuleV2Response]" = dc_field( - metadata=dc_config(field_name="rules") - ) + rules: 'list[ModerationRuleV2Response]' = dc_field(metadata=dc_config(field_name="rules")) # Stream L1 to leaf-level label name mapping for AI image rules - ai_image_subclassifications: "dict[str, list[str]]" = dc_field( - metadata=dc_config(field_name="ai_image_subclassifications") - ) + ai_image_subclassifications: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="ai_image_subclassifications")) # Default LLM label descriptions - default_llm_labels: "dict[str, str]" = dc_field( - metadata=dc_config(field_name="default_llm_labels") - ) + default_llm_labels: 'dict[str, str]' = dc_field(metadata=dc_config(field_name="default_llm_labels")) # Recommended LLM label descriptions for username-scoped policies (key starts with 'username:'). Used by /moderation/v2/labels fast-path. - default_username_llm_labels: "dict[str, str]" = dc_field( - metadata=dc_config(field_name="default_username_llm_labels") - ) + default_username_llm_labels: 'dict[str, str]' = dc_field(metadata=dc_config(field_name="default_username_llm_labels")) # L1 to L2 mapping of keyframe harm label classifications - keyframe_label_classifications: "dict[str, list[str]]" = dc_field( - metadata=dc_config(field_name="keyframe_label_classifications") - ) + keyframe_label_classifications: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="keyframe_label_classifications")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryPinnedActivitiesRequest(DataClassJsonMixin): - enrich_own_fields: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enrich_own_fields") - ) + enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Sorting parameters for the query - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filters to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) - + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) @dataclass class QueryPinnedActivitiesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of pinned activities matching the query - pinned_activities: "list[ActivityPinResponse]" = dc_field( - metadata=dc_config(field_name="pinned_activities") - ) + pinned_activities: 'list[ActivityPinResponse]' = dc_field(metadata=dc_config(field_name="pinned_activities")) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryPollVotesRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) - + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) @dataclass class QueryPollsRequest(DataClassJsonMixin): @@ -22641,167 +11430,106 @@ class QueryPollsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) - + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) @dataclass class QueryPollsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Polls data returned by the query - polls: "list[PollResponseData]" = dc_field(metadata=dc_config(field_name="polls")) + polls: 'list[PollResponseData]' = dc_field(metadata=dc_config(field_name="polls")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryPredefinedFiltersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Predefined filters - predefined_filters: "list[PredefinedFilterResponse]" = dc_field( - metadata=dc_config(field_name="predefined_filters") - ) + predefined_filters: 'list[PredefinedFilterResponse]' = dc_field(metadata=dc_config(field_name="predefined_filters")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryReactionsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryReactionsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - reactions: "list[ReactionResponse]" = dc_field( - metadata=dc_config(field_name="reactions") - ) + reactions: 'list[ReactionResponse]' = dc_field(metadata=dc_config(field_name="reactions")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryRemindersRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryRemindersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # MessageReminders data returned by the query - reminders: "list[ReminderResponseData]" = dc_field( - metadata=dc_config(field_name="reminders") - ) + reminders: 'list[ReminderResponseData]' = dc_field(metadata=dc_config(field_name="reminders")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryReviewQueueRequest(DataClassJsonMixin): - exclude_default_action_config: bool | None = dc_field( - default=None, metadata=dc_config(field_name="exclude_default_action_config") - ) + exclude_default_action_config: bool | None = dc_field(default=None, metadata=dc_config(field_name="exclude_default_action_config")) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) # Number of items to lock (1-25) - lock_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="lock_count") - ) + lock_count: int | None = dc_field(default=None, metadata=dc_config(field_name="lock_count")) # Duration for which items should be locked - lock_duration: int | None = dc_field( - default=None, metadata=dc_config(field_name="lock_duration") - ) + lock_duration: int | None = dc_field(default=None, metadata=dc_config(field_name="lock_duration")) # Whether to lock items for review (true), unlock items (false), or just fetch (nil) - lock_items: bool | None = dc_field( - default=None, metadata=dc_config(field_name="lock_items") - ) + lock_items: bool | None = dc_field(default=None, metadata=dc_config(field_name="lock_items")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Whether to return only statistics - stats_only: bool | None = dc_field( - default=None, metadata=dc_config(field_name="stats_only") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + stats_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="stats_only")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Sorting parameters for the results - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter conditions for review queue items. Accepts built-in fields (e.g. status, channel_cid, severity, recommended_action) and customer-supplied moderation_payload.custom keys: any key that is not a built-in field is matched against the item's custom moderation data (e.g. {"location_id": "loc-42"}). Use filter_config.filterable_custom_keys to discover which custom keys the app exposes as chips. - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryReviewQueueResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of review queue items - items: "list[ReviewQueueItemResponse]" = dc_field( - metadata=dc_config(field_name="items") - ) + items: 'list[ReviewQueueItemResponse]' = dc_field(metadata=dc_config(field_name="items")) # Configuration for moderation actions - action_config: "dict[str, list[ModerationActionConfigResponse]]" = dc_field( - metadata=dc_config(field_name="action_config") - ) + action_config: 'dict[str, list[ModerationActionConfigResponse]]' = dc_field(metadata=dc_config(field_name="action_config")) # Statistics about the review queue stats: dict[str, object] = dc_field(metadata=dc_config(field_name="stats")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - default_action_config: "dict[str, list[ModerationActionConfigResponse]] | None" = ( - dc_field(default=None, metadata=dc_config(field_name="default_action_config")) - ) - filter_config: "FilterConfigResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="filter_config") - ) - + default_action_config: 'dict[str, list[ModerationActionConfigResponse]] | None' = dc_field(default=None, metadata=dc_config(field_name="default_action_config")) + filter_config: 'FilterConfigResponse | None' = dc_field(default=None, metadata=dc_config(field_name="filter_config")) @dataclass class QueryRevisionHistoryRequest(DataClassJsonMixin): @@ -22811,23 +11539,17 @@ class QueryRevisionHistoryRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) - + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) @dataclass class QueryRevisionHistoryResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Revision history entries - revisions: "list[RevisionHistoryResponse]" = dc_field( - metadata=dc_config(field_name="revisions") - ) + revisions: 'list[RevisionHistoryResponse]' = dc_field(metadata=dc_config(field_name="revisions")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QuerySegmentTargetsRequest(DataClassJsonMixin): # Limit @@ -22836,26 +11558,18 @@ class QuerySegmentTargetsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Prev prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="Sort") - ) - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="Filter") - ) - + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="Sort")) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="Filter")) @dataclass class QuerySegmentTargetsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Targets - targets: "list[SegmentTargetResponse]" = dc_field( - metadata=dc_config(field_name="targets") - ) + targets: 'list[SegmentTargetResponse]' = dc_field(metadata=dc_config(field_name="targets")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QuerySegmentsRequest(DataClassJsonMixin): # Filter to apply to the query @@ -22864,29 +11578,21 @@ class QuerySegmentsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) - + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) @dataclass class QuerySegmentsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Segments - segments: "list[SegmentResponse]" = dc_field( - metadata=dc_config(field_name="segments") - ) + segments: 'list[SegmentResponse]' = dc_field(metadata=dc_config(field_name="segments")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryTeamUsageStatsRequest(DataClassJsonMixin): # End date in YYYY-MM-DD format. Used with start_date for custom date range. Returns daily breakdown. - end_date: str | None = dc_field( - default=None, metadata=dc_config(field_name="end_date") - ) + end_date: str | None = dc_field(default=None, metadata=dc_config(field_name="end_date")) # Maximum number of teams to return per page (default: 30, max: 30) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) # Month in YYYY-MM format (e.g., '2026-01'). Mutually exclusive with start_date/end_date. Returns aggregated monthly values. @@ -22894,137 +11600,90 @@ class QueryTeamUsageStatsRequest(DataClassJsonMixin): # Cursor for pagination to fetch next page of teams next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Start date in YYYY-MM-DD format. Used with end_date for custom date range. Returns daily breakdown. - start_date: str | None = dc_field( - default=None, metadata=dc_config(field_name="start_date") - ) + start_date: str | None = dc_field(default=None, metadata=dc_config(field_name="start_date")) # Filter results to a single team ID. Empty string selects users not assigned to any team. Mutually exclusive with 'next'. team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - @dataclass class QueryTeamUsageStatsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Array of team usage statistics - teams: "list[TeamUsageStats]" = dc_field(metadata=dc_config(field_name="teams")) + teams: 'list[TeamUsageStats]' = dc_field(metadata=dc_config(field_name="teams")) # Cursor for pagination to fetch next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) - @dataclass class QueryThreadsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) - member_limit: int | None = dc_field( - default=None, metadata=dc_config(field_name="member_limit") - ) + member_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="member_limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Limit the number of participants returned per each thread - participant_limit: int | None = dc_field( - default=None, metadata=dc_config(field_name="participant_limit") - ) + participant_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="participant_limit")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Limit the number of replies returned per each thread - reply_limit: int | None = dc_field( - default=None, metadata=dc_config(field_name="reply_limit") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + reply_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="reply_limit")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryThreadsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of enriched thread states - threads: "list[ThreadStateResponse]" = dc_field( - metadata=dc_config(field_name="threads") - ) + threads: 'list[ThreadStateResponse]' = dc_field(metadata=dc_config(field_name="threads")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryUserFeedbackRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_conditions") - ) - + filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) @dataclass class QueryUserFeedbackResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - user_feedback: "list[UserFeedbackResponse]" = dc_field( - metadata=dc_config(field_name="user_feedback") - ) + user_feedback: 'list[UserFeedbackResponse]' = dc_field(metadata=dc_config(field_name="user_feedback")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - @dataclass class QueryUsersPayload(DataClassJsonMixin): # Filter conditions to apply to the query - filter_conditions: dict[str, object] = dc_field( - metadata=dc_config(field_name="filter_conditions") - ) - include_deactivated_users: bool | None = dc_field( - default=None, metadata=dc_config(field_name="include_deactivated_users") - ) + filter_conditions: dict[str, object] = dc_field(metadata=dc_config(field_name="filter_conditions")) + include_deactivated_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_deactivated_users")) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) offset: int | None = dc_field(default=None, metadata=dc_config(field_name="offset")) - presence: bool | None = dc_field( - default=None, metadata=dc_config(field_name="presence") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + presence: bool | None = dc_field(default=None, metadata=dc_config(field_name="presence")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Array of sort parameters - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class QueryUsersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Array of users as result of filters applied. - users: "list[FullUserResponse]" = dc_field(metadata=dc_config(field_name="users")) - + users: 'list[FullUserResponse]' = dc_field(metadata=dc_config(field_name="users")) @dataclass class QueueResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - queue: "ModerationQueueResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="queue") - ) - + queue: 'ModerationQueueResponse | None' = dc_field(default=None, metadata=dc_config(field_name="queue")) @dataclass class RTMPBroadcastRequest(DataClassJsonMixin): @@ -23033,65 +11692,41 @@ class RTMPBroadcastRequest(DataClassJsonMixin): # URL for the RTMP server to send the call to stream_url: str = dc_field(metadata=dc_config(field_name="stream_url")) # If provided, will override the call's RTMP settings quality. One of: 360p, 480p, 720p, 1080p, 1440p, portrait-360x640, portrait-480x854, portrait-720x1280, portrait-1080x1920, portrait-1440x2560 - quality: str | None = dc_field( - default=None, metadata=dc_config(field_name="quality") - ) + quality: str | None = dc_field(default=None, metadata=dc_config(field_name="quality")) # If provided, will be appended at the end of stream_url - stream_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="stream_key") - ) - layout: "LayoutSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="layout") - ) - + stream_key: str | None = dc_field(default=None, metadata=dc_config(field_name="stream_key")) + layout: 'LayoutSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="layout")) @dataclass class RTMPIngress(DataClassJsonMixin): address: str = dc_field(metadata=dc_config(field_name="address")) - @dataclass class RTMPLocation(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) stream_key: str = dc_field(metadata=dc_config(field_name="stream_key")) stream_url: str = dc_field(metadata=dc_config(field_name="stream_url")) - @dataclass class RTMPSettings(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - quality_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="quality_name") - ) - layout: "LayoutSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="layout") - ) - location: "RTMPLocation | None" = dc_field( - default=None, metadata=dc_config(field_name="location") - ) - + quality_name: str | None = dc_field(default=None, metadata=dc_config(field_name="quality_name")) + layout: 'LayoutSettings | None' = dc_field(default=None, metadata=dc_config(field_name="layout")) + location: 'RTMPLocation | None' = dc_field(default=None, metadata=dc_config(field_name="location")) @dataclass class RTMPSettingsRequest(DataClassJsonMixin): # Whether RTMP broadcasting is enabled - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) # Resolution to set for the RTMP stream. One of: 360p, 480p, 720p, 1080p, 1440p, portrait-360x640, portrait-480x854, portrait-720x1280, portrait-1080x1920, portrait-1440x2560 - quality: str | None = dc_field( - default=None, metadata=dc_config(field_name="quality") - ) - layout: "LayoutSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="layout") - ) - + quality: str | None = dc_field(default=None, metadata=dc_config(field_name="quality")) + layout: 'LayoutSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="layout")) @dataclass class RTMPSettingsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) quality: str = dc_field(metadata=dc_config(field_name="quality")) - layout: "LayoutSettingsResponse" = dc_field(metadata=dc_config(field_name="layout")) - + layout: 'LayoutSettingsResponse' = dc_field(metadata=dc_config(field_name="layout")) @dataclass class RankingConfig(DataClassJsonMixin): @@ -23100,337 +11735,154 @@ class RankingConfig(DataClassJsonMixin): # Scoring formula. Required when type is 'expression' or 'interest' score: str | None = dc_field(default=None, metadata=dc_config(field_name="score")) # Default values for ranking - defaults: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="defaults") - ) + defaults: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="defaults")) # Decay functions configuration - functions: "dict[str, DecayFunctionConfig] | None" = dc_field( - default=None, metadata=dc_config(field_name="functions") - ) - + functions: 'dict[str, DecayFunctionConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="functions")) @dataclass class RawRecordSettings(DataClassJsonMixin): mode: str = dc_field(metadata=dc_config(field_name="mode")) - audio_only: bool | None = dc_field( - default=None, metadata=dc_config(field_name="audio_only") - ) - + audio_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="audio_only")) @dataclass class RawRecordingResponse(DataClassJsonMixin): status: str = dc_field(metadata=dc_config(field_name="status")) - @dataclass class RawRecordingSettingsRequest(DataClassJsonMixin): # Recording mode. One of: available, disabled, auto-on mode: str = dc_field(metadata=dc_config(field_name="mode")) # If true, only audio tracks will be recorded - audio_only: bool | None = dc_field( - default=None, metadata=dc_config(field_name="audio_only") - ) - + audio_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="audio_only")) @dataclass class RawRecordingSettingsResponse(DataClassJsonMixin): mode: str = dc_field(metadata=dc_config(field_name="mode")) - audio_only: bool | None = dc_field( - default=None, metadata=dc_config(field_name="audio_only") - ) - + audio_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="audio_only")) @dataclass class Reaction(DataClassJsonMixin): activity_id: str = dc_field(metadata=dc_config(field_name="activity_id")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) kind: str = dc_field(metadata=dc_config(field_name="kind")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) parent: str | None = dc_field(default=None, metadata=dc_config(field_name="parent")) score: float | None = dc_field(default=None, metadata=dc_config(field_name="score")) - target_feeds: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="target_feeds") - ) - children_counts: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="children_counts") - ) - data: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="data") - ) - latest_children: "dict[str, list[Reaction]] | None" = dc_field( - default=None, metadata=dc_config(field_name="latest_children") - ) - moderation: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="moderation") - ) - own_children: "dict[str, list[Reaction]] | None" = dc_field( - default=None, metadata=dc_config(field_name="own_children") - ) - target_feeds_extra_data: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="target_feeds_extra_data") - ) - user: "User | None" = dc_field(default=None, metadata=dc_config(field_name="user")) - + target_feeds: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="target_feeds")) + children_counts: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="children_counts")) + data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) + latest_children: 'dict[str, list[Reaction]] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_children")) + moderation: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="moderation")) + own_children: 'dict[str, list[Reaction]] | None' = dc_field(default=None, metadata=dc_config(field_name="own_children")) + target_feeds_extra_data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="target_feeds_extra_data")) + user: 'User | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ReactionDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents channel in chat - channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "reaction.deleted" in this case - type: str = dc_field( - default="reaction.deleted", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="reaction.deleted", metadata=dc_config(field_name="type")) # The ID of the channel containing the message - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) # The number of messages in the channel - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel containing the message - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel containing the message cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="message_id") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="message_id")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # The participants of the thread - thread_participants: "list[UserResponseCommonFields] | None" = dc_field( - default=None, metadata=dc_config(field_name="thread_participants") - ) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) + thread_participants: 'list[UserResponseCommonFields] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - reaction: "ReactionResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="reaction") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + reaction: 'ReactionResponse | None' = dc_field(default=None, metadata=dc_config(field_name="reaction")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ReactionGroupResponse(DataClassJsonMixin): # Count is the number of reactions of this type. count: int = dc_field(metadata=dc_config(field_name="count")) # FirstReactionAt is the time of the first reaction of this type. This is the same also if all reaction of this type are deleted, because if someone will react again with the same type, will be preserved the sorting. - first_reaction_at: datetime = dc_field( - metadata=dc_config( - field_name="first_reaction_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + first_reaction_at: datetime = dc_field(metadata=dc_config(field_name="first_reaction_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # LastReactionAt is the time of the last reaction of this type. - last_reaction_at: datetime = dc_field( - metadata=dc_config( - field_name="last_reaction_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + last_reaction_at: datetime = dc_field(metadata=dc_config(field_name="last_reaction_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # SumScores is the sum of all scores of reactions of this type. Medium allows you to clap articles more than once and shows the sum of all claps from all users. For example, you can send `clap` x5 using `score: 5`. sum_scores: int = dc_field(metadata=dc_config(field_name="sum_scores")) # The most recent users who reacted with this type, ordered by most recent first. - latest_reactions_by: "list[ReactionGroupUserResponse]" = dc_field( - metadata=dc_config(field_name="latest_reactions_by") - ) - + latest_reactions_by: 'list[ReactionGroupUserResponse]' = dc_field(metadata=dc_config(field_name="latest_reactions_by")) @dataclass class ReactionGroupUserResponse(DataClassJsonMixin): # The time when the user reacted. - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The ID of the user who reacted. user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ReactionNewEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents channel in chat - channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "reaction.new" in this case type: str = dc_field(default="reaction.new", metadata=dc_config(field_name="type")) # The ID of the channel containing the message - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) # The number of messages in the channel - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel containing the message - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel containing the message cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="message_id") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="message_id")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # The participants of the thread - thread_participants: "list[UserResponseCommonFields] | None" = dc_field( - default=None, metadata=dc_config(field_name="thread_participants") - ) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) + thread_participants: 'list[UserResponseCommonFields] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - reaction: "ReactionResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="reaction") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + reaction: 'ReactionResponse | None' = dc_field(default=None, metadata=dc_config(field_name="reaction")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ReactionRequest(DataClassJsonMixin): # The type of reaction (e.g. 'like', 'laugh', 'wow') type: str = dc_field(metadata=dc_config(field_name="type")) # Date/time of creation - created_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Reaction score. If not specified reaction has score of 1 score: int | None = dc_field(default=None, metadata=dc_config(field_name="score")) # Date/time of the last update - updated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ReactionResponse(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Message ID message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # Score of the reaction @@ -23438,123 +11890,68 @@ class ReactionResponse(DataClassJsonMixin): # Type of reaction type: str = dc_field(metadata=dc_config(field_name="type")) # Date/time of the last update - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # User ID user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # Custom data for this object custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) @dataclass class ReactionUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # Represents channel in chat - channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Represents any chat message - message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) + message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) # The type of event: "reaction.updated" in this case - type: str = dc_field( - default="reaction.updated", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="reaction.updated", metadata=dc_config(field_name="type")) # The ID of the channel containing the message - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # The number of members in the channel - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) # The number of messages in the channel - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel containing the message - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel containing the message cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - reaction: "ReactionResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="reaction") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + reaction: 'ReactionResponse | None' = dc_field(default=None, metadata=dc_config(field_name="reaction")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ReactivateUserRequest(DataClassJsonMixin): # ID of the user who's reactivating the user - created_by_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="created_by_id") - ) + created_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_id")) # Set this field to put new name for the user name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # Restore previously deleted messages - restore_messages: bool | None = dc_field( - default=None, metadata=dc_config(field_name="restore_messages") - ) - + restore_messages: bool | None = dc_field(default=None, metadata=dc_config(field_name="restore_messages")) @dataclass class ReactivateUserResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ReactivateUsersRequest(DataClassJsonMixin): # User IDs to reactivate user_ids: list[str] = dc_field(metadata=dc_config(field_name="user_ids")) # ID of the user who's reactivating the users - created_by_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="created_by_id") - ) - restore_channels: bool | None = dc_field( - default=None, metadata=dc_config(field_name="restore_channels") - ) + created_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_id")) + restore_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="restore_channels")) # Restore previously deleted messages - restore_messages: bool | None = dc_field( - default=None, metadata=dc_config(field_name="restore_messages") - ) - + restore_messages: bool | None = dc_field(default=None, metadata=dc_config(field_name="restore_messages")) @dataclass class ReactivateUsersResponse(DataClassJsonMixin): @@ -23562,112 +11959,65 @@ class ReactivateUsersResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - @dataclass class ReadCollectionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of collections matching the references - collections: "list[CollectionResponse]" = dc_field( - metadata=dc_config(field_name="collections") - ) - + collections: 'list[CollectionResponse]' = dc_field(metadata=dc_config(field_name="collections")) @dataclass class ReadReceiptsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - @dataclass class ReadStateResponse(DataClassJsonMixin): - last_read: datetime = dc_field( - metadata=dc_config( - field_name="last_read", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + last_read: datetime = dc_field(metadata=dc_config(field_name="last_read", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) unread_messages: int = dc_field(metadata=dc_config(field_name="unread_messages")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - last_delivered_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_delivered_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - last_delivered_message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="last_delivered_message_id") - ) - last_read_message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="last_read_message_id") - ) - + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + last_delivered_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_delivered_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_delivered_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="last_delivered_message_id")) + last_read_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="last_read_message_id")) @dataclass class RecordSettings(DataClassJsonMixin): mode: str = dc_field(metadata=dc_config(field_name="mode")) - audio_only: bool | None = dc_field( - default=None, metadata=dc_config(field_name="audio_only") - ) - quality: str | None = dc_field( - default=None, metadata=dc_config(field_name="quality") - ) - layout: "LayoutSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="layout") - ) - + audio_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="audio_only")) + quality: str | None = dc_field(default=None, metadata=dc_config(field_name="quality")) + layout: 'LayoutSettings | None' = dc_field(default=None, metadata=dc_config(field_name="layout")) @dataclass class RecordSettingsRequest(DataClassJsonMixin): # Recording mode. One of: available, disabled, auto-on mode: str = dc_field(metadata=dc_config(field_name="mode")) # Whether to record audio only - audio_only: bool | None = dc_field( - default=None, metadata=dc_config(field_name="audio_only") - ) + audio_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="audio_only")) # Recording quality. One of: 360p, 480p, 720p, 1080p, 1440p, portrait-360x640, portrait-480x854, portrait-720x1280, portrait-1080x1920, portrait-1440x2560 - quality: str | None = dc_field( - default=None, metadata=dc_config(field_name="quality") - ) - layout: "LayoutSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="layout") - ) - + quality: str | None = dc_field(default=None, metadata=dc_config(field_name="quality")) + layout: 'LayoutSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="layout")) @dataclass class RecordSettingsResponse(DataClassJsonMixin): audio_only: bool = dc_field(metadata=dc_config(field_name="audio_only")) mode: str = dc_field(metadata=dc_config(field_name="mode")) quality: str = dc_field(metadata=dc_config(field_name="quality")) - layout: "LayoutSettingsResponse" = dc_field(metadata=dc_config(field_name="layout")) - + layout: 'LayoutSettingsResponse' = dc_field(metadata=dc_config(field_name="layout")) @dataclass class RejectAppealRequestPayload(DataClassJsonMixin): # Reason for rejecting the appeal decision_reason: str = dc_field(metadata=dc_config(field_name="decision_reason")) - @dataclass class RejectFeedMemberInviteRequest(DataClassJsonMixin): - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class RejectFeedMemberInviteResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - member: "FeedMemberResponse" = dc_field(metadata=dc_config(field_name="member")) - + member: 'FeedMemberResponse' = dc_field(metadata=dc_config(field_name="member")) @dataclass class RejectFollowRequest(DataClassJsonMixin): @@ -23676,232 +12026,107 @@ class RejectFollowRequest(DataClassJsonMixin): # Fully qualified ID of the target feed target: str = dc_field(metadata=dc_config(field_name="target")) - @dataclass class RejectFollowResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) - + follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) @dataclass class ReminderCreatedEvent(DataClassJsonMixin): # The CID of the Channel for which the reminder was created cid: str = dc_field(metadata=dc_config(field_name="cid")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The ID of the message for which the reminder was created message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # The ID of the user for whom the reminder was created user_id: str = dc_field(metadata=dc_config(field_name="user_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + reminder: 'ReminderResponseData' = dc_field(metadata=dc_config(field_name="reminder")) # The type of event: "reminder.created" in this case - type: str = dc_field( - default="reminder.created", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="reminder.created", metadata=dc_config(field_name="type")) # The ID of the parent message, if the reminder is for a thread message - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - reminder: "ReminderResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="reminder") - ) - + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class ReminderDeletedEvent(DataClassJsonMixin): # The CID of the Channel for which the reminder was created cid: str = dc_field(metadata=dc_config(field_name="cid")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The ID of the message for which the reminder was created message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # The ID of the user for whom the reminder was created user_id: str = dc_field(metadata=dc_config(field_name="user_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + reminder: 'ReminderResponseData' = dc_field(metadata=dc_config(field_name="reminder")) # The type of event: "reminder.deleted" in this case - type: str = dc_field( - default="reminder.deleted", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="reminder.deleted", metadata=dc_config(field_name="type")) # The ID of the parent message, if the reminder is for a thread message - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - reminder: "ReminderResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="reminder") - ) - + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class ReminderNotificationEvent(DataClassJsonMixin): # The CID of the Channel for which the reminder was created cid: str = dc_field(metadata=dc_config(field_name="cid")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The ID of the message for which the reminder was created message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # The ID of the user for whom the reminder was created user_id: str = dc_field(metadata=dc_config(field_name="user_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + reminder: 'ReminderResponseData' = dc_field(metadata=dc_config(field_name="reminder")) # The type of event: "notification.reminder_due" in this case - type: str = dc_field( - default="notification.reminder_due", metadata=dc_config(field_name="type") - ) - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - reminder: "ReminderResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="reminder") - ) - + type: str = dc_field(default="notification.reminder_due", metadata=dc_config(field_name="type")) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class ReminderResponseData(DataClassJsonMixin): channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - remind_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="remind_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + remind_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="remind_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ReminderUpdatedEvent(DataClassJsonMixin): # The CID of the Channel for which the reminder was created cid: str = dc_field(metadata=dc_config(field_name="cid")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The ID of the message for which the reminder was created message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # The ID of the user for whom the reminder was created user_id: str = dc_field(metadata=dc_config(field_name="user_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + reminder: 'ReminderResponseData' = dc_field(metadata=dc_config(field_name="reminder")) # The type of event: "reminder.updated" in this case - type: str = dc_field( - default="reminder.updated", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="reminder.updated", metadata=dc_config(field_name="type")) # The ID of the parent message, if the reminder is for a thread message - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - reminder: "ReminderResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="reminder") - ) - + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class RemoveUserGroupMembersRequest(DataClassJsonMixin): # List of user IDs to remove member_ids: list[str] = dc_field(metadata=dc_config(field_name="member_ids")) - team_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="team_id") - ) - + team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="team_id")) @dataclass class RemoveUserGroupMembersResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - user_group: "UserGroupResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user_group") - ) - + user_group: 'UserGroupResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) @dataclass class RepliesMeta(DataClassJsonMixin): @@ -23912,74 +12137,47 @@ class RepliesMeta(DataClassJsonMixin): # Number of unread siblings that match current filters. remaining: int = dc_field(metadata=dc_config(field_name="remaining")) # Opaque cursor to request the next page of siblings. - next_cursor: str | None = dc_field( - default=None, metadata=dc_config(field_name="next_cursor") - ) - + next_cursor: str | None = dc_field(default=None, metadata=dc_config(field_name="next_cursor")) @dataclass class ReportByHistogramBucket(DataClassJsonMixin): category: str = dc_field(metadata=dc_config(field_name="category")) count: int = dc_field(metadata=dc_config(field_name="count")) sum: float = dc_field(metadata=dc_config(field_name="sum")) - lower_bound: "Bound | None" = dc_field( - default=None, metadata=dc_config(field_name="lower_bound") - ) - upper_bound: "Bound | None" = dc_field( - default=None, metadata=dc_config(field_name="upper_bound") - ) - + lower_bound: 'Bound | None' = dc_field(default=None, metadata=dc_config(field_name="lower_bound")) + upper_bound: 'Bound | None' = dc_field(default=None, metadata=dc_config(field_name="upper_bound")) @dataclass class ReportClientEventRequest(DataClassJsonMixin): # Client-side events to report (1-100 per request) - events: "list[ClientEvent]" = dc_field(metadata=dc_config(field_name="events")) - + events: 'list[ClientEvent]' = dc_field(metadata=dc_config(field_name="events")) @dataclass class ReportClientEventResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class ReportResponse(DataClassJsonMixin): - call: "CallReportResponse" = dc_field(metadata=dc_config(field_name="call")) - participants: "ParticipantReportResponse" = dc_field( - metadata=dc_config(field_name="participants") - ) - user_ratings: "UserRatingReportResponse" = dc_field( - metadata=dc_config(field_name="user_ratings") - ) - + call: 'CallReportResponse' = dc_field(metadata=dc_config(field_name="call")) + participants: 'ParticipantReportResponse' = dc_field(metadata=dc_config(field_name="participants")) + user_ratings: 'UserRatingReportResponse' = dc_field(metadata=dc_config(field_name="user_ratings")) @dataclass class ResolutionMetricsTimeSeries(DataClassJsonMixin): - height: "MetricTimeSeries | None" = dc_field( - default=None, metadata=dc_config(field_name="height") - ) - width: "MetricTimeSeries | None" = dc_field( - default=None, metadata=dc_config(field_name="width") - ) - + height: 'MetricTimeSeries | None' = dc_field(default=None, metadata=dc_config(field_name="height")) + width: 'MetricTimeSeries | None' = dc_field(default=None, metadata=dc_config(field_name="width")) @dataclass class ResolveSipAuthRequest(DataClassJsonMixin): # SIP caller number - sip_caller_number: str = dc_field( - metadata=dc_config(field_name="sip_caller_number") - ) + sip_caller_number: str = dc_field(metadata=dc_config(field_name="sip_caller_number")) # SIP trunk number to look up sip_trunk_number: str = dc_field(metadata=dc_config(field_name="sip_trunk_number")) # Host from the SIP From header - from_host: str | None = dc_field( - default=None, metadata=dc_config(field_name="from_host") - ) + from_host: str | None = dc_field(default=None, metadata=dc_config(field_name="from_host")) # Transport-layer source IP address of the SIP request - source_ip: str | None = dc_field( - default=None, metadata=dc_config(field_name="source_ip") - ) - + source_ip: str | None = dc_field(default=None, metadata=dc_config(field_name="source_ip")) @dataclass class ResolveSipAuthResponse(DataClassJsonMixin): @@ -23987,200 +12185,114 @@ class ResolveSipAuthResponse(DataClassJsonMixin): auth_result: str = dc_field(metadata=dc_config(field_name="auth_result")) duration: str = dc_field(metadata=dc_config(field_name="duration")) # Password for digest authentication (when auth_result is password) - password: str | None = dc_field( - default=None, metadata=dc_config(field_name="password") - ) + password: str | None = dc_field(default=None, metadata=dc_config(field_name="password")) # ID of the matched SIP trunk - trunk_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="trunk_id") - ) + trunk_id: str | None = dc_field(default=None, metadata=dc_config(field_name="trunk_id")) # Username for digest authentication (when auth_result is password) - username: str | None = dc_field( - default=None, metadata=dc_config(field_name="username") - ) - + username: str | None = dc_field(default=None, metadata=dc_config(field_name="username")) @dataclass class ResolveSipInboundRequest(DataClassJsonMixin): # SIP caller number - sip_caller_number: str = dc_field( - metadata=dc_config(field_name="sip_caller_number") - ) + sip_caller_number: str = dc_field(metadata=dc_config(field_name="sip_caller_number")) # SIP trunk number to resolve sip_trunk_number: str = dc_field(metadata=dc_config(field_name="sip_trunk_number")) # Optional routing number for routing number-based call routing (10 digits) - routing_number: str | None = dc_field( - default=None, metadata=dc_config(field_name="routing_number") - ) + routing_number: str | None = dc_field(default=None, metadata=dc_config(field_name="routing_number")) # Optional pre-authenticated trunk ID (from PreAuth no-auth flow) - trunk_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="trunk_id") - ) + trunk_id: str | None = dc_field(default=None, metadata=dc_config(field_name="trunk_id")) # SIP digest challenge authentication data - challenge: "SIPChallengeRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="challenge") - ) + challenge: 'SIPChallengeRequest | None' = dc_field(default=None, metadata=dc_config(field_name="challenge")) # Optional SIP headers as key-value pairs - sip_headers: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="sip_headers") - ) - + sip_headers: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="sip_headers")) @dataclass class ResolveSipInboundResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Credentials for SIP inbound call authentication - credentials: "SipInboundCredentials" = dc_field( - metadata=dc_config(field_name="credentials") - ) + credentials: 'SipInboundCredentials' = dc_field(metadata=dc_config(field_name="credentials")) # SIP Inbound Routing Rule response - sip_routing_rule: "SIPInboundRoutingRuleResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="sip_routing_rule") - ) + sip_routing_rule: 'SIPInboundRoutingRuleResponse | None' = dc_field(default=None, metadata=dc_config(field_name="sip_routing_rule")) # SIP trunk information - sip_trunk: "SIPTrunkResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="sip_trunk") - ) - + sip_trunk: 'SIPTrunkResponse | None' = dc_field(default=None, metadata=dc_config(field_name="sip_trunk")) @dataclass class Response(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class RestoreActionRequestPayload(DataClassJsonMixin): # Reason for the appeal decision - decision_reason: str | None = dc_field( - default=None, metadata=dc_config(field_name="decision_reason") - ) - + decision_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="decision_reason")) @dataclass class RestoreActivityRequest(DataClassJsonMixin): - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class RestoreActivityResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) - + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) @dataclass class RestoreCommentRequest(DataClassJsonMixin): - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class RestoreCommentResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) - comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) - + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) @dataclass class RestoreFeedGroupRequest(DataClassJsonMixin): pass - @dataclass class RestoreFeedGroupResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_group: "FeedGroupResponse" = dc_field( - metadata=dc_config(field_name="feed_group") - ) - + feed_group: 'FeedGroupResponse' = dc_field(metadata=dc_config(field_name="feed_group")) @dataclass class RestoreUsersRequest(DataClassJsonMixin): user_ids: list[str] = dc_field(metadata=dc_config(field_name="user_ids")) - @dataclass class RetentionPolicy(DataClassJsonMixin): app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) - enabled_at: datetime = dc_field( - metadata=dc_config( - field_name="enabled_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + enabled_at: datetime = dc_field(metadata=dc_config(field_name="enabled_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) policy: str = dc_field(metadata=dc_config(field_name="policy")) - config: "PolicyConfig" = dc_field(metadata=dc_config(field_name="config")) - + config: 'PolicyConfig' = dc_field(metadata=dc_config(field_name="config")) @dataclass class RetentionRunResponse(DataClassJsonMixin): app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) date: str = dc_field(metadata=dc_config(field_name="date")) policy: str = dc_field(metadata=dc_config(field_name="policy")) - stats: "RunStats" = dc_field(metadata=dc_config(field_name="stats")) - + stats: 'RunStats' = dc_field(metadata=dc_config(field_name="stats")) @dataclass class ReviewQueueItemNewEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="review_queue_item.new", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + type: str = dc_field(default="review_queue_item.new", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The flags associated with this review queue item - flags: "list[ModerationFlagResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="flags") - ) - action: "ActionLogResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="action") - ) - review_queue_item: "ReviewQueueItemResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="review_queue_item") - ) - + flags: 'list[ModerationFlagResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="flags")) + action: 'ActionLogResponse | None' = dc_field(default=None, metadata=dc_config(field_name="action")) + review_queue_item: 'ReviewQueueItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="review_queue_item")) @dataclass class ReviewQueueItemResponse(DataClassJsonMixin): # AI-determined text severity ai_text_severity: str = dc_field(metadata=dc_config(field_name="ai_text_severity")) # When the item was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # ID of the entity being reviewed entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) # Type of entity being reviewed @@ -24190,13 +12302,9 @@ class ReviewQueueItemResponse(DataClassJsonMixin): flags_count: int = dc_field(metadata=dc_config(field_name="flags_count")) # Unique identifier of the review queue item id: str = dc_field(metadata=dc_config(field_name="id")) - latest_moderator_action: str = dc_field( - metadata=dc_config(field_name="latest_moderator_action") - ) + latest_moderator_action: str = dc_field(metadata=dc_config(field_name="latest_moderator_action")) # Suggested moderation action - recommended_action: str = dc_field( - metadata=dc_config(field_name="recommended_action") - ) + recommended_action: str = dc_field(metadata=dc_config(field_name="recommended_action")) # ID of the moderator who reviewed the item reviewed_by: str = dc_field(metadata=dc_config(field_name="reviewed_by")) # Severity level of the content @@ -24204,181 +12312,72 @@ class ReviewQueueItemResponse(DataClassJsonMixin): # Current status of the review status: str = dc_field(metadata=dc_config(field_name="status")) # When the item was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Moderation actions taken - actions: "list[ActionLogResponse]" = dc_field( - metadata=dc_config(field_name="actions") - ) + actions: 'list[ActionLogResponse]' = dc_field(metadata=dc_config(field_name="actions")) # Associated ban records - bans: "list[BanInfoResponse]" = dc_field(metadata=dc_config(field_name="bans")) + bans: 'list[BanInfoResponse]' = dc_field(metadata=dc_config(field_name="bans")) # Associated flag records - flags: "list[ModerationFlagResponse]" = dc_field( - metadata=dc_config(field_name="flags") - ) + flags: 'list[ModerationFlagResponse]' = dc_field(metadata=dc_config(field_name="flags")) # Detected languages in the content languages: list[str] = dc_field(metadata=dc_config(field_name="languages")) # When the review was completed - completed_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="completed_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - config_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="config_key") - ) + completed_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="completed_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) # ID of who created the entity - entity_creator_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="entity_creator_id") - ) + entity_creator_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_creator_id")) # When the item was escalated - escalated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="escalated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + escalated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="escalated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # ID of the moderator who escalated the item - escalated_by: str | None = dc_field( - default=None, metadata=dc_config(field_name="escalated_by") - ) + escalated_by: str | None = dc_field(default=None, metadata=dc_config(field_name="escalated_by")) # When the item was reviewed - reviewed_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="reviewed_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + reviewed_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="reviewed_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Teams associated with this item - teams: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="teams") - ) - activity: "EnrichedActivity | None" = dc_field( - default=None, metadata=dc_config(field_name="activity") - ) - appeal: "AppealItemResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="appeal") - ) + teams: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="teams")) + activity: 'EnrichedActivity | None' = dc_field(default=None, metadata=dc_config(field_name="activity")) + appeal: 'AppealItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="appeal")) # User response object - assigned_to: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="assigned_to") - ) - call: "ModerationCallResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="call") - ) - entity_creator: "EntityCreatorResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="entity_creator") - ) - escalation_metadata: "EscalationMetadata | None" = dc_field( - default=None, metadata=dc_config(field_name="escalation_metadata") - ) - feeds_v2_activity: "EnrichedActivity | None" = dc_field( - default=None, metadata=dc_config(field_name="feeds_v2_activity") - ) - feeds_v2_reaction: "Reaction | None" = dc_field( - default=None, metadata=dc_config(field_name="feeds_v2_reaction") - ) - feeds_v3_activity: "FeedsV3ActivityResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="feeds_v3_activity") - ) - feeds_v3_comment: "FeedsV3CommentResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="feeds_v3_comment") - ) - message: "ChatMessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) + assigned_to: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="assigned_to")) + call: 'ModerationCallResponse | None' = dc_field(default=None, metadata=dc_config(field_name="call")) + entity_creator: 'EntityCreatorResponse | None' = dc_field(default=None, metadata=dc_config(field_name="entity_creator")) + escalation_metadata: 'EscalationMetadata | None' = dc_field(default=None, metadata=dc_config(field_name="escalation_metadata")) + feeds_v2_activity: 'EnrichedActivity | None' = dc_field(default=None, metadata=dc_config(field_name="feeds_v2_activity")) + feeds_v2_reaction: 'Reaction | None' = dc_field(default=None, metadata=dc_config(field_name="feeds_v2_reaction")) + feeds_v3_activity: 'FeedsV3ActivityResponse | None' = dc_field(default=None, metadata=dc_config(field_name="feeds_v3_activity")) + feeds_v3_comment: 'FeedsV3CommentResponse | None' = dc_field(default=None, metadata=dc_config(field_name="feeds_v3_comment")) + message: 'ChatMessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) # Content payload for moderation - moderation_payload: "ModerationPayloadResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation_payload") - ) - reaction: "Reaction | None" = dc_field( - default=None, metadata=dc_config(field_name="reaction") - ) - + moderation_payload: 'ModerationPayloadResponse | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_payload")) + reaction: 'Reaction | None' = dc_field(default=None, metadata=dc_config(field_name="reaction")) @dataclass class ReviewQueueItemUpdatedEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="review_queue_item.updated", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + type: str = dc_field(default="review_queue_item.updated", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The flags associated with this review queue item - flags: "list[ModerationFlagResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="flags") - ) - action: "ActionLogResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="action") - ) - review_queue_item: "ReviewQueueItemResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="review_queue_item") - ) - + flags: 'list[ModerationFlagResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="flags")) + action: 'ActionLogResponse | None' = dc_field(default=None, metadata=dc_config(field_name="action")) + review_queue_item: 'ReviewQueueItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="review_queue_item")) @dataclass class RevisionHistoryResponse(DataClassJsonMixin): action_type: str = dc_field(metadata=dc_config(field_name="action_type")) actor_type: str = dc_field(metadata=dc_config(field_name="actor_type")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) object_id: str = dc_field(metadata=dc_config(field_name="object_id")) object_type: str = dc_field(metadata=dc_config(field_name="object_type")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - changed_fields: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="changed_fields") - ) - previous_obj_serialized: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="previous_obj_serialized") - ) - + changed_fields: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="changed_fields")) + previous_obj_serialized: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="previous_obj_serialized")) @dataclass class RingCallRequest(DataClassJsonMixin): # Indicate if call should be video video: bool | None = dc_field(default=None, metadata=dc_config(field_name="video")) # Members that should receive the ring. If no ids are provided, all call members who are not already in the call will receive ring notifications. - members_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="members_ids") - ) - + members_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="members_ids")) @dataclass class RingCallResponse(DataClassJsonMixin): @@ -24386,333 +12385,169 @@ class RingCallResponse(DataClassJsonMixin): # List of members ringing notification was sent to members_ids: list[str] = dc_field(metadata=dc_config(field_name="members_ids")) - @dataclass class RingSettings(DataClassJsonMixin): - auto_cancel_timeout_ms: int = dc_field( - metadata=dc_config(field_name="auto_cancel_timeout_ms") - ) - incoming_call_timeout_ms: int = dc_field( - metadata=dc_config(field_name="incoming_call_timeout_ms") - ) - missed_call_timeout_ms: int = dc_field( - metadata=dc_config(field_name="missed_call_timeout_ms") - ) - + auto_cancel_timeout_ms: int = dc_field(metadata=dc_config(field_name="auto_cancel_timeout_ms")) + incoming_call_timeout_ms: int = dc_field(metadata=dc_config(field_name="incoming_call_timeout_ms")) + missed_call_timeout_ms: int = dc_field(metadata=dc_config(field_name="missed_call_timeout_ms")) @dataclass class RingSettingsRequest(DataClassJsonMixin): # When none of the callees accept a ring call in this time a rejection will be sent by the caller with reason 'timeout' by the SDKs - auto_cancel_timeout_ms: int = dc_field( - metadata=dc_config(field_name="auto_cancel_timeout_ms") - ) + auto_cancel_timeout_ms: int = dc_field(metadata=dc_config(field_name="auto_cancel_timeout_ms")) # When a callee is online but doesn't answer a ring call in this time a rejection will be sent with reason 'timeout' by the SDKs - incoming_call_timeout_ms: int = dc_field( - metadata=dc_config(field_name="incoming_call_timeout_ms") - ) + incoming_call_timeout_ms: int = dc_field(metadata=dc_config(field_name="incoming_call_timeout_ms")) # When a callee doesn't accept or reject a ring call in this time a missed call event will be sent - missed_call_timeout_ms: int | None = dc_field( - default=None, metadata=dc_config(field_name="missed_call_timeout_ms") - ) - + missed_call_timeout_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="missed_call_timeout_ms")) @dataclass class RingSettingsResponse(DataClassJsonMixin): - auto_cancel_timeout_ms: int = dc_field( - metadata=dc_config(field_name="auto_cancel_timeout_ms") - ) - incoming_call_timeout_ms: int = dc_field( - metadata=dc_config(field_name="incoming_call_timeout_ms") - ) - missed_call_timeout_ms: int = dc_field( - metadata=dc_config(field_name="missed_call_timeout_ms") - ) - + auto_cancel_timeout_ms: int = dc_field(metadata=dc_config(field_name="auto_cancel_timeout_ms")) + incoming_call_timeout_ms: int = dc_field(metadata=dc_config(field_name="incoming_call_timeout_ms")) + missed_call_timeout_ms: int = dc_field(metadata=dc_config(field_name="missed_call_timeout_ms")) @dataclass class Role(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Whether this is a custom role or built-in custom: bool = dc_field(metadata=dc_config(field_name="custom")) # Unique role name name: str = dc_field(metadata=dc_config(field_name="name")) # Date/time of the last update - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # List of scopes where this role is currently present. `.app` means that role is present in app-level grants scopes: list[str] = dc_field(metadata=dc_config(field_name="scopes")) - @dataclass class RuleBuilderAction(DataClassJsonMixin): reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - skip_inbox: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_inbox") - ) + skip_inbox: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_inbox")) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - ban_options: "BanOptions | None" = dc_field( - default=None, metadata=dc_config(field_name="ban_options") - ) - call_options: "CallActionOptions | None" = dc_field( - default=None, metadata=dc_config(field_name="call_options") - ) - flag_user_options: "FlagUserOptions | None" = dc_field( - default=None, metadata=dc_config(field_name="flag_user_options") - ) - + ban_options: 'BanOptions | None' = dc_field(default=None, metadata=dc_config(field_name="ban_options")) + call_options: 'CallActionOptions | None' = dc_field(default=None, metadata=dc_config(field_name="call_options")) + flag_user_options: 'FlagUserOptions | None' = dc_field(default=None, metadata=dc_config(field_name="flag_user_options")) @dataclass class RuleBuilderCondition(DataClassJsonMixin): - confidence: float | None = dc_field( - default=None, metadata=dc_config(field_name="confidence") - ) + confidence: float | None = dc_field(default=None, metadata=dc_config(field_name="confidence")) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - call_custom_property_params: "CallCustomPropertyParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="call_custom_property_params") - ) - call_type_rule_params: "CallTypeRuleParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="call_type_rule_params") - ) - call_violation_count_params: "CallViolationCountParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="call_violation_count_params") - ) - channel_message_count_rule_params: "ChannelMessageCountRuleParameters | None" = ( - dc_field( - default=None, - metadata=dc_config(field_name="channel_message_count_rule_params"), - ) - ) - closed_caption_rule_params: "ClosedCaptionRuleParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="closed_caption_rule_params") - ) - content_count_rule_params: "ContentCountRuleParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="content_count_rule_params") - ) - content_custom_property_count_params: "ContentCustomPropertyCountParameters | None" = dc_field( - default=None, - metadata=dc_config(field_name="content_custom_property_count_params"), - ) - content_custom_property_params: "ContentCustomPropertyParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="content_custom_property_params") - ) - content_flag_count_rule_params: "FlagCountRuleParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="content_flag_count_rule_params") - ) - flood_identical_params: "FloodIdenticalRuleParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="flood_identical_params") - ) - flood_similar_params: "FloodSimilarRuleParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="flood_similar_params") - ) - image_content_params: "ImageContentParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="image_content_params") - ) - image_rule_params: "ImageRuleParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="image_rule_params") - ) - ip_content_count_rule_params: "IPContentCountRuleParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="ip_content_count_rule_params") - ) - ip_flag_count_rule_params: "IPFlagCountRuleParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="ip_flag_count_rule_params") - ) - keyframe_ocr_rule_params: "KeyframeOCRRuleParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="keyframe_ocr_rule_params") - ) - keyframe_rule_params: "KeyframeRuleParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="keyframe_rule_params") - ) - ocr_content_params: "OCRContentParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="ocr_content_params") - ) - text_content_params: "TextContentParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="text_content_params") - ) - text_rule_params: "TextRuleParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="text_rule_params") - ) - user_created_within_params: "UserCreatedWithinParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="user_created_within_params") - ) - user_custom_property_params: "UserCustomPropertyParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="user_custom_property_params") - ) - user_flag_count_rule_params: "FlagCountRuleParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="user_flag_count_rule_params") - ) - user_identical_content_count_params: "UserIdenticalContentCountParameters | None" = dc_field( - default=None, - metadata=dc_config(field_name="user_identical_content_count_params"), - ) - user_role_params: "UserRoleParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="user_role_params") - ) - user_rule_params: "UserRuleParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="user_rule_params") - ) - video_content_params: "VideoContentParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="video_content_params") - ) - video_rule_params: "VideoRuleParameters | None" = dc_field( - default=None, metadata=dc_config(field_name="video_rule_params") - ) - + call_custom_property_params: 'CallCustomPropertyParameters | None' = dc_field(default=None, metadata=dc_config(field_name="call_custom_property_params")) + call_type_rule_params: 'CallTypeRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="call_type_rule_params")) + call_violation_count_params: 'CallViolationCountParameters | None' = dc_field(default=None, metadata=dc_config(field_name="call_violation_count_params")) + channel_message_count_rule_params: 'ChannelMessageCountRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="channel_message_count_rule_params")) + closed_caption_rule_params: 'ClosedCaptionRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="closed_caption_rule_params")) + content_count_rule_params: 'ContentCountRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="content_count_rule_params")) + content_custom_property_count_params: 'ContentCustomPropertyCountParameters | None' = dc_field(default=None, metadata=dc_config(field_name="content_custom_property_count_params")) + content_custom_property_params: 'ContentCustomPropertyParameters | None' = dc_field(default=None, metadata=dc_config(field_name="content_custom_property_params")) + content_flag_count_rule_params: 'FlagCountRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="content_flag_count_rule_params")) + flood_identical_params: 'FloodIdenticalRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="flood_identical_params")) + flood_similar_params: 'FloodSimilarRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="flood_similar_params")) + image_content_params: 'ImageContentParameters | None' = dc_field(default=None, metadata=dc_config(field_name="image_content_params")) + image_rule_params: 'ImageRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="image_rule_params")) + ip_content_count_rule_params: 'IPContentCountRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="ip_content_count_rule_params")) + ip_flag_count_rule_params: 'IPFlagCountRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="ip_flag_count_rule_params")) + keyframe_ocr_rule_params: 'KeyframeOCRRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="keyframe_ocr_rule_params")) + keyframe_rule_params: 'KeyframeRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="keyframe_rule_params")) + ocr_content_params: 'OCRContentParameters | None' = dc_field(default=None, metadata=dc_config(field_name="ocr_content_params")) + text_content_params: 'TextContentParameters | None' = dc_field(default=None, metadata=dc_config(field_name="text_content_params")) + text_rule_params: 'TextRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="text_rule_params")) + user_created_within_params: 'UserCreatedWithinParameters | None' = dc_field(default=None, metadata=dc_config(field_name="user_created_within_params")) + user_custom_property_params: 'UserCustomPropertyParameters | None' = dc_field(default=None, metadata=dc_config(field_name="user_custom_property_params")) + user_flag_count_rule_params: 'FlagCountRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="user_flag_count_rule_params")) + user_identical_content_count_params: 'UserIdenticalContentCountParameters | None' = dc_field(default=None, metadata=dc_config(field_name="user_identical_content_count_params")) + user_role_params: 'UserRoleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="user_role_params")) + user_rule_params: 'UserRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="user_rule_params")) + video_content_params: 'VideoContentParameters | None' = dc_field(default=None, metadata=dc_config(field_name="video_content_params")) + video_rule_params: 'VideoRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="video_rule_params")) @dataclass class RuleBuilderConditionGroup(DataClassJsonMixin): logic: str | None = dc_field(default=None, metadata=dc_config(field_name="logic")) - conditions: "list[RuleBuilderCondition] | None" = dc_field( - default=None, metadata=dc_config(field_name="conditions") - ) - + conditions: 'list[RuleBuilderCondition] | None' = dc_field(default=None, metadata=dc_config(field_name="conditions")) @dataclass class RuleBuilderConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - rules: "list[RuleBuilderRule] | None" = dc_field( - default=None, metadata=dc_config(field_name="rules") - ) - + rules: 'list[RuleBuilderRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) @dataclass class RuleBuilderRule(DataClassJsonMixin): rule_type: str = dc_field(metadata=dc_config(field_name="rule_type")) - cooldown_period: str | None = dc_field( - default=None, metadata=dc_config(field_name="cooldown_period") - ) + cooldown_period: str | None = dc_field(default=None, metadata=dc_config(field_name="cooldown_period")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) logic: str | None = dc_field(default=None, metadata=dc_config(field_name="logic")) - action_sequences: "list[CallRuleActionSequence] | None" = dc_field( - default=None, metadata=dc_config(field_name="action_sequences") - ) - conditions: "list[RuleBuilderCondition] | None" = dc_field( - default=None, metadata=dc_config(field_name="conditions") - ) - groups: "list[RuleBuilderConditionGroup] | None" = dc_field( - default=None, metadata=dc_config(field_name="groups") - ) - action: "RuleBuilderAction | None" = dc_field( - default=None, metadata=dc_config(field_name="action") - ) - + action_sequences: 'list[CallRuleActionSequence] | None' = dc_field(default=None, metadata=dc_config(field_name="action_sequences")) + conditions: 'list[RuleBuilderCondition] | None' = dc_field(default=None, metadata=dc_config(field_name="conditions")) + groups: 'list[RuleBuilderConditionGroup] | None' = dc_field(default=None, metadata=dc_config(field_name="groups")) + action: 'RuleBuilderAction | None' = dc_field(default=None, metadata=dc_config(field_name="action")) @dataclass class RunStats(DataClassJsonMixin): - channels_deleted: int | None = dc_field( - default=None, metadata=dc_config(field_name="channels_deleted") - ) - messages_deleted: int | None = dc_field( - default=None, metadata=dc_config(field_name="messages_deleted") - ) - + channels_deleted: int | None = dc_field(default=None, metadata=dc_config(field_name="channels_deleted")) + messages_deleted: int | None = dc_field(default=None, metadata=dc_config(field_name="messages_deleted")) @dataclass class S3Request(DataClassJsonMixin): # The AWS region where the bucket is hosted s3_region: str = dc_field(metadata=dc_config(field_name="s3_region")) # The AWS API key. To use Amazon S3 as your storage provider, you have two authentication options: IAM role or API key. If you do not specify the `s3_api_key` parameter, Stream will use IAM role authentication. In that case make sure to have the correct IAM role configured for your application. - s3_api_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="s3_api_key") - ) + s3_api_key: str | None = dc_field(default=None, metadata=dc_config(field_name="s3_api_key")) # The custom endpoint for S3. If you want to use a custom endpoint, you must also provide the `s3_api_key` and `s3_secret` parameters. - s3_custom_endpoint_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="s3_custom_endpoint_url") - ) + s3_custom_endpoint_url: str | None = dc_field(default=None, metadata=dc_config(field_name="s3_custom_endpoint_url")) # The AWS API Secret - s3_secret: str | None = dc_field( - default=None, metadata=dc_config(field_name="s3_secret") - ) - + s3_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="s3_secret")) @dataclass class SDKUsageReport(DataClassJsonMixin): - per_sdk_usage: "dict[str, PerSDKUsageReport | None]" = dc_field( - metadata=dc_config(field_name="per_sdk_usage") - ) - + per_sdk_usage: 'dict[str, PerSDKUsageReport | None]' = dc_field(metadata=dc_config(field_name="per_sdk_usage")) @dataclass class SDKUsageReportResponse(DataClassJsonMixin): - daily: "list[DailyAggregateSDKUsageReportResponse]" = dc_field( - metadata=dc_config(field_name="daily") - ) - + daily: 'list[DailyAggregateSDKUsageReportResponse]' = dc_field(metadata=dc_config(field_name="daily")) @dataclass class SFULocationResponse(DataClassJsonMixin): datacenter: str = dc_field(metadata=dc_config(field_name="datacenter")) id: str = dc_field(metadata=dc_config(field_name="id")) # Geographic coordinates - coordinates: "CoordinatesResponse" = dc_field( - metadata=dc_config(field_name="coordinates") - ) + coordinates: 'CoordinatesResponse' = dc_field(metadata=dc_config(field_name="coordinates")) # Geographic location metadata - location: "LocationResponse" = dc_field(metadata=dc_config(field_name="location")) + location: 'LocationResponse' = dc_field(metadata=dc_config(field_name="location")) count: int | None = dc_field(default=None, metadata=dc_config(field_name="count")) - @dataclass class SIPCallConfigsRequest(DataClassJsonMixin): # Custom data associated with the call - custom_data: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom_data") - ) - + custom_data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom_data")) @dataclass class SIPCallConfigsResponse(DataClassJsonMixin): # Custom data associated with the call - custom_data: dict[str, object] = dc_field( - metadata=dc_config(field_name="custom_data") - ) - + custom_data: dict[str, object] = dc_field(metadata=dc_config(field_name="custom_data")) @dataclass class SIPCallerConfigsRequest(DataClassJsonMixin): # Unique identifier for the caller (handlebars template) id: str = dc_field(metadata=dc_config(field_name="id")) # Custom data associated with the caller (values are handlebars templates) - custom_data: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom_data") - ) - + custom_data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom_data")) @dataclass class SIPCallerConfigsResponse(DataClassJsonMixin): # Unique identifier for the caller id: str = dc_field(metadata=dc_config(field_name="id")) # Custom data associated with the caller - custom_data: dict[str, object] = dc_field( - metadata=dc_config(field_name="custom_data") - ) - + custom_data: dict[str, object] = dc_field(metadata=dc_config(field_name="custom_data")) @dataclass class SIPChallengeRequest(DataClassJsonMixin): # Deprecated: A1 hash for backward compatibility a1: str | None = dc_field(default=None, metadata=dc_config(field_name="a1")) # Hash algorithm (e.g., MD5, SHA-256) - algorithm: str | None = dc_field( - default=None, metadata=dc_config(field_name="algorithm") - ) + algorithm: str | None = dc_field(default=None, metadata=dc_config(field_name="algorithm")) # Character set - charset: str | None = dc_field( - default=None, metadata=dc_config(field_name="charset") - ) + charset: str | None = dc_field(default=None, metadata=dc_config(field_name="charset")) # Client nonce for qop=auth cnonce: str | None = dc_field(default=None, metadata=dc_config(field_name="cnonce")) # SIP method (e.g., INVITE) @@ -24726,29 +12561,20 @@ class SIPChallengeRequest(DataClassJsonMixin): # Authentication realm realm: str | None = dc_field(default=None, metadata=dc_config(field_name="realm")) # Digest response hash from client - response: str | None = dc_field( - default=None, metadata=dc_config(field_name="response") - ) + response: str | None = dc_field(default=None, metadata=dc_config(field_name="response")) # Whether the nonce is stale stale: bool | None = dc_field(default=None, metadata=dc_config(field_name="stale")) # Request URI uri: str | None = dc_field(default=None, metadata=dc_config(field_name="uri")) # Whether to hash the username - userhash: bool | None = dc_field( - default=None, metadata=dc_config(field_name="userhash") - ) + userhash: bool | None = dc_field(default=None, metadata=dc_config(field_name="userhash")) # Username for authentication - username: str | None = dc_field( - default=None, metadata=dc_config(field_name="username") - ) + username: str | None = dc_field(default=None, metadata=dc_config(field_name="username")) # Domain list - domain: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="domain") - ) + domain: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="domain")) # Quality of protection options qop: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="qop")) - @dataclass class SIPDirectRoutingRuleCallConfigsRequest(DataClassJsonMixin): # ID of the call (handlebars template) @@ -24756,7 +12582,6 @@ class SIPDirectRoutingRuleCallConfigsRequest(DataClassJsonMixin): # Type of the call call_type: str = dc_field(metadata=dc_config(field_name="call_type")) - @dataclass class SIPDirectRoutingRuleCallConfigsResponse(DataClassJsonMixin): # ID of the call @@ -24764,54 +12589,31 @@ class SIPDirectRoutingRuleCallConfigsResponse(DataClassJsonMixin): # Type of the call call_type: str = dc_field(metadata=dc_config(field_name="call_type")) - @dataclass class SIPInboundRoutingRulePinConfigsRequest(DataClassJsonMixin): # Optional webhook URL for custom PIN handling - custom_webhook_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="custom_webhook_url") - ) + custom_webhook_url: str | None = dc_field(default=None, metadata=dc_config(field_name="custom_webhook_url")) # Prompt message for failed PIN attempts - pin_failed_attempt_prompt: str | None = dc_field( - default=None, metadata=dc_config(field_name="pin_failed_attempt_prompt") - ) + pin_failed_attempt_prompt: str | None = dc_field(default=None, metadata=dc_config(field_name="pin_failed_attempt_prompt")) # Prompt message for hangup after PIN input - pin_hangup_prompt: str | None = dc_field( - default=None, metadata=dc_config(field_name="pin_hangup_prompt") - ) + pin_hangup_prompt: str | None = dc_field(default=None, metadata=dc_config(field_name="pin_hangup_prompt")) # Prompt message for PIN input - pin_prompt: str | None = dc_field( - default=None, metadata=dc_config(field_name="pin_prompt") - ) + pin_prompt: str | None = dc_field(default=None, metadata=dc_config(field_name="pin_prompt")) # Prompt message for successful PIN input - pin_success_prompt: str | None = dc_field( - default=None, metadata=dc_config(field_name="pin_success_prompt") - ) - + pin_success_prompt: str | None = dc_field(default=None, metadata=dc_config(field_name="pin_success_prompt")) @dataclass class SIPInboundRoutingRulePinConfigsResponse(DataClassJsonMixin): # Optional webhook URL for custom PIN handling - custom_webhook_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="custom_webhook_url") - ) + custom_webhook_url: str | None = dc_field(default=None, metadata=dc_config(field_name="custom_webhook_url")) # Prompt message for failed PIN attempts - pin_failed_attempt_prompt: str | None = dc_field( - default=None, metadata=dc_config(field_name="pin_failed_attempt_prompt") - ) + pin_failed_attempt_prompt: str | None = dc_field(default=None, metadata=dc_config(field_name="pin_failed_attempt_prompt")) # Prompt message for hangup after PIN input - pin_hangup_prompt: str | None = dc_field( - default=None, metadata=dc_config(field_name="pin_hangup_prompt") - ) + pin_hangup_prompt: str | None = dc_field(default=None, metadata=dc_config(field_name="pin_hangup_prompt")) # Prompt message for PIN input - pin_prompt: str | None = dc_field( - default=None, metadata=dc_config(field_name="pin_prompt") - ) + pin_prompt: str | None = dc_field(default=None, metadata=dc_config(field_name="pin_prompt")) # Prompt message for successful PIN input - pin_success_prompt: str | None = dc_field( - default=None, metadata=dc_config(field_name="pin_success_prompt") - ) - + pin_success_prompt: str | None = dc_field(default=None, metadata=dc_config(field_name="pin_success_prompt")) @dataclass class SIPInboundRoutingRuleRequest(DataClassJsonMixin): @@ -24820,141 +12622,74 @@ class SIPInboundRoutingRuleRequest(DataClassJsonMixin): # List of SIP trunk IDs trunk_ids: list[str] = dc_field(metadata=dc_config(field_name="trunk_ids")) # Configuration for SIP caller settings - caller_configs: "SIPCallerConfigsRequest" = dc_field( - metadata=dc_config(field_name="caller_configs") - ) + caller_configs: 'SIPCallerConfigsRequest' = dc_field(metadata=dc_config(field_name="caller_configs")) # List of called numbers - called_numbers: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="called_numbers") - ) + called_numbers: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="called_numbers")) # List of caller numbers (optional) - caller_numbers: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="caller_numbers") - ) + caller_numbers: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="caller_numbers")) # Configuration for SIP call settings - call_configs: "SIPCallConfigsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="call_configs") - ) + call_configs: 'SIPCallConfigsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="call_configs")) # Configuration for direct routing rule calls - direct_routing_configs: "SIPDirectRoutingRuleCallConfigsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="direct_routing_configs") - ) + direct_routing_configs: 'SIPDirectRoutingRuleCallConfigsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="direct_routing_configs")) # Configuration for PIN protection settings - pin_protection_configs: "SIPPinProtectionConfigsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="pin_protection_configs") - ) + pin_protection_configs: 'SIPPinProtectionConfigsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="pin_protection_configs")) # Configuration for PIN routing rule calls - pin_routing_configs: "SIPInboundRoutingRulePinConfigsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="pin_routing_configs") - ) - + pin_routing_configs: 'SIPInboundRoutingRulePinConfigsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="pin_routing_configs")) @dataclass class SIPInboundRoutingRuleResponse(DataClassJsonMixin): # Creation timestamp - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) duration: str = dc_field(metadata=dc_config(field_name="duration")) # Unique identifier of the SIP Inbound Routing Rule id: str = dc_field(metadata=dc_config(field_name="id")) # Name of the SIP Inbound Routing Rule name: str = dc_field(metadata=dc_config(field_name="name")) # Last update timestamp - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # List of called numbers - called_numbers: list[str] = dc_field( - metadata=dc_config(field_name="called_numbers") - ) + called_numbers: list[str] = dc_field(metadata=dc_config(field_name="called_numbers")) # List of SIP trunk IDs trunk_ids: list[str] = dc_field(metadata=dc_config(field_name="trunk_ids")) # List of caller numbers - caller_numbers: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="caller_numbers") - ) + caller_numbers: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="caller_numbers")) # SIP call configuration response - call_configs: "SIPCallConfigsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="call_configs") - ) + call_configs: 'SIPCallConfigsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="call_configs")) # SIP caller configuration response - caller_configs: "SIPCallerConfigsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="caller_configs") - ) + caller_configs: 'SIPCallerConfigsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="caller_configs")) # Direct routing rule call configuration response - direct_routing_configs: "SIPDirectRoutingRuleCallConfigsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="direct_routing_configs") - ) + direct_routing_configs: 'SIPDirectRoutingRuleCallConfigsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="direct_routing_configs")) # PIN protection configuration response - pin_protection_configs: "SIPPinProtectionConfigsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="pin_protection_configs") - ) + pin_protection_configs: 'SIPPinProtectionConfigsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="pin_protection_configs")) # PIN routing rule call configuration response - pin_routing_configs: "SIPInboundRoutingRulePinConfigsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="pin_routing_configs") - ) - + pin_routing_configs: 'SIPInboundRoutingRulePinConfigsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="pin_routing_configs")) @dataclass class SIPPinProtectionConfigsRequest(DataClassJsonMixin): # Default PIN to use if there is no PIN set on the call object - default_pin: str | None = dc_field( - default=None, metadata=dc_config(field_name="default_pin") - ) + default_pin: str | None = dc_field(default=None, metadata=dc_config(field_name="default_pin")) # Whether PIN protection is enabled - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) # Maximum number of PIN attempts allowed - max_attempts: int | None = dc_field( - default=None, metadata=dc_config(field_name="max_attempts") - ) + max_attempts: int | None = dc_field(default=None, metadata=dc_config(field_name="max_attempts")) # Number of digits required for the PIN - required_pin_digits: int | None = dc_field( - default=None, metadata=dc_config(field_name="required_pin_digits") - ) - + required_pin_digits: int | None = dc_field(default=None, metadata=dc_config(field_name="required_pin_digits")) @dataclass class SIPPinProtectionConfigsResponse(DataClassJsonMixin): # Whether PIN protection is enabled enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) # Default PIN to use if there is no PIN set on the call object - default_pin: str | None = dc_field( - default=None, metadata=dc_config(field_name="default_pin") - ) + default_pin: str | None = dc_field(default=None, metadata=dc_config(field_name="default_pin")) # Maximum number of PIN attempts allowed - max_attempts: int | None = dc_field( - default=None, metadata=dc_config(field_name="max_attempts") - ) + max_attempts: int | None = dc_field(default=None, metadata=dc_config(field_name="max_attempts")) # Number of digits required for the PIN - required_pin_digits: int | None = dc_field( - default=None, metadata=dc_config(field_name="required_pin_digits") - ) - + required_pin_digits: int | None = dc_field(default=None, metadata=dc_config(field_name="required_pin_digits")) @dataclass class SIPTrunkResponse(DataClassJsonMixin): # Creation timestamp - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Unique identifier for the SIP trunk id: str = dc_field(metadata=dc_config(field_name="id")) # Name of the SIP trunk @@ -24962,14 +12697,7 @@ class SIPTrunkResponse(DataClassJsonMixin): # Password for SIP trunk authentication password: str = dc_field(metadata=dc_config(field_name="password")) # Last update timestamp - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The URI for the SIP trunk uri: str = dc_field(metadata=dc_config(field_name="uri")) # Username for SIP trunk authentication @@ -24979,66 +12707,40 @@ class SIPTrunkResponse(DataClassJsonMixin): # Phone numbers associated with this SIP trunk numbers: list[str] = dc_field(metadata=dc_config(field_name="numbers")) - @dataclass class SRTIngress(DataClassJsonMixin): address: str = dc_field(metadata=dc_config(field_name="address")) - @dataclass class ScoreBands(DataClassJsonMixin): good: float | None = dc_field(default=None, metadata=dc_config(field_name="good")) ok: float | None = dc_field(default=None, metadata=dc_config(field_name="ok")) poor: float | None = dc_field(default=None, metadata=dc_config(field_name="poor")) - @dataclass class ScreensharingSettings(DataClassJsonMixin): - access_request_enabled: bool = dc_field( - metadata=dc_config(field_name="access_request_enabled") - ) + access_request_enabled: bool = dc_field(metadata=dc_config(field_name="access_request_enabled")) enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - target_resolution: "TargetResolution | None" = dc_field( - default=None, metadata=dc_config(field_name="target_resolution") - ) - + target_resolution: 'TargetResolution | None' = dc_field(default=None, metadata=dc_config(field_name="target_resolution")) @dataclass class ScreensharingSettingsRequest(DataClassJsonMixin): - access_request_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="access_request_enabled") - ) - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - target_resolution: "TargetResolution | None" = dc_field( - default=None, metadata=dc_config(field_name="target_resolution") - ) - + access_request_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="access_request_enabled")) + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + target_resolution: 'TargetResolution | None' = dc_field(default=None, metadata=dc_config(field_name="target_resolution")) @dataclass class ScreensharingSettingsResponse(DataClassJsonMixin): - access_request_enabled: bool = dc_field( - metadata=dc_config(field_name="access_request_enabled") - ) + access_request_enabled: bool = dc_field(metadata=dc_config(field_name="access_request_enabled")) enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - target_resolution: "TargetResolution | None" = dc_field( - default=None, metadata=dc_config(field_name="target_resolution") - ) - + target_resolution: 'TargetResolution | None' = dc_field(default=None, metadata=dc_config(field_name="target_resolution")) @dataclass class SearchPayload(DataClassJsonMixin): # Channel filter conditions - filter_conditions: dict[str, object] = dc_field( - metadata=dc_config(field_name="filter_conditions") - ) - force_default_search: bool | None = dc_field( - default=None, metadata=dc_config(field_name="force_default_search") - ) - force_sql_v2_backend: bool | None = dc_field( - default=None, metadata=dc_config(field_name="force_sql_v2_backend") - ) + filter_conditions: dict[str, object] = dc_field(metadata=dc_config(field_name="filter_conditions")) + force_default_search: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_default_search")) + force_sql_v2_backend: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_sql_v2_backend")) # Number of messages to return limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) # Pagination parameter. Cannot be used with non-zero offset. @@ -25048,61 +12750,35 @@ class SearchPayload(DataClassJsonMixin): # Search phrase query: str | None = dc_field(default=None, metadata=dc_config(field_name="query")) # Sort parameters. Cannot be used with non-zero offset - sort: "list[SortParamRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) + sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) # Message filter conditions - message_filter_conditions: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="message_filter_conditions") - ) - message_options: "MessageOptions | None" = dc_field( - default=None, metadata=dc_config(field_name="message_options") - ) - + message_filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="message_filter_conditions")) + message_options: 'MessageOptions | None' = dc_field(default=None, metadata=dc_config(field_name="message_options")) @dataclass class SearchResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Search results - results: "list[SearchResult]" = dc_field(metadata=dc_config(field_name="results")) + results: 'list[SearchResult]' = dc_field(metadata=dc_config(field_name="results")) # Value to pass to the next search query in order to paginate next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Value that points to the previous page. Pass as the next value in a search query to paginate backwards - previous: str | None = dc_field( - default=None, metadata=dc_config(field_name="previous") - ) - results_warning: "SearchWarning | None" = dc_field( - default=None, metadata=dc_config(field_name="results_warning") - ) - + previous: str | None = dc_field(default=None, metadata=dc_config(field_name="previous")) + results_warning: 'SearchWarning | None' = dc_field(default=None, metadata=dc_config(field_name="results_warning")) @dataclass class SearchResult(DataClassJsonMixin): - message: "SearchResultMessage | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - + message: 'SearchResultMessage | None' = dc_field(default=None, metadata=dc_config(field_name="message")) @dataclass class SearchResultMessage(DataClassJsonMixin): cid: str = dc_field(metadata=dc_config(field_name="cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - deleted_reply_count: int = dc_field( - metadata=dc_config(field_name="deleted_reply_count") - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_reply_count: int = dc_field(metadata=dc_config(field_name="deleted_reply_count")) html: str = dc_field(metadata=dc_config(field_name="html")) id: str = dc_field(metadata=dc_config(field_name="id")) - mentioned_channel: bool = dc_field( - metadata=dc_config(field_name="mentioned_channel") - ) + mentioned_channel: bool = dc_field(metadata=dc_config(field_name="mentioned_channel")) mentioned_here: bool = dc_field(metadata=dc_config(field_name="mentioned_here")) pinned: bool = dc_field(metadata=dc_config(field_name="pinned")) reply_count: int = dc_field(metadata=dc_config(field_name="reply_count")) @@ -25110,603 +12786,274 @@ class SearchResultMessage(DataClassJsonMixin): silent: bool = dc_field(metadata=dc_config(field_name="silent")) text: str = dc_field(metadata=dc_config(field_name="text")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - attachments: "list[Attachment]" = dc_field( - metadata=dc_config(field_name="attachments") - ) - latest_reactions: "list[ReactionResponse]" = dc_field( - metadata=dc_config(field_name="latest_reactions") - ) - mentioned_users: "list[UserResponse]" = dc_field( - metadata=dc_config(field_name="mentioned_users") - ) - own_reactions: "list[ReactionResponse]" = dc_field( - metadata=dc_config(field_name="own_reactions") - ) - restricted_visibility: list[str] = dc_field( - metadata=dc_config(field_name="restricted_visibility") - ) - custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction_counts: "dict[str, int]" = dc_field( - metadata=dc_config(field_name="reaction_counts") - ) - reaction_scores: "dict[str, int]" = dc_field( - metadata=dc_config(field_name="reaction_scores") - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + attachments: 'list[Attachment]' = dc_field(metadata=dc_config(field_name="attachments")) + latest_reactions: 'list[ReactionResponse]' = dc_field(metadata=dc_config(field_name="latest_reactions")) + mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) + own_reactions: 'list[ReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) + restricted_visibility: list[str] = dc_field(metadata=dc_config(field_name="restricted_visibility")) + custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + reaction_counts: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="reaction_counts")) + reaction_scores: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="reaction_scores")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - command: str | None = dc_field( - default=None, metadata=dc_config(field_name="command") - ) - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - deleted_for_me: bool | None = dc_field( - default=None, metadata=dc_config(field_name="deleted_for_me") - ) - message_text_updated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="message_text_updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + command: str | None = dc_field(default=None, metadata=dc_config(field_name="command")) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_for_me: bool | None = dc_field(default=None, metadata=dc_config(field_name="deleted_for_me")) + message_text_updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="message_text_updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) mml: str | None = dc_field(default=None, metadata=dc_config(field_name="mml")) - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) - pin_expires: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="pin_expires", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - pinned_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="pinned_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - poll_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="poll_id") - ) - quoted_message_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="quoted_message_id") - ) - show_in_channel: bool | None = dc_field( - default=None, metadata=dc_config(field_name="show_in_channel") - ) - mentioned_group_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_group_ids") - ) - mentioned_groups: "list[UserGroupResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="mentioned_groups") - ) - mentioned_roles: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_roles") - ) - thread_participants: "list[UserResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="thread_participants") - ) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + pin_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pin_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + pinned_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pinned_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) + quoted_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="quoted_message_id")) + show_in_channel: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_in_channel")) + mentioned_group_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_group_ids")) + mentioned_groups: 'list[UserGroupResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_groups")) + mentioned_roles: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_roles")) + thread_participants: 'list[UserResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) - draft: "DraftResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="draft") - ) - i18n: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="i18n") - ) - image_labels: "dict[str, list[str]] | None" = dc_field( - default=None, metadata=dc_config(field_name="image_labels") - ) - member: "ChannelMemberPartialResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="member") - ) - moderation: "ModerationV2Response | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation") - ) + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + draft: 'DraftResponse | None' = dc_field(default=None, metadata=dc_config(field_name="draft")) + i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) + image_labels: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="image_labels")) + member: 'ChannelMemberPartialResponse | None' = dc_field(default=None, metadata=dc_config(field_name="member")) + mentioned_channel_members: 'dict[str, ChannelMemberPartialResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_channel_members")) + moderation: 'ModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) # User response object - pinned_by: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="pinned_by") - ) - poll: "PollResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="poll") - ) + pinned_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="pinned_by")) + poll: 'PollResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll")) # Represents any chat message - quoted_message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="quoted_message") - ) - reaction_groups: "dict[str, ReactionGroupResponse | None] | None" = dc_field( - default=None, metadata=dc_config(field_name="reaction_groups") - ) - reminder: "ReminderResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="reminder") - ) - shared_location: "SharedLocationResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="shared_location") - ) - + quoted_message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="quoted_message")) + reaction_groups: 'dict[str, ReactionGroupResponse | None] | None' = dc_field(default=None, metadata=dc_config(field_name="reaction_groups")) + reminder: 'ReminderResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="reminder")) + shared_location: 'SharedLocationResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="shared_location")) @dataclass class SearchRolesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Matching roles, sorted ascending by name - roles: "list[Role]" = dc_field(metadata=dc_config(field_name="roles")) - + roles: 'list[Role]' = dc_field(metadata=dc_config(field_name="roles")) @dataclass class SearchUserGroupsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of matching user groups - user_groups: "list[UserGroupResponse]" = dc_field( - metadata=dc_config(field_name="user_groups") - ) - + user_groups: 'list[UserGroupResponse]' = dc_field(metadata=dc_config(field_name="user_groups")) @dataclass class SearchWarning(DataClassJsonMixin): # Code corresponding to the warning warning_code: int = dc_field(metadata=dc_config(field_name="warning_code")) # Description of the warning - warning_description: str = dc_field( - metadata=dc_config(field_name="warning_description") - ) + warning_description: str = dc_field(metadata=dc_config(field_name="warning_description")) # Number of channels searched - channel_search_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_search_count") - ) + channel_search_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_search_count")) # Channel CIDs for the searched channels - channel_search_cids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_search_cids") - ) - + channel_search_cids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="channel_search_cids")) @dataclass class Segment(DataClassJsonMixin): - all_sender_channels: bool = dc_field( - metadata=dc_config(field_name="all_sender_channels") - ) + all_sender_channels: bool = dc_field(metadata=dc_config(field_name="all_sender_channels")) all_users: bool = dc_field(metadata=dc_config(field_name="all_users")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) id: str = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) size: int = dc_field(metadata=dc_config(field_name="size")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) - task_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="task_id") - ) - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) - + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + task_id: str | None = dc_field(default=None, metadata=dc_config(field_name="task_id")) + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) @dataclass class SegmentResponse(DataClassJsonMixin): - all_sender_channels: bool = dc_field( - metadata=dc_config(field_name="all_sender_channels") - ) + all_sender_channels: bool = dc_field(metadata=dc_config(field_name="all_sender_channels")) all_users: bool = dc_field(metadata=dc_config(field_name="all_users")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - deleted_at: datetime = dc_field( - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime = dc_field(metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) description: str = dc_field(metadata=dc_config(field_name="description")) id: str = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) size: int = dc_field(metadata=dc_config(field_name="size")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) filter: dict[str, object] = dc_field(metadata=dc_config(field_name="filter")) - @dataclass class SegmentTargetResponse(DataClassJsonMixin): app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) segment_id: str = dc_field(metadata=dc_config(field_name="segment_id")) target_id: str = dc_field(metadata=dc_config(field_name="target_id")) - @dataclass class Segments(DataClassJsonMixin): - by_country_reason: str = dc_field( - metadata=dc_config(field_name="by_country_reason") - ) - by_browser: "list[BroadcastSegment]" = dc_field( - metadata=dc_config(field_name="by_browser") - ) - by_country: "list[BroadcastSegment]" = dc_field( - metadata=dc_config(field_name="by_country") - ) - by_delivery_zone: "list[DeliveryZoneSegment]" = dc_field( - metadata=dc_config(field_name="by_delivery_zone") - ) - by_os: "list[BroadcastSegment]" = dc_field(metadata=dc_config(field_name="by_os")) - by_sdk: "list[BroadcastSegment]" = dc_field(metadata=dc_config(field_name="by_sdk")) - + by_country_reason: str = dc_field(metadata=dc_config(field_name="by_country_reason")) + by_browser: 'list[BroadcastSegment]' = dc_field(metadata=dc_config(field_name="by_browser")) + by_country: 'list[BroadcastSegment]' = dc_field(metadata=dc_config(field_name="by_country")) + by_delivery_zone: 'list[DeliveryZoneSegment]' = dc_field(metadata=dc_config(field_name="by_delivery_zone")) + by_os: 'list[BroadcastSegment]' = dc_field(metadata=dc_config(field_name="by_os")) + by_sdk: 'list[BroadcastSegment]' = dc_field(metadata=dc_config(field_name="by_sdk")) @dataclass class SendCallEventRequest(DataClassJsonMixin): - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class SendCallEventResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class SendClosedCaptionRequest(DataClassJsonMixin): speaker_id: str = dc_field(metadata=dc_config(field_name="speaker_id")) text: str = dc_field(metadata=dc_config(field_name="text")) - end_time: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="end_time", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - language: str | None = dc_field( - default=None, metadata=dc_config(field_name="language") - ) - service: str | None = dc_field( - default=None, metadata=dc_config(field_name="service") - ) - start_time: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="start_time", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - translated: bool | None = dc_field( - default=None, metadata=dc_config(field_name="translated") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + end_time: datetime | None = dc_field(default=None, metadata=dc_config(field_name="end_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + language: str | None = dc_field(default=None, metadata=dc_config(field_name="language")) + service: str | None = dc_field(default=None, metadata=dc_config(field_name="service")) + start_time: datetime | None = dc_field(default=None, metadata=dc_config(field_name="start_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + translated: bool | None = dc_field(default=None, metadata=dc_config(field_name="translated")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class SendClosedCaptionResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class SendEventRequest(DataClassJsonMixin): - event: "EventRequest" = dc_field(metadata=dc_config(field_name="event")) - + event: 'EventRequest' = dc_field(metadata=dc_config(field_name="event")) @dataclass class SendMessageRequest(DataClassJsonMixin): # Message data for creating or updating a message - message: "MessageRequest" = dc_field(metadata=dc_config(field_name="message")) - force_moderation: bool | None = dc_field( - default=None, metadata=dc_config(field_name="force_moderation") - ) + message: 'MessageRequest' = dc_field(metadata=dc_config(field_name="message")) + force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) # When true, the response includes channel_context: a slim channel object with cid, type, id and created_by - include_channel_context: bool | None = dc_field( - default=None, metadata=dc_config(field_name="include_channel_context") - ) + include_channel_context: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_channel_context")) # When true, the response includes mentioned_members: for each mentioned user, whether that user is currently a channel member. Requires the ReadChannelMembers permission - include_mentioned_members: bool | None = dc_field( - default=None, metadata=dc_config(field_name="include_mentioned_members") - ) - keep_channel_hidden: bool | None = dc_field( - default=None, metadata=dc_config(field_name="keep_channel_hidden") - ) - pending: bool | None = dc_field( - default=None, metadata=dc_config(field_name="pending") - ) - skip_enrich_url: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_enrich_url") - ) - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) - pending_message_metadata: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="pending_message_metadata") - ) - + include_mentioned_members: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_mentioned_members")) + keep_channel_hidden: bool | None = dc_field(default=None, metadata=dc_config(field_name="keep_channel_hidden")) + pending: bool | None = dc_field(default=None, metadata=dc_config(field_name="pending")) + skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + pending_message_metadata: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="pending_message_metadata")) @dataclass class SendMessageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) + message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) # Slim channel object: identity plus creator - channel_context: "ChannelContextResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel_context") - ) + channel_context: 'ChannelContextResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel_context")) # Map of mentioned user ID to whether that user is currently an active channel member. Only set when include_mentioned_members was requested; omitted when the message has no mentions or the membership lookup failed - mentioned_members: "dict[str, bool] | None" = dc_field( - default=None, metadata=dc_config(field_name="mentioned_members") - ) + mentioned_members: 'dict[str, bool] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_members")) # Pending message metadata - pending_message_metadata: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="pending_message_metadata") - ) - + pending_message_metadata: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="pending_message_metadata")) @dataclass class SendReactionRequest(DataClassJsonMixin): # Represents user reaction to a message - reaction: "ReactionRequest" = dc_field(metadata=dc_config(field_name="reaction")) + reaction: 'ReactionRequest' = dc_field(metadata=dc_config(field_name="reaction")) # Whether to replace all existing user reactions - enforce_unique: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enforce_unique") - ) + enforce_unique: bool | None = dc_field(default=None, metadata=dc_config(field_name="enforce_unique")) # Skips any mobile push notifications - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) - + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) @dataclass class SendReactionResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) - reaction: "ReactionResponse" = dc_field(metadata=dc_config(field_name="reaction")) - + message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) + reaction: 'ReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) @dataclass class SendUserCustomEventRequest(DataClassJsonMixin): - event: "UserCustomEventRequest" = dc_field(metadata=dc_config(field_name="event")) - + event: 'UserCustomEventRequest' = dc_field(metadata=dc_config(field_name="event")) @dataclass class SessionClient(DataClassJsonMixin): ip: str | None = dc_field(default=None, metadata=dc_config(field_name="ip")) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - network_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="network_type") - ) - version: str | None = dc_field( - default=None, metadata=dc_config(field_name="version") - ) - location: "CallStatsLocation | None" = dc_field( - default=None, metadata=dc_config(field_name="location") - ) - + network_type: str | None = dc_field(default=None, metadata=dc_config(field_name="network_type")) + version: str | None = dc_field(default=None, metadata=dc_config(field_name="version")) + location: 'CallStatsLocation | None' = dc_field(default=None, metadata=dc_config(field_name="location")) @dataclass class SessionSettings(DataClassJsonMixin): - inactivity_timeout_seconds: int = dc_field( - metadata=dc_config(field_name="inactivity_timeout_seconds") - ) - + inactivity_timeout_seconds: int = dc_field(metadata=dc_config(field_name="inactivity_timeout_seconds")) @dataclass class SessionSettingsRequest(DataClassJsonMixin): - inactivity_timeout_seconds: int = dc_field( - metadata=dc_config(field_name="inactivity_timeout_seconds") - ) - + inactivity_timeout_seconds: int = dc_field(metadata=dc_config(field_name="inactivity_timeout_seconds")) @dataclass class SessionSettingsResponse(DataClassJsonMixin): - inactivity_timeout_seconds: int = dc_field( - metadata=dc_config(field_name="inactivity_timeout_seconds") - ) - + inactivity_timeout_seconds: int = dc_field(metadata=dc_config(field_name="inactivity_timeout_seconds")) @dataclass class SessionWarningResponse(DataClassJsonMixin): code: str = dc_field(metadata=dc_config(field_name="code")) warning: str = dc_field(metadata=dc_config(field_name="warning")) - time: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="time", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + time: datetime | None = dc_field(default=None, metadata=dc_config(field_name="time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class SetRetentionPolicyRequest(DataClassJsonMixin): max_age_hours: int = dc_field(metadata=dc_config(field_name="max_age_hours")) policy: str = dc_field(metadata=dc_config(field_name="policy")) - @dataclass class SetRetentionPolicyResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - policy: "RetentionPolicy" = dc_field(metadata=dc_config(field_name="policy")) - + policy: 'RetentionPolicy' = dc_field(metadata=dc_config(field_name="policy")) @dataclass class SetupSession(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) current_step: str = dc_field(metadata=dc_config(field_name="current_step")) status: str = dc_field(metadata=dc_config(field_name="status")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - setup_data: dict[str, object] = dc_field( - metadata=dc_config(field_name="setup_data") - ) - completed_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="completed_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + setup_data: dict[str, object] = dc_field(metadata=dc_config(field_name="setup_data")) + completed_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="completed_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class ShadowBlockActionRequestPayload(DataClassJsonMixin): # Reason for shadow blocking reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - @dataclass class ShareResponse(DataClassJsonMixin): # ID of the sharing (child) activity activity_id: str = dc_field(metadata=dc_config(field_name="activity_id")) # When the share occurred - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) @dataclass class SharedLocation(DataClassJsonMixin): latitude: float = dc_field(metadata=dc_config(field_name="latitude")) longitude: float = dc_field(metadata=dc_config(field_name="longitude")) - created_by_device_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="created_by_device_id") - ) - end_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="end_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + created_by_device_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_device_id")) + end_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="end_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class SharedLocationResponse(DataClassJsonMixin): # Channel CID channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Device ID that created the live location - created_by_device_id: str = dc_field( - metadata=dc_config(field_name="created_by_device_id") - ) + created_by_device_id: str = dc_field(metadata=dc_config(field_name="created_by_device_id")) duration: str = dc_field(metadata=dc_config(field_name="duration")) # Latitude coordinate latitude: float = dc_field(metadata=dc_config(field_name="latitude")) @@ -25715,115 +13062,54 @@ class SharedLocationResponse(DataClassJsonMixin): # Message ID message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # Date/time of the last update - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # User ID user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # Time when the live location expires - end_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="end_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + end_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="end_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) @dataclass class SharedLocationResponseData(DataClassJsonMixin): channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - created_by_device_id: str = dc_field( - metadata=dc_config(field_name="created_by_device_id") - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_by_device_id: str = dc_field(metadata=dc_config(field_name="created_by_device_id")) latitude: float = dc_field(metadata=dc_config(field_name="latitude")) longitude: float = dc_field(metadata=dc_config(field_name="longitude")) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - end_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="end_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + end_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="end_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) @dataclass class SharedLocationsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - active_live_locations: "list[SharedLocationResponseData]" = dc_field( - metadata=dc_config(field_name="active_live_locations") - ) - + active_live_locations: 'list[SharedLocationResponseData]' = dc_field(metadata=dc_config(field_name="active_live_locations")) @dataclass class ShowChannelRequest(DataClassJsonMixin): - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ShowChannelResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class SingleFollowResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) + follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) # Whether a notification activity was successfully created - notification_created: bool | None = dc_field( - default=None, metadata=dc_config(field_name="notification_created") - ) - + notification_created: bool | None = dc_field(default=None, metadata=dc_config(field_name="notification_created")) @dataclass class SipInboundCredentials(DataClassJsonMixin): @@ -25838,14 +13124,9 @@ class SipInboundCredentials(DataClassJsonMixin): # User ID for the call user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # Custom data associated with the call - call_custom_data: dict[str, object] = dc_field( - metadata=dc_config(field_name="call_custom_data") - ) + call_custom_data: dict[str, object] = dc_field(metadata=dc_config(field_name="call_custom_data")) # Custom data associated with the user - user_custom_data: dict[str, object] = dc_field( - metadata=dc_config(field_name="user_custom_data") - ) - + user_custom_data: dict[str, object] = dc_field(metadata=dc_config(field_name="user_custom_data")) @dataclass class SortParam(DataClassJsonMixin): @@ -25853,469 +13134,277 @@ class SortParam(DataClassJsonMixin): field: str = dc_field(metadata=dc_config(field_name="field")) type: str = dc_field(metadata=dc_config(field_name="type")) - @dataclass class SortParamRequest(DataClassJsonMixin): # Direction of sorting, 1 for Ascending, -1 for Descending, default is 1. One of: -1, 1 - direction: int | None = dc_field( - default=None, metadata=dc_config(field_name="direction") - ) + direction: int | None = dc_field(default=None, metadata=dc_config(field_name="direction")) # Name of field to sort by field: str | None = dc_field(default=None, metadata=dc_config(field_name="field")) # Type of field to sort by. Empty string or omitted means string type (default). One of: number, boolean type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - @dataclass class SourceHealth(DataClassJsonMixin): co_host_peak: int = dc_field(metadata=dc_config(field_name="co_host_peak")) dead_air_s: int = dc_field(metadata=dc_config(field_name="dead_air_s")) - interruptions: "list[SourceInterruption]" = dc_field( - metadata=dc_config(field_name="interruptions") - ) - publisher_sessions: "list[PublisherSession]" = dc_field( - metadata=dc_config(field_name="publisher_sessions") - ) - + interruptions: 'list[SourceInterruption]' = dc_field(metadata=dc_config(field_name="interruptions")) + publisher_sessions: 'list[PublisherSession]' = dc_field(metadata=dc_config(field_name="publisher_sessions")) @dataclass class SourceInterruption(DataClassJsonMixin): at_offset_min: float = dc_field(metadata=dc_config(field_name="at_offset_min")) dead_air_s: int = dc_field(metadata=dc_config(field_name="dead_air_s")) kind: str = dc_field(metadata=dc_config(field_name="kind")) - seamless: bool | None = dc_field( - default=None, metadata=dc_config(field_name="seamless") - ) - + seamless: bool | None = dc_field(default=None, metadata=dc_config(field_name="seamless")) @dataclass class SpeechSegmentConfig(DataClassJsonMixin): - max_speech_caption_ms: int | None = dc_field( - default=None, metadata=dc_config(field_name="max_speech_caption_ms") - ) - silence_duration_ms: int | None = dc_field( - default=None, metadata=dc_config(field_name="silence_duration_ms") - ) - + max_speech_caption_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="max_speech_caption_ms")) + silence_duration_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="silence_duration_ms")) @dataclass class StartCampaignRequest(DataClassJsonMixin): - scheduled_for: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="scheduled_for", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - stop_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="stop_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + scheduled_for: datetime | None = dc_field(default=None, metadata=dc_config(field_name="scheduled_for", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + stop_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="stop_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class StartCampaignResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - campaign: "CampaignResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="campaign") - ) - users: "PagerResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="users") - ) - + campaign: 'CampaignResponse | None' = dc_field(default=None, metadata=dc_config(field_name="campaign")) + users: 'PagerResponse | None' = dc_field(default=None, metadata=dc_config(field_name="users")) @dataclass class StartClosedCaptionsRequest(DataClassJsonMixin): # Enable transcriptions along with closed captions - enable_transcription: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enable_transcription") - ) + enable_transcription: bool | None = dc_field(default=None, metadata=dc_config(field_name="enable_transcription")) # Which external storage to use for transcriptions (only applicable if enable_transcription is true) - external_storage: str | None = dc_field( - default=None, metadata=dc_config(field_name="external_storage") - ) + external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="external_storage")) # The spoken language in the call, if not provided the language defined in the transcription settings will be used. One of: auto, ar, bg, ca, cs, da, de, el, en, es, et, fi, fr, he, hi, hr, hu, id, it, ja, ko, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, ta, th, tl, tr, uk, zh - language: str | None = dc_field( - default=None, metadata=dc_config(field_name="language") - ) - speech_segment_config: "SpeechSegmentConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="speech_segment_config") - ) - + language: str | None = dc_field(default=None, metadata=dc_config(field_name="language")) + speech_segment_config: 'SpeechSegmentConfig | None' = dc_field(default=None, metadata=dc_config(field_name="speech_segment_config")) @dataclass class StartClosedCaptionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class StartFrameRecordingRequest(DataClassJsonMixin): - recording_external_storage: str | None = dc_field( - default=None, metadata=dc_config(field_name="recording_external_storage") - ) - + recording_external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="recording_external_storage")) @dataclass class StartFrameRecordingResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class StartHLSBroadcastingRequest(DataClassJsonMixin): pass - @dataclass class StartHLSBroadcastingResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # the URL of the HLS playlist playlist_url: str = dc_field(metadata=dc_config(field_name="playlist_url")) - @dataclass class StartPolicyTestRunRequest(DataClassJsonMixin): pass - @dataclass class StartRTMPBroadcastsRequest(DataClassJsonMixin): # List of broadcasts to start - broadcasts: "list[RTMPBroadcastRequest]" = dc_field( - metadata=dc_config(field_name="broadcasts") - ) - + broadcasts: 'list[RTMPBroadcastRequest]' = dc_field(metadata=dc_config(field_name="broadcasts")) @dataclass class StartRTMPBroadcastsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class StartRecordingRequest(DataClassJsonMixin): - recording_external_storage: str | None = dc_field( - default=None, metadata=dc_config(field_name="recording_external_storage") - ) - + recording_external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="recording_external_storage")) @dataclass class StartRecordingResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class StartTranscriptionRequest(DataClassJsonMixin): # Enable closed captions along with transcriptions - enable_closed_captions: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enable_closed_captions") - ) + enable_closed_captions: bool | None = dc_field(default=None, metadata=dc_config(field_name="enable_closed_captions")) # The spoken language in the call, if not provided the language defined in the transcription settings will be used. One of: auto, ar, bg, ca, cs, da, de, el, en, es, et, fi, fr, he, hi, hr, hu, id, it, ja, ko, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, ta, th, tl, tr, uk, zh - language: str | None = dc_field( - default=None, metadata=dc_config(field_name="language") - ) + language: str | None = dc_field(default=None, metadata=dc_config(field_name="language")) # Store transcriptions in this external storage - transcription_external_storage: str | None = dc_field( - default=None, metadata=dc_config(field_name="transcription_external_storage") - ) - + transcription_external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="transcription_external_storage")) @dataclass class StartTranscriptionResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class StopAllRTMPBroadcastsRequest(DataClassJsonMixin): pass - @dataclass class StopAllRTMPBroadcastsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class StopCampaignRequest(DataClassJsonMixin): pass - @dataclass class StopClosedCaptionsRequest(DataClassJsonMixin): - stop_transcription: bool | None = dc_field( - default=None, metadata=dc_config(field_name="stop_transcription") - ) - + stop_transcription: bool | None = dc_field(default=None, metadata=dc_config(field_name="stop_transcription")) @dataclass class StopClosedCaptionsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class StopFrameRecordingRequest(DataClassJsonMixin): pass - @dataclass class StopFrameRecordingResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class StopHLSBroadcastingRequest(DataClassJsonMixin): pass - @dataclass class StopHLSBroadcastingResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class StopLiveRequest(DataClassJsonMixin): - continue_closed_caption: bool | None = dc_field( - default=None, metadata=dc_config(field_name="continue_closed_caption") - ) - continue_composite_recording: bool | None = dc_field( - default=None, metadata=dc_config(field_name="continue_composite_recording") - ) - continue_hls: bool | None = dc_field( - default=None, metadata=dc_config(field_name="continue_hls") - ) - continue_individual_recording: bool | None = dc_field( - default=None, metadata=dc_config(field_name="continue_individual_recording") - ) - continue_raw_recording: bool | None = dc_field( - default=None, metadata=dc_config(field_name="continue_raw_recording") - ) - continue_recording: bool | None = dc_field( - default=None, metadata=dc_config(field_name="continue_recording") - ) - continue_rtmp_broadcasts: bool | None = dc_field( - default=None, metadata=dc_config(field_name="continue_rtmp_broadcasts") - ) - continue_transcription: bool | None = dc_field( - default=None, metadata=dc_config(field_name="continue_transcription") - ) - + continue_closed_caption: bool | None = dc_field(default=None, metadata=dc_config(field_name="continue_closed_caption")) + continue_composite_recording: bool | None = dc_field(default=None, metadata=dc_config(field_name="continue_composite_recording")) + continue_hls: bool | None = dc_field(default=None, metadata=dc_config(field_name="continue_hls")) + continue_individual_recording: bool | None = dc_field(default=None, metadata=dc_config(field_name="continue_individual_recording")) + continue_raw_recording: bool | None = dc_field(default=None, metadata=dc_config(field_name="continue_raw_recording")) + continue_recording: bool | None = dc_field(default=None, metadata=dc_config(field_name="continue_recording")) + continue_rtmp_broadcasts: bool | None = dc_field(default=None, metadata=dc_config(field_name="continue_rtmp_broadcasts")) + continue_transcription: bool | None = dc_field(default=None, metadata=dc_config(field_name="continue_transcription")) @dataclass class StopLiveResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) - + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) @dataclass class StopRTMPBroadcastsRequest(DataClassJsonMixin): pass - @dataclass class StopRTMPBroadcastsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class StopRecordingRequest(DataClassJsonMixin): pass - @dataclass class StopRecordingResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class StopTranscriptionRequest(DataClassJsonMixin): - stop_closed_captions: bool | None = dc_field( - default=None, metadata=dc_config(field_name="stop_closed_captions") - ) - + stop_closed_captions: bool | None = dc_field(default=None, metadata=dc_config(field_name="stop_closed_captions")) @dataclass class StopTranscriptionResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class StoriesConfig(DataClassJsonMixin): # Whether to skip already watched stories - skip_watched: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_watched") - ) + skip_watched: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_watched")) # Whether to track watched status for stories - track_watched: bool | None = dc_field( - default=None, metadata=dc_config(field_name="track_watched") - ) - + track_watched: bool | None = dc_field(default=None, metadata=dc_config(field_name="track_watched")) @dataclass class StoriesFeedUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The ID of the feed fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.stories_feed.updated" in this case - type: str = dc_field( - default="feeds.stories_feed.updated", metadata=dc_config(field_name="type") - ) - feed_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="feed_visibility") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + type: str = dc_field(default="feeds.stories_feed.updated", metadata=dc_config(field_name="type")) + feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Individual activities for stories feeds - activities: "list[ActivityResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="activities") - ) + activities: 'list[ActivityResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="activities")) # Aggregated activities for stories feeds - aggregated_activities: "list[AggregatedActivityResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="aggregated_activities") - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + aggregated_activities: 'list[AggregatedActivityResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="aggregated_activities")) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class SubmitActionRequest(DataClassJsonMixin): # Type of moderation action to perform. One of: mark_reviewed, delete_message, delete_activity, delete_comment, delete_reaction, ban, custom, unban, restore, delete_user, delete_user_messages, unblock, block, shadow_block, unmask, kick_user, end_call, escalate, de_escalate action_type: str = dc_field(metadata=dc_config(field_name="action_type")) # UUID of the appeal to act on (required for reject_appeal, optional for other actions) - appeal_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="appeal_id") - ) + appeal_id: str | None = dc_field(default=None, metadata=dc_config(field_name="appeal_id")) # UUID of the review queue item to act on - item_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="item_id") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + item_id: str | None = dc_field(default=None, metadata=dc_config(field_name="item_id")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Configuration for ban moderation action - ban: "BanActionRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="ban") - ) + ban: 'BanActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="ban")) # Configuration for block action - block: "BlockActionRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="block") - ) - bypass: "BypassActionRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="bypass") - ) + block: 'BlockActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="block")) + bypass: 'BypassActionRequest | None' = dc_field(default=None, metadata=dc_config(field_name="bypass")) # Configuration for custom moderation action - custom: "CustomActionRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + custom: 'CustomActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="custom")) # Configuration for activity deletion action - delete_activity: "DeleteActivityRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="delete_activity") - ) + delete_activity: 'DeleteActivityRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="delete_activity")) # Configuration for comment deletion action - delete_comment: "DeleteCommentRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="delete_comment") - ) + delete_comment: 'DeleteCommentRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="delete_comment")) # Configuration for message deletion action - delete_message: "DeleteMessageRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="delete_message") - ) + delete_message: 'DeleteMessageRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="delete_message")) # Configuration for reaction deletion action - delete_reaction: "DeleteReactionRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="delete_reaction") - ) + delete_reaction: 'DeleteReactionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="delete_reaction")) # Configuration for user deletion action - delete_user: "DeleteUserRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="delete_user") - ) + delete_user: 'DeleteUserRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="delete_user")) # Configuration for deleting all of a user's chat messages without banning them or deleting their account - delete_user_messages: "DeleteUserMessagesRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="delete_user_messages") - ) + delete_user_messages: 'DeleteUserMessagesRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="delete_user_messages")) # Configuration for escalation action - escalate: "EscalatePayload | None" = dc_field( - default=None, metadata=dc_config(field_name="escalate") - ) - flag: "FlagRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="flag") - ) + escalate: 'EscalatePayload | None' = dc_field(default=None, metadata=dc_config(field_name="escalate")) + flag: 'FlagRequest | None' = dc_field(default=None, metadata=dc_config(field_name="flag")) # Configuration for mark reviewed action - mark_reviewed: "MarkReviewedRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="mark_reviewed") - ) + mark_reviewed: 'MarkReviewedRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="mark_reviewed")) # Configuration for rejecting an appeal - reject_appeal: "RejectAppealRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="reject_appeal") - ) + reject_appeal: 'RejectAppealRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="reject_appeal")) # Configuration for restore action. State-aware: reverses whichever of a delete, a block, or a shadow block currently applies to the content (including both a delete and a block/shadow block at once). - restore: "RestoreActionRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="restore") - ) + restore: 'RestoreActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="restore")) # Configuration for shadow block action - shadow_block: "ShadowBlockActionRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="shadow_block") - ) + shadow_block: 'ShadowBlockActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="shadow_block")) # Configuration for unban moderation action - unban: "UnbanActionRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="unban") - ) + unban: 'UnbanActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="unban")) # Deprecated: use restore instead — it now also reverses a block or shadow block. Configuration for unblock action. - unblock: "UnblockActionRequestPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="unblock") - ) + unblock: 'UnblockActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="unblock")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class SubmitActionResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Present when the appeal was accepted but the entity could not be restored automatically. The moderator should restore it manually. - auto_restore_warning: str | None = dc_field( - default=None, metadata=dc_config(field_name="auto_restore_warning") - ) - appeal_item: "AppealItemResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="appeal_item") - ) - item: "ReviewQueueItemResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="item") - ) - + auto_restore_warning: str | None = dc_field(default=None, metadata=dc_config(field_name="auto_restore_warning")) + appeal_item: 'AppealItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="appeal_item")) + item: 'ReviewQueueItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="item")) @dataclass class SubmitModerationFeedbackRequest(DataClassJsonMixin): @@ -26326,514 +13415,228 @@ class SubmitModerationFeedbackRequest(DataClassJsonMixin): # Provider-side reference identifying the moderated content reference: str = dc_field(metadata=dc_config(field_name="reference")) # Optional moderation channel UUID for context - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) # Action originally produced by the moderation system - current_recommended_action: str | None = dc_field( - default=None, metadata=dc_config(field_name="current_recommended_action") - ) + current_recommended_action: str | None = dc_field(default=None, metadata=dc_config(field_name="current_recommended_action")) # Optional free-form note explaining why the classification was wrong - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) # Optional moderator-supplied action - expected_recommended_action: str | None = dc_field( - default=None, metadata=dc_config(field_name="expected_recommended_action") - ) + expected_recommended_action: str | None = dc_field(default=None, metadata=dc_config(field_name="expected_recommended_action")) # Classifications originally produced by the moderation system - current_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="current_labels") - ) + current_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="current_labels")) # Optional moderator-supplied classifications (up to 16 entries) - expected_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="expected_labels") - ) - + expected_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="expected_labels")) @dataclass class SubmitModerationFeedbackResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class SubscriberAllMetrics(DataClassJsonMixin): - audio: "SubscriberAudioMetrics | None" = dc_field( - default=None, metadata=dc_config(field_name="audio") - ) - rtt_ms: "ActiveCallsLatencyStats | None" = dc_field( - default=None, metadata=dc_config(field_name="rtt_ms") - ) - video: "SubscriberVideoMetrics | None" = dc_field( - default=None, metadata=dc_config(field_name="video") - ) - + audio: 'SubscriberAudioMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="audio")) + rtt_ms: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="rtt_ms")) + video: 'SubscriberVideoMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="video")) @dataclass class SubscriberAudioMetrics(DataClassJsonMixin): - concealment_pct: "ActiveCallsLatencyStats | None" = dc_field( - default=None, metadata=dc_config(field_name="concealment_pct") - ) - jitter_ms: "ActiveCallsLatencyStats | None" = dc_field( - default=None, metadata=dc_config(field_name="jitter_ms") - ) - packets_lost_pct: "ActiveCallsLatencyStats | None" = dc_field( - default=None, metadata=dc_config(field_name="packets_lost_pct") - ) - + concealment_pct: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="concealment_pct")) + jitter_ms: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="jitter_ms")) + packets_lost_pct: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="packets_lost_pct")) @dataclass class SubscriberStatsResponse(DataClassJsonMixin): total: int = dc_field(metadata=dc_config(field_name="total")) - total_subscribed_duration_seconds: int = dc_field( - metadata=dc_config(field_name="total_subscribed_duration_seconds") - ) + total_subscribed_duration_seconds: int = dc_field(metadata=dc_config(field_name="total_subscribed_duration_seconds")) unique: int = dc_field(metadata=dc_config(field_name="unique")) - @dataclass class SubscriberVideoMetrics(DataClassJsonMixin): - fps_30: "ActiveCallsFPSStats | None" = dc_field( - default=None, metadata=dc_config(field_name="fps_30") - ) - jitter_ms: "ActiveCallsLatencyStats | None" = dc_field( - default=None, metadata=dc_config(field_name="jitter_ms") - ) - packets_lost_pct: "ActiveCallsLatencyStats | None" = dc_field( - default=None, metadata=dc_config(field_name="packets_lost_pct") - ) - + fps_30: 'ActiveCallsFPSStats | None' = dc_field(default=None, metadata=dc_config(field_name="fps_30")) + jitter_ms: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="jitter_ms")) + packets_lost_pct: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="packets_lost_pct")) @dataclass class SubscribersMetrics(DataClassJsonMixin): - all: "SubscriberAllMetrics | None" = dc_field( - default=None, metadata=dc_config(field_name="all") - ) - + all: 'SubscriberAllMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="all")) @dataclass class Supporting(DataClassJsonMixin): - delivery_incident_windows: "list[Incident]" = dc_field( - metadata=dc_config(field_name="delivery_incident_windows") - ) - edge_outlier_zones: list[str] = dc_field( - metadata=dc_config(field_name="edge_outlier_zones") - ) - source_drop_windows: "list[TimeWindow]" = dc_field( - metadata=dc_config(field_name="source_drop_windows") - ) - + delivery_incident_windows: 'list[Incident]' = dc_field(metadata=dc_config(field_name="delivery_incident_windows")) + edge_outlier_zones: list[str] = dc_field(metadata=dc_config(field_name="edge_outlier_zones")) + source_drop_windows: 'list[TimeWindow]' = dc_field(metadata=dc_config(field_name="source_drop_windows")) @dataclass class TargetResolution(DataClassJsonMixin): height: int = dc_field(metadata=dc_config(field_name="height")) width: int = dc_field(metadata=dc_config(field_name="width")) - bitrate: int | None = dc_field( - default=None, metadata=dc_config(field_name="bitrate") - ) - + bitrate: int | None = dc_field(default=None, metadata=dc_config(field_name="bitrate")) @dataclass class TeamUsageStats(DataClassJsonMixin): # Team identifier (empty string for users not assigned to any team) team: str = dc_field(metadata=dc_config(field_name="team")) # Statistics for a single metric with optional daily breakdown - concurrent_connections: "MetricStats" = dc_field( - metadata=dc_config(field_name="concurrent_connections") - ) + concurrent_connections: 'MetricStats' = dc_field(metadata=dc_config(field_name="concurrent_connections")) # Statistics for a single metric with optional daily breakdown - concurrent_users: "MetricStats" = dc_field( - metadata=dc_config(field_name="concurrent_users") - ) + concurrent_users: 'MetricStats' = dc_field(metadata=dc_config(field_name="concurrent_users")) # Statistics for a single metric with optional daily breakdown - image_moderations_daily: "MetricStats" = dc_field( - metadata=dc_config(field_name="image_moderations_daily") - ) + image_moderations_daily: 'MetricStats' = dc_field(metadata=dc_config(field_name="image_moderations_daily")) # Statistics for a single metric with optional daily breakdown - messages_daily: "MetricStats" = dc_field( - metadata=dc_config(field_name="messages_daily") - ) + messages_daily: 'MetricStats' = dc_field(metadata=dc_config(field_name="messages_daily")) # Statistics for a single metric with optional daily breakdown - messages_last_24_hours: "MetricStats" = dc_field( - metadata=dc_config(field_name="messages_last_24_hours") - ) + messages_last_24_hours: 'MetricStats' = dc_field(metadata=dc_config(field_name="messages_last_24_hours")) # Statistics for a single metric with optional daily breakdown - messages_last_30_days: "MetricStats" = dc_field( - metadata=dc_config(field_name="messages_last_30_days") - ) + messages_last_30_days: 'MetricStats' = dc_field(metadata=dc_config(field_name="messages_last_30_days")) # Statistics for a single metric with optional daily breakdown - messages_month_to_date: "MetricStats" = dc_field( - metadata=dc_config(field_name="messages_month_to_date") - ) + messages_month_to_date: 'MetricStats' = dc_field(metadata=dc_config(field_name="messages_month_to_date")) # Statistics for a single metric with optional daily breakdown - messages_total: "MetricStats" = dc_field( - metadata=dc_config(field_name="messages_total") - ) + messages_total: 'MetricStats' = dc_field(metadata=dc_config(field_name="messages_total")) # Statistics for a single metric with optional daily breakdown - translations_daily: "MetricStats" = dc_field( - metadata=dc_config(field_name="translations_daily") - ) + translations_daily: 'MetricStats' = dc_field(metadata=dc_config(field_name="translations_daily")) # Statistics for a single metric with optional daily breakdown - users_daily: "MetricStats" = dc_field(metadata=dc_config(field_name="users_daily")) + users_daily: 'MetricStats' = dc_field(metadata=dc_config(field_name="users_daily")) # Statistics for a single metric with optional daily breakdown - users_engaged_last_30_days: "MetricStats" = dc_field( - metadata=dc_config(field_name="users_engaged_last_30_days") - ) + users_engaged_last_30_days: 'MetricStats' = dc_field(metadata=dc_config(field_name="users_engaged_last_30_days")) # Statistics for a single metric with optional daily breakdown - users_engaged_month_to_date: "MetricStats" = dc_field( - metadata=dc_config(field_name="users_engaged_month_to_date") - ) + users_engaged_month_to_date: 'MetricStats' = dc_field(metadata=dc_config(field_name="users_engaged_month_to_date")) # Statistics for a single metric with optional daily breakdown - users_last_24_hours: "MetricStats" = dc_field( - metadata=dc_config(field_name="users_last_24_hours") - ) + users_last_24_hours: 'MetricStats' = dc_field(metadata=dc_config(field_name="users_last_24_hours")) # Statistics for a single metric with optional daily breakdown - users_last_30_days: "MetricStats" = dc_field( - metadata=dc_config(field_name="users_last_30_days") - ) + users_last_30_days: 'MetricStats' = dc_field(metadata=dc_config(field_name="users_last_30_days")) # Statistics for a single metric with optional daily breakdown - users_month_to_date: "MetricStats" = dc_field( - metadata=dc_config(field_name="users_month_to_date") - ) + users_month_to_date: 'MetricStats' = dc_field(metadata=dc_config(field_name="users_month_to_date")) # Statistics for a single metric with optional daily breakdown - users_total: "MetricStats" = dc_field(metadata=dc_config(field_name="users_total")) - + users_total: 'MetricStats' = dc_field(metadata=dc_config(field_name="users_total")) @dataclass class TextContentParameters(DataClassJsonMixin): - contains_url: bool | None = dc_field( - default=None, metadata=dc_config(field_name="contains_url") - ) - label_operator: str | None = dc_field( - default=None, metadata=dc_config(field_name="label_operator") - ) - severity: str | None = dc_field( - default=None, metadata=dc_config(field_name="severity") - ) - text_length: int | None = dc_field( - default=None, metadata=dc_config(field_name="text_length") - ) - text_length_operator: str | None = dc_field( - default=None, metadata=dc_config(field_name="text_length_operator") - ) - blocklist_match: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist_match") - ) - harm_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="harm_labels") - ) - llm_harm_labels: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="llm_harm_labels") - ) - + contains_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="contains_url")) + label_operator: str | None = dc_field(default=None, metadata=dc_config(field_name="label_operator")) + severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) + text_length: int | None = dc_field(default=None, metadata=dc_config(field_name="text_length")) + text_length_operator: str | None = dc_field(default=None, metadata=dc_config(field_name="text_length_operator")) + blocklist_match: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_match")) + harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) + llm_harm_labels: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="llm_harm_labels")) @dataclass class TextRuleParameters(DataClassJsonMixin): - contains_url: bool | None = dc_field( - default=None, metadata=dc_config(field_name="contains_url") - ) - semantic_filter_min_threshold: float | None = dc_field( - default=None, metadata=dc_config(field_name="semantic_filter_min_threshold") - ) - severity: str | None = dc_field( - default=None, metadata=dc_config(field_name="severity") - ) - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - time_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="time_window") - ) - blocklist_match: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist_match") - ) - harm_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="harm_labels") - ) - semantic_filter_names: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="semantic_filter_names") - ) - llm_harm_labels: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="llm_harm_labels") - ) - + contains_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="contains_url")) + semantic_filter_min_threshold: float | None = dc_field(default=None, metadata=dc_config(field_name="semantic_filter_min_threshold")) + severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) + blocklist_match: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_match")) + harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) + semantic_filter_names: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="semantic_filter_names")) + llm_harm_labels: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="llm_harm_labels")) @dataclass class ThreadParticipant(DataClassJsonMixin): channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - last_read_at: datetime = dc_field( - metadata=dc_config( - field_name="last_read_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_read_at: datetime = dc_field(metadata=dc_config(field_name="last_read_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - last_thread_message_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_thread_message_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + last_thread_message_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_thread_message_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Left Thread At is the time when the user left the thread - left_thread_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="left_thread_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + left_thread_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="left_thread_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Thead ID is unique string identifier of the thread - thread_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="thread_id") - ) + thread_id: str | None = dc_field(default=None, metadata=dc_config(field_name="thread_id")) # User ID is unique string identifier of the user - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class ThreadResponse(DataClassJsonMixin): # Active Participant Count - active_participant_count: int = dc_field( - metadata=dc_config(field_name="active_participant_count") - ) + active_participant_count: int = dc_field(metadata=dc_config(field_name="active_participant_count")) # Channel CID channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Created By User ID - created_by_user_id: str = dc_field( - metadata=dc_config(field_name="created_by_user_id") - ) + created_by_user_id: str = dc_field(metadata=dc_config(field_name="created_by_user_id")) # Parent Message ID - parent_message_id: str = dc_field( - metadata=dc_config(field_name="parent_message_id") - ) + parent_message_id: str = dc_field(metadata=dc_config(field_name="parent_message_id")) # Participant Count - participant_count: int = dc_field( - metadata=dc_config(field_name="participant_count") - ) + participant_count: int = dc_field(metadata=dc_config(field_name="participant_count")) # Reply Count reply_count: int = dc_field(metadata=dc_config(field_name="reply_count")) # Title title: str = dc_field(metadata=dc_config(field_name="title")) # Date/time of the last update - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Custom data for this object custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Deleted At - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Last Message At - last_message_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_message_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + last_message_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_message_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Thread Participants - thread_participants: "list[ThreadParticipant] | None" = dc_field( - default=None, metadata=dc_config(field_name="thread_participants") - ) + thread_participants: 'list[ThreadParticipant] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) # User response object - created_by: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) + created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) # Represents any chat message - parent_message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="parent_message") - ) - + parent_message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="parent_message")) @dataclass class ThreadStateResponse(DataClassJsonMixin): # Active Participant Count - active_participant_count: int = dc_field( - metadata=dc_config(field_name="active_participant_count") - ) + active_participant_count: int = dc_field(metadata=dc_config(field_name="active_participant_count")) # Channel CID channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Created By User ID - created_by_user_id: str = dc_field( - metadata=dc_config(field_name="created_by_user_id") - ) + created_by_user_id: str = dc_field(metadata=dc_config(field_name="created_by_user_id")) # Parent Message ID - parent_message_id: str = dc_field( - metadata=dc_config(field_name="parent_message_id") - ) + parent_message_id: str = dc_field(metadata=dc_config(field_name="parent_message_id")) # Participant Count - participant_count: int = dc_field( - metadata=dc_config(field_name="participant_count") - ) + participant_count: int = dc_field(metadata=dc_config(field_name="participant_count")) # Reply Count reply_count: int = dc_field(metadata=dc_config(field_name="reply_count")) # Title title: str = dc_field(metadata=dc_config(field_name="title")) # Date/time of the last update - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - latest_replies: "list[MessageResponse]" = dc_field( - metadata=dc_config(field_name="latest_replies") - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + latest_replies: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="latest_replies")) # Custom data for this object custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Deleted At - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Last Message At - last_message_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_message_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - read: "list[ReadStateResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="read") - ) + last_message_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_message_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + read: 'list[ReadStateResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="read")) # Thread Participants - thread_participants: "list[ThreadParticipant] | None" = dc_field( - default=None, metadata=dc_config(field_name="thread_participants") - ) + thread_participants: 'list[ThreadParticipant] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) # User response object - created_by: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) - draft: "DraftResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="draft") - ) + created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) + draft: 'DraftResponse | None' = dc_field(default=None, metadata=dc_config(field_name="draft")) # Represents any chat message - parent_message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="parent_message") - ) - + parent_message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="parent_message")) @dataclass class ThreadUpdatedEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field( - default="thread.updated", metadata=dc_config(field_name="type") - ) - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + type: str = dc_field(default="thread.updated", metadata=dc_config(field_name="type")) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - thread: "ThreadResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="thread") - ) - + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + thread: 'ThreadResponse | None' = dc_field(default=None, metadata=dc_config(field_name="thread")) @dataclass class ThreadedCommentResponse(DataClassJsonMixin): bookmark_count: int = dc_field(metadata=dc_config(field_name="bookmark_count")) - confidence_score: float = dc_field( - metadata=dc_config(field_name="confidence_score") - ) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + confidence_score: float = dc_field(metadata=dc_config(field_name="confidence_score")) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) downvote_count: int = dc_field(metadata=dc_config(field_name="downvote_count")) id: str = dc_field(metadata=dc_config(field_name="id")) object_id: str = dc_field(metadata=dc_config(field_name="object_id")) @@ -26843,133 +13646,65 @@ class ThreadedCommentResponse(DataClassJsonMixin): score: int = dc_field(metadata=dc_config(field_name="score")) # Status of the comment. One of: active, deleted, removed, hidden status: str = dc_field(metadata=dc_config(field_name="status")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) upvote_count: int = dc_field(metadata=dc_config(field_name="upvote_count")) - mentioned_users: "list[UserResponse]" = dc_field( - metadata=dc_config(field_name="mentioned_users") - ) - own_reactions: "list[FeedsReactionResponse]" = dc_field( - metadata=dc_config(field_name="own_reactions") - ) + mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) + own_reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - controversy_score: float | None = dc_field( - default=None, metadata=dc_config(field_name="controversy_score") - ) - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - edited_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="edited_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + controversy_score: float | None = dc_field(default=None, metadata=dc_config(field_name="controversy_score")) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + edited_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="edited_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) - latest_reactions: "list[FeedsReactionResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="latest_reactions") - ) + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + latest_reactions: 'list[FeedsReactionResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_reactions")) # Slice of nested comments (may be empty). - replies: "list[ThreadedCommentResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="replies") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - i18n: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="i18n") - ) + replies: 'list[ThreadedCommentResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="replies")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) # Cursor & depth information for a comment's direct replies. Mirrors Reddit's 'load more replies' semantics. - meta: "RepliesMeta | None" = dc_field( - default=None, metadata=dc_config(field_name="meta") - ) - moderation: "ModerationV2Response | None" = dc_field( - default=None, metadata=dc_config(field_name="moderation") - ) - reaction_groups: "dict[str, FeedsReactionGroupResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="reaction_groups") - ) - + meta: 'RepliesMeta | None' = dc_field(default=None, metadata=dc_config(field_name="meta")) + moderation: 'ModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) + reaction_groups: 'dict[str, FeedsReactionGroupResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="reaction_groups")) @dataclass class Thresholds(DataClassJsonMixin): - explicit: "LabelThresholds | None" = dc_field( - default=None, metadata=dc_config(field_name="explicit") - ) - spam: "LabelThresholds | None" = dc_field( - default=None, metadata=dc_config(field_name="spam") - ) - toxic: "LabelThresholds | None" = dc_field( - default=None, metadata=dc_config(field_name="toxic") - ) - + explicit: 'LabelThresholds | None' = dc_field(default=None, metadata=dc_config(field_name="explicit")) + spam: 'LabelThresholds | None' = dc_field(default=None, metadata=dc_config(field_name="spam")) + toxic: 'LabelThresholds | None' = dc_field(default=None, metadata=dc_config(field_name="toxic")) @dataclass class ThumbnailResponse(DataClassJsonMixin): image_url: str = dc_field(metadata=dc_config(field_name="image_url")) - @dataclass class ThumbnailsSettings(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - @dataclass class ThumbnailsSettingsRequest(DataClassJsonMixin): - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) @dataclass class ThumbnailsSettingsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - @dataclass class Time(DataClassJsonMixin): pass - @dataclass class TimeWindow(DataClassJsonMixin): _from: str = dc_field(metadata=dc_config(field_name="from")) to: str = dc_field(metadata=dc_config(field_name="to")) - @dataclass class TopBroadcast(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) hours_watched: float = dc_field(metadata=dc_config(field_name="hours_watched")) - peak_concurrent_viewers: int = dc_field( - metadata=dc_config(field_name="peak_concurrent_viewers") - ) - poor_pct: float | None = dc_field( - default=None, metadata=dc_config(field_name="poor_pct") - ) - + peak_concurrent_viewers: int = dc_field(metadata=dc_config(field_name="peak_concurrent_viewers")) + poor_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="poor_pct")) @dataclass class TrackActivityMetricsEvent(DataClassJsonMixin): @@ -26980,7 +13715,6 @@ class TrackActivityMetricsEvent(DataClassJsonMixin): # The amount to increment (positive) or decrement (negative). Defaults to 1. The absolute value counts against rate limits. delta: int | None = dc_field(default=None, metadata=dc_config(field_name="delta")) - @dataclass class TrackActivityMetricsEventResult(DataClassJsonMixin): # The activity ID from the request @@ -26992,127 +13726,89 @@ class TrackActivityMetricsEventResult(DataClassJsonMixin): # Error message if processing failed error: str | None = dc_field(default=None, metadata=dc_config(field_name="error")) - @dataclass class TrackActivityMetricsRequest(DataClassJsonMixin): # List of metric events to track (max 100 per request) - events: "list[TrackActivityMetricsEvent]" = dc_field( - metadata=dc_config(field_name="events") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + events: 'list[TrackActivityMetricsEvent]' = dc_field(metadata=dc_config(field_name="events")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class TrackActivityMetricsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Results for each event in the request, in the same order - results: "list[TrackActivityMetricsEventResult]" = dc_field( - metadata=dc_config(field_name="results") - ) - + results: 'list[TrackActivityMetricsEventResult]' = dc_field(metadata=dc_config(field_name="results")) @dataclass class TrackStatsResponse(DataClassJsonMixin): duration_seconds: int = dc_field(metadata=dc_config(field_name="duration_seconds")) track_type: str = dc_field(metadata=dc_config(field_name="track_type")) - @dataclass class TranscriptionSettings(DataClassJsonMixin): # One of: available, disabled, auto-on - closed_caption_mode: str = dc_field( - metadata=dc_config(field_name="closed_caption_mode") - ) + closed_caption_mode: str = dc_field(metadata=dc_config(field_name="closed_caption_mode")) # The language used in this call as a two letter code language: str = dc_field(metadata=dc_config(field_name="language")) mode: str = dc_field(metadata=dc_config(field_name="mode")) - speech_segment_config: "SpeechSegmentConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="speech_segment_config") - ) - translation: "TranslationSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="translation") - ) - + speech_segment_config: 'SpeechSegmentConfig | None' = dc_field(default=None, metadata=dc_config(field_name="speech_segment_config")) + translation: 'TranslationSettings | None' = dc_field(default=None, metadata=dc_config(field_name="translation")) @dataclass class TranscriptionSettingsRequest(DataClassJsonMixin): - closed_caption_mode: str | None = dc_field( - default=None, metadata=dc_config(field_name="closed_caption_mode") - ) - language: str | None = dc_field( - default=None, metadata=dc_config(field_name="language") - ) + closed_caption_mode: str | None = dc_field(default=None, metadata=dc_config(field_name="closed_caption_mode")) + language: str | None = dc_field(default=None, metadata=dc_config(field_name="language")) mode: str | None = dc_field(default=None, metadata=dc_config(field_name="mode")) - speech_segment_config: "SpeechSegmentConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="speech_segment_config") - ) - translation: "TranslationSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="translation") - ) - + speech_segment_config: 'SpeechSegmentConfig | None' = dc_field(default=None, metadata=dc_config(field_name="speech_segment_config")) + translation: 'TranslationSettings | None' = dc_field(default=None, metadata=dc_config(field_name="translation")) @dataclass class TranscriptionSettingsResponse(DataClassJsonMixin): - closed_caption_mode: str = dc_field( - metadata=dc_config(field_name="closed_caption_mode") - ) + closed_caption_mode: str = dc_field(metadata=dc_config(field_name="closed_caption_mode")) language: str = dc_field(metadata=dc_config(field_name="language")) mode: str = dc_field(metadata=dc_config(field_name="mode")) - speech_segment_config: "SpeechSegmentConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="speech_segment_config") - ) - translation: "TranslationSettings | None" = dc_field( - default=None, metadata=dc_config(field_name="translation") - ) - + speech_segment_config: 'SpeechSegmentConfig | None' = dc_field(default=None, metadata=dc_config(field_name="speech_segment_config")) + translation: 'TranslationSettings | None' = dc_field(default=None, metadata=dc_config(field_name="translation")) @dataclass class TranslateActivityRequest(DataClassJsonMixin): # ISO 639-1 language code to translate to language: str = dc_field(metadata=dc_config(field_name="language")) - @dataclass class TranslateActivityResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) - + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) @dataclass class TranslateCommentRequest(DataClassJsonMixin): # ISO 639-1 language code to translate to language: str = dc_field(metadata=dc_config(field_name="language")) - @dataclass class TranslateCommentResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) - + comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) @dataclass class TranslateMessageRequest(DataClassJsonMixin): # Language to translate message to language: str = dc_field(metadata=dc_config(field_name="language")) +@dataclass +class TranslateMessageResponse(DataClassJsonMixin): + # Duration of the request in milliseconds + duration: str = dc_field(metadata=dc_config(field_name="duration")) + # Represents any chat message + message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) @dataclass class TranslationSettings(DataClassJsonMixin): - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - languages: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="languages") - ) - + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + languages: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="languages")) @dataclass class TriggeredRuleResponse(DataClassJsonMixin): @@ -27121,204 +13817,127 @@ class TriggeredRuleResponse(DataClassJsonMixin): # Action types resolved from the rule's action sequence actions: list[str] = dc_field(metadata=dc_config(field_name="actions")) # Name of the moderation rule that triggered - rule_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="rule_name") - ) + rule_name: str | None = dc_field(default=None, metadata=dc_config(field_name="rule_name")) # Type of the moderation rule that triggered (content, user, or call) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) # Violation count for action sequence rules (1-based) - violation_number: int | None = dc_field( - default=None, metadata=dc_config(field_name="violation_number") - ) - call_options: "CallActionOptions | None" = dc_field( - default=None, metadata=dc_config(field_name="call_options") - ) - + violation_number: int | None = dc_field(default=None, metadata=dc_config(field_name="violation_number")) + call_options: 'CallActionOptions | None' = dc_field(default=None, metadata=dc_config(field_name="call_options")) @dataclass class TruncateChannelRequest(DataClassJsonMixin): # Permanently delete channel data (messages, reactions, etc.) - hard_delete: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hard_delete") - ) + hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) # When `message` is set disables all push notifications for it - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) # Truncate channel data up to `truncated_at`. The system message (if provided) creation time is always greater than `truncated_at` - truncated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="truncated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + truncated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="truncated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # List of member IDs to hide message history for. If empty, truncates the channel for all members - member_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="member_ids") - ) + member_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="member_ids")) # Message data for creating or updating a message - message: "MessageRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) + message: 'MessageRequest | None' = dc_field(default=None, metadata=dc_config(field_name="message")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class TruncateChannelResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) @dataclass class TypingIndicatorsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - @dataclass class UnbanActionRequestPayload(DataClassJsonMixin): # Channel CID for channel-specific unban - channel_cid: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_cid") - ) + channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) # Reason for the appeal decision - decision_reason: str | None = dc_field( - default=None, metadata=dc_config(field_name="decision_reason") - ) + decision_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="decision_reason")) # Also remove the future channels ban for this user - remove_future_channels_ban: bool | None = dc_field( - default=None, metadata=dc_config(field_name="remove_future_channels_ban") - ) + remove_future_channels_ban: bool | None = dc_field(default=None, metadata=dc_config(field_name="remove_future_channels_ban")) # Optional: unban user directly without review item - target_user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="target_user_id") - ) - + target_user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="target_user_id")) @dataclass class UnbanRequest(DataClassJsonMixin): - # ID of the user performing the unban - unbanned_by_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="unbanned_by_id") - ) + # ID of the user performing the unban Deprecated: not used by the unban flow + # Deprecated + unbanned_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="unbanned_by_id")) # User request object - unbanned_by: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="unbanned_by") - ) - + unbanned_by: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="unbanned_by")) @dataclass class UnbanResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class UnblockActionRequestPayload(DataClassJsonMixin): # Reason for the appeal decision - decision_reason: str | None = dc_field( - default=None, metadata=dc_config(field_name="decision_reason") - ) - + decision_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="decision_reason")) @dataclass class UnblockUserRequest(DataClassJsonMixin): # the user to unblock user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - @dataclass class UnblockUserResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class UnblockUsersRequest(DataClassJsonMixin): blocked_user_id: str = dc_field(metadata=dc_config(field_name="blocked_user_id")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UnblockUsersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class UnblockedUserEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.unblocked_user" in this case - type: str = dc_field( - default="call.unblocked_user", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.unblocked_user", metadata=dc_config(field_name="type")) @dataclass class UndeleteMessageRequest(DataClassJsonMixin): # ID of the user who is undeleting the message undeleted_by: str = dc_field(metadata=dc_config(field_name="undeleted_by")) - @dataclass class UndeleteMessageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) - + message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) @dataclass class UnfollowBatchRequest(DataClassJsonMixin): # List of follow relationships to remove, each with optional keep_history - follows: "list[UnfollowPair]" = dc_field(metadata=dc_config(field_name="follows")) + follows: 'list[UnfollowPair]' = dc_field(metadata=dc_config(field_name="follows")) # Whether to delete the corresponding notification activity (default: false) - delete_notification_activity: bool | None = dc_field( - default=None, metadata=dc_config(field_name="delete_notification_activity") - ) + delete_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="delete_notification_activity")) # If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enrich_own_fields") - ) - + enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) @dataclass class UnfollowBatchResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of follow relationships that were removed - follows: "list[FollowResponse]" = dc_field(metadata=dc_config(field_name="follows")) - + follows: 'list[FollowResponse]' = dc_field(metadata=dc_config(field_name="follows")) @dataclass class UnfollowPair(DataClassJsonMixin): @@ -27327,57 +13946,36 @@ class UnfollowPair(DataClassJsonMixin): # Fully qualified ID of the target feed target: str = dc_field(metadata=dc_config(field_name="target")) # When true, activities from the unfollowed feed will remain in the source feed's timeline (default: false) - keep_history: bool | None = dc_field( - default=None, metadata=dc_config(field_name="keep_history") - ) - + keep_history: bool | None = dc_field(default=None, metadata=dc_config(field_name="keep_history")) @dataclass class UnfollowResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) - + follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) @dataclass class UnmuteChannelRequest(DataClassJsonMixin): # Duration of mute in milliseconds - expiration: int | None = dc_field( - default=None, metadata=dc_config(field_name="expiration") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + expiration: int | None = dc_field(default=None, metadata=dc_config(field_name="expiration")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Channel CIDs to mute (if multiple channels) - channel_cids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_cids") - ) + channel_cids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="channel_cids")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UnmuteRequest(DataClassJsonMixin): # User IDs to unmute target_ids: list[str] = dc_field(metadata=dc_config(field_name="target_ids")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UnmuteResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # A list of users that can't be found. Common cause for this is deleted users - non_existing_users: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="non_existing_users") - ) - + non_existing_users: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="non_existing_users")) @dataclass class UnpinActivityResponse(DataClassJsonMixin): @@ -27386,8 +13984,7 @@ class UnpinActivityResponse(DataClassJsonMixin): feed: str = dc_field(metadata=dc_config(field_name="feed")) # ID of the user who unpinned the activity user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) - + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) @dataclass class UnpinRequest(DataClassJsonMixin): @@ -27396,109 +13993,61 @@ class UnpinRequest(DataClassJsonMixin): # the user ID of the user who pinned the message user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - @dataclass class UnpinResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class UnreadCountsBatchRequest(DataClassJsonMixin): user_ids: list[str] = dc_field(metadata=dc_config(field_name="user_ids")) - @dataclass class UnreadCountsBatchResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - counts_by_user: "dict[str, UnreadCountsResponse | None]" = dc_field( - metadata=dc_config(field_name="counts_by_user") - ) - + counts_by_user: 'dict[str, UnreadCountsResponse | None]' = dc_field(metadata=dc_config(field_name="counts_by_user")) @dataclass class UnreadCountsChannel(DataClassJsonMixin): channel_id: str = dc_field(metadata=dc_config(field_name="channel_id")) - last_read: datetime = dc_field( - metadata=dc_config( - field_name="last_read", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + last_read: datetime = dc_field(metadata=dc_config(field_name="last_read", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) unread_count: int = dc_field(metadata=dc_config(field_name="unread_count")) - @dataclass class UnreadCountsChannelType(DataClassJsonMixin): channel_count: int = dc_field(metadata=dc_config(field_name="channel_count")) channel_type: str = dc_field(metadata=dc_config(field_name="channel_type")) unread_count: int = dc_field(metadata=dc_config(field_name="unread_count")) - @dataclass class UnreadCountsResponse(DataClassJsonMixin): - total_unread_count: int = dc_field( - metadata=dc_config(field_name="total_unread_count") - ) - total_unread_threads_count: int = dc_field( - metadata=dc_config(field_name="total_unread_threads_count") - ) - channel_type: "list[UnreadCountsChannelType]" = dc_field( - metadata=dc_config(field_name="channel_type") - ) - channels: "list[UnreadCountsChannel]" = dc_field( - metadata=dc_config(field_name="channels") - ) - threads: "list[UnreadCountsThread]" = dc_field( - metadata=dc_config(field_name="threads") - ) - total_unread_count_by_team: "dict[str, int] | None" = dc_field( - default=None, metadata=dc_config(field_name="total_unread_count_by_team") - ) - + total_unread_count: int = dc_field(metadata=dc_config(field_name="total_unread_count")) + total_unread_threads_count: int = dc_field(metadata=dc_config(field_name="total_unread_threads_count")) + channel_type: 'list[UnreadCountsChannelType]' = dc_field(metadata=dc_config(field_name="channel_type")) + channels: 'list[UnreadCountsChannel]' = dc_field(metadata=dc_config(field_name="channels")) + threads: 'list[UnreadCountsThread]' = dc_field(metadata=dc_config(field_name="threads")) + total_unread_count_by_team: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="total_unread_count_by_team")) @dataclass class UnreadCountsThread(DataClassJsonMixin): - last_read: datetime = dc_field( - metadata=dc_config( - field_name="last_read", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - last_read_message_id: str = dc_field( - metadata=dc_config(field_name="last_read_message_id") - ) - parent_message_id: str = dc_field( - metadata=dc_config(field_name="parent_message_id") - ) + last_read: datetime = dc_field(metadata=dc_config(field_name="last_read", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_read_message_id: str = dc_field(metadata=dc_config(field_name="last_read_message_id")) + parent_message_id: str = dc_field(metadata=dc_config(field_name="parent_message_id")) unread_count: int = dc_field(metadata=dc_config(field_name="unread_count")) - @dataclass class UpdateActivitiesPartialBatchRequest(DataClassJsonMixin): # List of activity changes to apply. Each change specifies an activity ID and the fields to set/unset - changes: "list[UpdateActivityPartialChangeRequest]" = dc_field( - metadata=dc_config(field_name="changes") - ) + changes: 'list[UpdateActivityPartialChangeRequest]' = dc_field(metadata=dc_config(field_name="changes")) # If true, forces moderation to run for server-side requests. By default, server-side requests skip moderation. Client-side requests always run moderation regardless of this field. - force_moderation: bool | None = dc_field( - default=None, metadata=dc_config(field_name="force_moderation") - ) - + force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) @dataclass class UpdateActivitiesPartialBatchResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of successfully updated activities - activities: "list[ActivityResponse]" = dc_field( - metadata=dc_config(field_name="activities") - ) - + activities: 'list[ActivityResponse]' = dc_field(metadata=dc_config(field_name="activities")) @dataclass class UpdateActivityPartialChangeRequest(DataClassJsonMixin): @@ -27506,837 +14055,383 @@ class UpdateActivityPartialChangeRequest(DataClassJsonMixin): activity_id: str = dc_field(metadata=dc_config(field_name="activity_id")) # Whether to copy custom data to the notification activity (only applies when handle_mention_notifications creates notifications) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field( - default=None, metadata=dc_config(field_name="copy_custom_to_notification") - ) + copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) # When true and 'mentioned_user_ids' is updated, automatically creates or deletes mention notifications for added/removed users. Only applicable for client-side requests (ignored for server-side requests) - handle_mention_notifications: bool | None = dc_field( - default=None, metadata=dc_config(field_name="handle_mention_notifications") - ) + handle_mention_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="handle_mention_notifications")) # List of field names to remove. Supported fields: 'custom', 'location', 'expires_at', 'filter_tags', 'interest_tags', 'attachments', 'poll_id', 'mentioned_user_ids'. Use dot-notation for nested custom fields (e.g., 'custom.field_name') - unset: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="unset") - ) + unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) # Map of field names to new values. Supported fields: 'text', 'attachments', 'custom', 'visibility', 'visibility_tag', 'restrict_replies' (values: 'everyone', 'people_i_follow', 'nobody'), 'location', 'expires_at', 'filter_tags', 'interest_tags', 'poll_id', 'feeds', 'mentioned_user_ids'. For custom fields, use dot-notation (e.g., 'custom.field_name') - set: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="set") - ) - + set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) @dataclass class UpdateActivityPartialRequest(DataClassJsonMixin): # Whether to copy custom data to the notification activity (only applies when handle_mention_notifications creates notifications) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field( - default=None, metadata=dc_config(field_name="copy_custom_to_notification") - ) + copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) # If true, enriches the activity's current_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enrich_own_fields") - ) + enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) # If true, forces moderation to run for server-side requests. By default, server-side requests skip moderation. Client-side requests always run moderation regardless of this field. - force_moderation: bool | None = dc_field( - default=None, metadata=dc_config(field_name="force_moderation") - ) + force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) # If true, creates notification activities for newly mentioned users and deletes notifications for users no longer mentioned - handle_mention_notifications: bool | None = dc_field( - default=None, metadata=dc_config(field_name="handle_mention_notifications") - ) + handle_mention_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="handle_mention_notifications")) # If true, runs activity processors on the updated activity. Processors will only run if the activity text and/or attachments are changed. Defaults to false. - run_activity_processors: bool | None = dc_field( - default=None, metadata=dc_config(field_name="run_activity_processors") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + run_activity_processors: bool | None = dc_field(default=None, metadata=dc_config(field_name="run_activity_processors")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # List of field names to remove. Supported fields: 'custom', 'visibility_tag', 'location', 'expires_at', 'filter_tags', 'interest_tags', 'attachments', 'poll_id', 'mentioned_user_ids', 'search_data'. Use dot-notation for nested custom fields (e.g., 'custom.field_name') - unset: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="unset") - ) + unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) # Map of field names to new values. Supported fields: 'text', 'attachments', 'custom', 'visibility', 'visibility_tag', 'restrict_replies' (values: 'everyone', 'people_i_follow', 'nobody'), 'location', 'expires_at', 'filter_tags', 'interest_tags', 'poll_id', 'feeds', 'mentioned_user_ids', 'search_data'. For custom fields, use dot-notation (e.g., 'custom.field_name') - set: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="set") - ) + set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdateActivityPartialResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) - + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) @dataclass class UpdateActivityRequest(DataClassJsonMixin): # Whether to copy custom data to the notification activity (only applies when handle_mention_notifications creates notifications) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field( - default=None, metadata=dc_config(field_name="copy_custom_to_notification") - ) + copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) # If true, enriches the activity's current_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enrich_own_fields") - ) + enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) # Time when the activity will expire - expires_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="expires_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + expires_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expires_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # If true, forces moderation to run for server-side requests. By default, server-side requests skip moderation. Client-side requests always run moderation regardless of this field. - force_moderation: bool | None = dc_field( - default=None, metadata=dc_config(field_name="force_moderation") - ) + force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) # If true, creates notification activities for newly mentioned users and deletes notifications for users no longer mentioned - handle_mention_notifications: bool | None = dc_field( - default=None, metadata=dc_config(field_name="handle_mention_notifications") - ) + handle_mention_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="handle_mention_notifications")) # Poll ID - poll_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="poll_id") - ) + poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) # Controls who can add comments/replies to this activity. One of: everyone, people_i_follow, nobody - restrict_replies: str | None = dc_field( - default=None, metadata=dc_config(field_name="restrict_replies") - ) + restrict_replies: str | None = dc_field(default=None, metadata=dc_config(field_name="restrict_replies")) # If true, runs activity processors on the updated activity. Processors will only run if the activity text and/or attachments are changed. Defaults to false. - run_activity_processors: bool | None = dc_field( - default=None, metadata=dc_config(field_name="run_activity_processors") - ) + run_activity_processors: bool | None = dc_field(default=None, metadata=dc_config(field_name="run_activity_processors")) # Whether to skip URL enrichment for the activity - skip_enrich_url: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_enrich_url") - ) + skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) # The text content of the activity text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Visibility setting for the activity - visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="visibility") - ) + visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility")) # If visibility is 'tag', this is the tag name and is required - visibility_tag: str | None = dc_field( - default=None, metadata=dc_config(field_name="visibility_tag") - ) + visibility_tag: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility_tag")) # List of attachments for the activity - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) # Collections that this activity references - collection_refs: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="collection_refs") - ) + collection_refs: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="collection_refs")) # List of feeds the activity is present in - feeds: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="feeds") - ) + feeds: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="feeds")) # Tags used for filtering the activity - filter_tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_tags") - ) + filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) # Tags indicating interest categories - interest_tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="interest_tags") - ) + interest_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="interest_tags")) # List of user IDs mentioned in the activity - mentioned_user_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_user_ids") - ) + mentioned_user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_user_ids")) # Custom data for the activity - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - location: "Location | None" = dc_field( - default=None, metadata=dc_config(field_name="location") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) # Additional data for search indexing - search_data: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="search_data") - ) + search_data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="search_data")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdateActivityResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) - + activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) @dataclass class UpdateAppRequest(DataClassJsonMixin): - async_url_enrich_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="async_url_enrich_enabled") - ) - auto_translation_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="auto_translation_enabled") - ) - before_message_send_hook_attempt_timeout_ms: int | None = dc_field( - default=None, - metadata=dc_config(field_name="before_message_send_hook_attempt_timeout_ms"), - ) - before_message_send_hook_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="before_message_send_hook_url") - ) - cdn_expiration_seconds: int | None = dc_field( - default=None, metadata=dc_config(field_name="cdn_expiration_seconds") - ) - channel_hide_members_only: bool | None = dc_field( - default=None, metadata=dc_config(field_name="channel_hide_members_only") - ) - chat_primary_use_case: str | None = dc_field( - default=None, metadata=dc_config(field_name="chat_primary_use_case") - ) - custom_action_handler_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="custom_action_handler_url") - ) - disable_auth_checks: bool | None = dc_field( - default=None, metadata=dc_config(field_name="disable_auth_checks") - ) - disable_permissions_checks: bool | None = dc_field( - default=None, metadata=dc_config(field_name="disable_permissions_checks") - ) - enable_hook_payload_compression: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enable_hook_payload_compression") - ) - enforce_unique_usernames: str | None = dc_field( - default=None, metadata=dc_config(field_name="enforce_unique_usernames") - ) - feed_audit_logs_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="feed_audit_logs_enabled") - ) - feeds_moderation_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="feeds_moderation_enabled") - ) - feeds_v2_region: str | None = dc_field( - default=None, metadata=dc_config(field_name="feeds_v2_region") - ) - guest_user_creation_disabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="guest_user_creation_disabled") - ) - image_moderation_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="image_moderation_enabled") - ) - max_aggregated_activities_length: int | None = dc_field( - default=None, metadata=dc_config(field_name="max_aggregated_activities_length") - ) - member_custom_on_messages_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="member_custom_on_messages_enabled") - ) - migrate_permissions_to_v2: bool | None = dc_field( - default=None, metadata=dc_config(field_name="migrate_permissions_to_v2") - ) - moderation_analytics_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="moderation_analytics_enabled") - ) - moderation_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="moderation_enabled") - ) - moderation_onboarding_complete: bool | None = dc_field( - default=None, metadata=dc_config(field_name="moderation_onboarding_complete") - ) - moderation_s3_image_access_role_arn: str | None = dc_field( - default=None, - metadata=dc_config(field_name="moderation_s3_image_access_role_arn"), - ) - moderation_webhook_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="moderation_webhook_url") - ) - multi_tenant_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="multi_tenant_enabled") - ) - permission_version: str | None = dc_field( - default=None, metadata=dc_config(field_name="permission_version") - ) - reminders_interval: int | None = dc_field( - default=None, metadata=dc_config(field_name="reminders_interval") - ) - reminders_max_members: int | None = dc_field( - default=None, metadata=dc_config(field_name="reminders_max_members") - ) - reminders_max_per_user: int | None = dc_field( - default=None, metadata=dc_config(field_name="reminders_max_per_user") - ) - revoke_tokens_issued_before: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="revoke_tokens_issued_before", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - sns_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="sns_key") - ) - sns_secret: str | None = dc_field( - default=None, metadata=dc_config(field_name="sns_secret") - ) - sns_topic_arn: str | None = dc_field( - default=None, metadata=dc_config(field_name="sns_topic_arn") - ) - sqs_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="sqs_key") - ) - sqs_secret: str | None = dc_field( - default=None, metadata=dc_config(field_name="sqs_secret") - ) - sqs_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="sqs_url") - ) - user_response_time_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="user_response_time_enabled") - ) - video_primary_use_case: str | None = dc_field( - default=None, metadata=dc_config(field_name="video_primary_use_case") - ) - webhook_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="webhook_url") - ) - allowed_flag_reasons: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="allowed_flag_reasons") - ) - event_hooks: "list[EventHook] | None" = dc_field( - default=None, metadata=dc_config(field_name="event_hooks") - ) - image_moderation_block_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="image_moderation_block_labels") - ) - image_moderation_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="image_moderation_labels") - ) - user_search_disallowed_roles: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="user_search_disallowed_roles") - ) - webhook_events: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="webhook_events") - ) - activity_metrics_config: "dict[str, int] | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_metrics_config") - ) - apn_config: "APNConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="apn_config") - ) - async_moderation_config: "AsyncModerationConfiguration | None" = dc_field( - default=None, metadata=dc_config(field_name="async_moderation_config") - ) - datadog_info: "DataDogInfo | None" = dc_field( - default=None, metadata=dc_config(field_name="datadog_info") - ) - file_upload_config: "FileUploadConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="file_upload_config") - ) - firebase_config: "FirebaseConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="firebase_config") - ) - grants: "dict[str, list[str]] | None" = dc_field( - default=None, metadata=dc_config(field_name="grants") - ) - huawei_config: "HuaweiConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="huawei_config") - ) - image_upload_config: "FileUploadConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="image_upload_config") - ) - moderation_dashboard_preferences: "ModerationDashboardPreferences | None" = ( - dc_field( - default=None, - metadata=dc_config(field_name="moderation_dashboard_preferences"), - ) - ) - push_config: "PushConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="push_config") - ) - xiaomi_config: "XiaomiConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="xiaomi_config") - ) - + async_url_enrich_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="async_url_enrich_enabled")) + auto_translation_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_enabled")) + before_message_send_hook_attempt_timeout_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="before_message_send_hook_attempt_timeout_ms")) + before_message_send_hook_url: str | None = dc_field(default=None, metadata=dc_config(field_name="before_message_send_hook_url")) + cdn_expiration_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="cdn_expiration_seconds")) + channel_hide_members_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="channel_hide_members_only")) + chat_primary_use_case: str | None = dc_field(default=None, metadata=dc_config(field_name="chat_primary_use_case")) + custom_action_handler_url: str | None = dc_field(default=None, metadata=dc_config(field_name="custom_action_handler_url")) + disable_auth_checks: bool | None = dc_field(default=None, metadata=dc_config(field_name="disable_auth_checks")) + disable_permissions_checks: bool | None = dc_field(default=None, metadata=dc_config(field_name="disable_permissions_checks")) + enable_hook_payload_compression: bool | None = dc_field(default=None, metadata=dc_config(field_name="enable_hook_payload_compression")) + enforce_unique_usernames: str | None = dc_field(default=None, metadata=dc_config(field_name="enforce_unique_usernames")) + feed_audit_logs_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="feed_audit_logs_enabled")) + feeds_moderation_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="feeds_moderation_enabled")) + feeds_v2_region: str | None = dc_field(default=None, metadata=dc_config(field_name="feeds_v2_region")) + guest_user_creation_disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="guest_user_creation_disabled")) + image_moderation_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="image_moderation_enabled")) + max_aggregated_activities_length: int | None = dc_field(default=None, metadata=dc_config(field_name="max_aggregated_activities_length")) + member_custom_on_mentioned_users_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="member_custom_on_mentioned_users_enabled")) + member_custom_on_messages_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="member_custom_on_messages_enabled")) + member_custom_on_typing_events_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="member_custom_on_typing_events_enabled")) + migrate_permissions_to_v2: bool | None = dc_field(default=None, metadata=dc_config(field_name="migrate_permissions_to_v2")) + moderation_analytics_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="moderation_analytics_enabled")) + moderation_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="moderation_enabled")) + moderation_onboarding_complete: bool | None = dc_field(default=None, metadata=dc_config(field_name="moderation_onboarding_complete")) + moderation_s3_image_access_role_arn: str | None = dc_field(default=None, metadata=dc_config(field_name="moderation_s3_image_access_role_arn")) + moderation_webhook_url: str | None = dc_field(default=None, metadata=dc_config(field_name="moderation_webhook_url")) + multi_tenant_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="multi_tenant_enabled")) + permission_version: str | None = dc_field(default=None, metadata=dc_config(field_name="permission_version")) + reminders_interval: int | None = dc_field(default=None, metadata=dc_config(field_name="reminders_interval")) + reminders_max_members: int | None = dc_field(default=None, metadata=dc_config(field_name="reminders_max_members")) + reminders_max_per_user: int | None = dc_field(default=None, metadata=dc_config(field_name="reminders_max_per_user")) + revoke_tokens_issued_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="revoke_tokens_issued_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + sns_key: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_key")) + sns_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_secret")) + sns_topic_arn: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_topic_arn")) + sqs_key: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_key")) + sqs_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_secret")) + sqs_url: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_url")) + user_response_time_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="user_response_time_enabled")) + video_primary_use_case: str | None = dc_field(default=None, metadata=dc_config(field_name="video_primary_use_case")) + webhook_url: str | None = dc_field(default=None, metadata=dc_config(field_name="webhook_url")) + allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) + event_hooks: 'list[EventHook] | None' = dc_field(default=None, metadata=dc_config(field_name="event_hooks")) + image_moderation_block_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="image_moderation_block_labels")) + image_moderation_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="image_moderation_labels")) + user_search_disallowed_roles: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="user_search_disallowed_roles")) + webhook_events: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="webhook_events")) + activity_metrics_config: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_metrics_config")) + apn_config: 'APNConfig | None' = dc_field(default=None, metadata=dc_config(field_name="apn_config")) + async_moderation_config: 'AsyncModerationConfiguration | None' = dc_field(default=None, metadata=dc_config(field_name="async_moderation_config")) + datadog_info: 'DataDogInfo | None' = dc_field(default=None, metadata=dc_config(field_name="datadog_info")) + file_upload_config: 'FileUploadConfig | None' = dc_field(default=None, metadata=dc_config(field_name="file_upload_config")) + firebase_config: 'FirebaseConfig | None' = dc_field(default=None, metadata=dc_config(field_name="firebase_config")) + grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) + huawei_config: 'HuaweiConfig | None' = dc_field(default=None, metadata=dc_config(field_name="huawei_config")) + image_upload_config: 'FileUploadConfig | None' = dc_field(default=None, metadata=dc_config(field_name="image_upload_config")) + moderation_dashboard_preferences: 'ModerationDashboardPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_dashboard_preferences")) + push_config: 'PushConfig | None' = dc_field(default=None, metadata=dc_config(field_name="push_config")) + xiaomi_config: 'XiaomiConfig | None' = dc_field(default=None, metadata=dc_config(field_name="xiaomi_config")) @dataclass class UpdateBlockListRequest(DataClassJsonMixin): - is_confusable_folding_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_confusable_folding_enabled") - ) - is_leet_check_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_leet_check_enabled") - ) - is_plural_check_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_plural_check_enabled") - ) - is_substring_matching_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_substring_matching_enabled") - ) + is_confusable_folding_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_confusable_folding_enabled")) + is_leet_check_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_leet_check_enabled")) + is_plural_check_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_plural_check_enabled")) + is_substring_matching_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_substring_matching_enabled")) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # List of words to block - words: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="words") - ) + words: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="words")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdateBlockListResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Block list contains restricted words - blocklist: "BlockListResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="blocklist") - ) - + blocklist: 'BlockListResponse | None' = dc_field(default=None, metadata=dc_config(field_name="blocklist")) @dataclass class UpdateBookmarkFolderRequest(DataClassJsonMixin): # Name of the folder name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Custom data for the folder - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdateBookmarkFolderResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - bookmark_folder: "BookmarkFolderResponse" = dc_field( - metadata=dc_config(field_name="bookmark_folder") - ) - + bookmark_folder: 'BookmarkFolderResponse' = dc_field(metadata=dc_config(field_name="bookmark_folder")) @dataclass class UpdateBookmarkRequest(DataClassJsonMixin): # ID of the folder containing the bookmark - folder_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="folder_id") - ) + folder_id: str | None = dc_field(default=None, metadata=dc_config(field_name="folder_id")) # Move the bookmark to this folder (empty string removes the folder) - new_folder_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="new_folder_id") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + new_folder_id: str | None = dc_field(default=None, metadata=dc_config(field_name="new_folder_id")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Custom data for the bookmark - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - new_folder: "AddFolderRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="new_folder") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + new_folder: 'AddFolderRequest | None' = dc_field(default=None, metadata=dc_config(field_name="new_folder")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdateBookmarkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) - + bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) @dataclass class UpdateCallMembersRequest(DataClassJsonMixin): # List of userID to remove - remove_members: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="remove_members") - ) + remove_members: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="remove_members")) # List of members to update or insert - update_members: "list[MemberRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="update_members") - ) - + update_members: 'list[MemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="update_members")) @dataclass class UpdateCallMembersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) - + members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) @dataclass class UpdateCallRequest(DataClassJsonMixin): # the time the call is scheduled to start - starts_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="starts_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + starts_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="starts_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Custom data for this object - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - settings_override: "CallSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="settings_override") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + settings_override: 'CallSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="settings_override")) @dataclass class UpdateCallResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) - own_capabilities: "list[OwnCapability]" = dc_field( - metadata=dc_config(field_name="own_capabilities") - ) + members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + own_capabilities: 'list[OwnCapability]' = dc_field(metadata=dc_config(field_name="own_capabilities")) # Represents a call - call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) - + call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) @dataclass class UpdateCallTypeRequest(DataClassJsonMixin): - external_storage: str | None = dc_field( - default=None, metadata=dc_config(field_name="external_storage") - ) - grants: "dict[str, list[str]] | None" = dc_field( - default=None, metadata=dc_config(field_name="grants") - ) - notification_settings: "NotificationSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="notification_settings") - ) - settings: "CallSettingsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="settings") - ) - + external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="external_storage")) + grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) + notification_settings: 'NotificationSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="notification_settings")) + settings: 'CallSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="settings")) @dataclass class UpdateCallTypeResponse(DataClassJsonMixin): # the time the call type was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) duration: str = dc_field(metadata=dc_config(field_name="duration")) # the name of the call type name: str = dc_field(metadata=dc_config(field_name="name")) # the time the call type was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # the permissions granted to each role - grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) - notification_settings: "NotificationSettingsResponse" = dc_field( - metadata=dc_config(field_name="notification_settings") - ) - settings: "CallSettingsResponse" = dc_field( - metadata=dc_config(field_name="settings") - ) + grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) + notification_settings: 'NotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="notification_settings")) + settings: 'CallSettingsResponse' = dc_field(metadata=dc_config(field_name="settings")) # the external storage for the call type - external_storage: str | None = dc_field( - default=None, metadata=dc_config(field_name="external_storage") - ) - + external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="external_storage")) @dataclass class UpdateCampaignRequest(DataClassJsonMixin): sender_id: str = dc_field(metadata=dc_config(field_name="sender_id")) - message_template: "CampaignMessageTemplate" = dc_field( - metadata=dc_config(field_name="message_template") - ) - create_channels: bool | None = dc_field( - default=None, metadata=dc_config(field_name="create_channels") - ) - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + message_template: 'CampaignMessageTemplate' = dc_field(metadata=dc_config(field_name="message_template")) + create_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_channels")) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - sender_mode: str | None = dc_field( - default=None, metadata=dc_config(field_name="sender_mode") - ) - sender_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="sender_visibility") - ) - show_channels: bool | None = dc_field( - default=None, metadata=dc_config(field_name="show_channels") - ) - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) - skip_webhook: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_webhook") - ) - segment_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="segment_ids") - ) - user_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="user_ids") - ) - channel_template: "CampaignChannelTemplate | None" = dc_field( - default=None, metadata=dc_config(field_name="channel_template") - ) - + sender_mode: str | None = dc_field(default=None, metadata=dc_config(field_name="sender_mode")) + sender_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="sender_visibility")) + show_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_channels")) + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + skip_webhook: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_webhook")) + segment_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="segment_ids")) + user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="user_ids")) + channel_template: 'CampaignChannelTemplate | None' = dc_field(default=None, metadata=dc_config(field_name="channel_template")) @dataclass class UpdateChannelPartialRequest(DataClassJsonMixin): - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - unset: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="unset") - ) - set: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="set") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) + set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdateChannelPartialResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of updated members - members: "list[ChannelMemberResponse]" = dc_field( - metadata=dc_config(field_name="members") - ) + members: 'list[ChannelMemberResponse]' = dc_field(metadata=dc_config(field_name="members")) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) - + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) @dataclass class UpdateChannelRequest(DataClassJsonMixin): # Set to `true` to accept the invite - accept_invite: bool | None = dc_field( - default=None, metadata=dc_config(field_name="accept_invite") - ) + accept_invite: bool | None = dc_field(default=None, metadata=dc_config(field_name="accept_invite")) # Sets cool down period for the channel in seconds - cooldown: int | None = dc_field( - default=None, metadata=dc_config(field_name="cooldown") - ) + cooldown: int | None = dc_field(default=None, metadata=dc_config(field_name="cooldown")) # Set to `true` to hide channel's history when adding new members - hide_history: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hide_history") - ) + hide_history: bool | None = dc_field(default=None, metadata=dc_config(field_name="hide_history")) # If set, hides channel's history before this time when adding new members. Takes precedence over `hide_history` when both are provided. Must be in RFC3339 format (e.g., "2024-01-01T10:00:00Z") and in the past. - hide_history_before: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="hide_history_before", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + hide_history_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="hide_history_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Set to `true` to reject the invite - reject_invite: bool | None = dc_field( - default=None, metadata=dc_config(field_name="reject_invite") - ) + reject_invite: bool | None = dc_field(default=None, metadata=dc_config(field_name="reject_invite")) # When `message` is set disables all push notifications for it - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # List of filter tags to add to the channel - add_filter_tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="add_filter_tags") - ) + add_filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="add_filter_tags")) # List of user IDs to add to the channel - add_members: "list[ChannelMemberRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="add_members") - ) + add_members: 'list[ChannelMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="add_members")) # List of user IDs to make channel moderators - add_moderators: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="add_moderators") - ) + add_moderators: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="add_moderators")) # List of channel member role assignments. If any specified user is not part of the channel, the request will fail - assign_roles: "list[ChannelMemberRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="assign_roles") - ) + assign_roles: 'list[ChannelMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="assign_roles")) # List of user IDs to take away moderators status from - demote_moderators: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="demote_moderators") - ) + demote_moderators: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="demote_moderators")) # List of user IDs to invite to the channel - invites: "list[ChannelMemberRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="invites") - ) + invites: 'list[ChannelMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="invites")) # List of filter tags to remove from the channel - remove_filter_tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="remove_filter_tags") - ) + remove_filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="remove_filter_tags")) # List of user IDs to remove from the channel - remove_members: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="remove_members") - ) - data: "ChannelInputRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="data") - ) + remove_members: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="remove_members")) + data: 'ChannelInputRequest | None' = dc_field(default=None, metadata=dc_config(field_name="data")) # Message data for creating or updating a message - message: "MessageRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) + message: 'MessageRequest | None' = dc_field(default=None, metadata=dc_config(field_name="message")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdateChannelResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of channel members - members: "list[ChannelMemberResponse]" = dc_field( - metadata=dc_config(field_name="members") - ) + members: 'list[ChannelMemberResponse]' = dc_field(metadata=dc_config(field_name="members")) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) @dataclass class UpdateChannelTypeRequest(DataClassJsonMixin): automod: str = dc_field(metadata=dc_config(field_name="automod")) automod_behavior: str = dc_field(metadata=dc_config(field_name="automod_behavior")) - max_message_length: int = dc_field( - metadata=dc_config(field_name="max_message_length") - ) - blocklist: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist") - ) - blocklist_behavior: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist_behavior") - ) - connect_events: bool | None = dc_field( - default=None, metadata=dc_config(field_name="connect_events") - ) - count_messages: bool | None = dc_field( - default=None, metadata=dc_config(field_name="count_messages") - ) - custom_events: bool | None = dc_field( - default=None, metadata=dc_config(field_name="custom_events") - ) - delivery_events: bool | None = dc_field( - default=None, metadata=dc_config(field_name="delivery_events") - ) - mark_messages_pending: bool | None = dc_field( - default=None, metadata=dc_config(field_name="mark_messages_pending") - ) - message_retention: str | None = dc_field( - default=None, metadata=dc_config(field_name="message_retention") - ) + max_message_length: int = dc_field(metadata=dc_config(field_name="max_message_length")) + blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) + blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) + connect_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="connect_events")) + count_messages: bool | None = dc_field(default=None, metadata=dc_config(field_name="count_messages")) + custom_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="custom_events")) + delivery_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="delivery_events")) + mark_messages_pending: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_messages_pending")) + message_retention: str | None = dc_field(default=None, metadata=dc_config(field_name="message_retention")) mutes: bool | None = dc_field(default=None, metadata=dc_config(field_name="mutes")) - partition_size: int | None = dc_field( - default=None, metadata=dc_config(field_name="partition_size") - ) - partition_ttl: str | None = dc_field( - default=None, metadata=dc_config(field_name="partition_ttl") - ) + partition_size: int | None = dc_field(default=None, metadata=dc_config(field_name="partition_size")) + partition_ttl: str | None = dc_field(default=None, metadata=dc_config(field_name="partition_ttl")) polls: bool | None = dc_field(default=None, metadata=dc_config(field_name="polls")) - push_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_level") - ) - push_notifications: bool | None = dc_field( - default=None, metadata=dc_config(field_name="push_notifications") - ) - quotes: bool | None = dc_field( - default=None, metadata=dc_config(field_name="quotes") - ) - reactions: bool | None = dc_field( - default=None, metadata=dc_config(field_name="reactions") - ) - read_events: bool | None = dc_field( - default=None, metadata=dc_config(field_name="read_events") - ) - reminders: bool | None = dc_field( - default=None, metadata=dc_config(field_name="reminders") - ) - replies: bool | None = dc_field( - default=None, metadata=dc_config(field_name="replies") - ) - search: bool | None = dc_field( - default=None, metadata=dc_config(field_name="search") - ) - shared_locations: bool | None = dc_field( - default=None, metadata=dc_config(field_name="shared_locations") - ) - skip_last_msg_update_for_system_msgs: bool | None = dc_field( - default=None, - metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs"), - ) - typing_events: bool | None = dc_field( - default=None, metadata=dc_config(field_name="typing_events") - ) - uploads: bool | None = dc_field( - default=None, metadata=dc_config(field_name="uploads") - ) - url_enrichment: bool | None = dc_field( - default=None, metadata=dc_config(field_name="url_enrichment") - ) - user_message_reminders: bool | None = dc_field( - default=None, metadata=dc_config(field_name="user_message_reminders") - ) - allowed_flag_reasons: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="allowed_flag_reasons") - ) - blocklists: "list[BlockListOptions] | None" = dc_field( - default=None, metadata=dc_config(field_name="blocklists") - ) + push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) + push_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="push_notifications")) + quotes: bool | None = dc_field(default=None, metadata=dc_config(field_name="quotes")) + reactions: bool | None = dc_field(default=None, metadata=dc_config(field_name="reactions")) + read_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="read_events")) + reminders: bool | None = dc_field(default=None, metadata=dc_config(field_name="reminders")) + replies: bool | None = dc_field(default=None, metadata=dc_config(field_name="replies")) + search: bool | None = dc_field(default=None, metadata=dc_config(field_name="search")) + shared_locations: bool | None = dc_field(default=None, metadata=dc_config(field_name="shared_locations")) + skip_last_msg_update_for_system_msgs: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs")) + typing_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="typing_events")) + uploads: bool | None = dc_field(default=None, metadata=dc_config(field_name="uploads")) + url_enrichment: bool | None = dc_field(default=None, metadata=dc_config(field_name="url_enrichment")) + user_message_reminders: bool | None = dc_field(default=None, metadata=dc_config(field_name="user_message_reminders")) + allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) + blocklists: 'list[BlockListOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="blocklists")) # List of commands that channel supports - commands: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="commands") - ) - permissions: "list[PolicyRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="permissions") - ) + commands: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="commands")) + permissions: 'list[PolicyRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="permissions")) # Sets thresholds for AI moderation - automod_thresholds: "Thresholds | None" = dc_field( - default=None, metadata=dc_config(field_name="automod_thresholds") - ) - chat_preferences: "ChatPreferences | None" = dc_field( - default=None, metadata=dc_config(field_name="chat_preferences") - ) - grants: "dict[str, list[str]] | None" = dc_field( - default=None, metadata=dc_config(field_name="grants") - ) - + automod_thresholds: 'Thresholds | None' = dc_field(default=None, metadata=dc_config(field_name="automod_thresholds")) + chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) + grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) @dataclass class UpdateChannelTypeResponse(DataClassJsonMixin): @@ -28344,32 +14439,17 @@ class UpdateChannelTypeResponse(DataClassJsonMixin): automod_behavior: str = dc_field(metadata=dc_config(field_name="automod_behavior")) connect_events: bool = dc_field(metadata=dc_config(field_name="connect_events")) count_messages: bool = dc_field(metadata=dc_config(field_name="count_messages")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom_events: bool = dc_field(metadata=dc_config(field_name="custom_events")) delivery_events: bool = dc_field(metadata=dc_config(field_name="delivery_events")) duration: str = dc_field(metadata=dc_config(field_name="duration")) - mark_messages_pending: bool = dc_field( - metadata=dc_config(field_name="mark_messages_pending") - ) - max_message_length: int = dc_field( - metadata=dc_config(field_name="max_message_length") - ) - message_retention: str = dc_field( - metadata=dc_config(field_name="message_retention") - ) + mark_messages_pending: bool = dc_field(metadata=dc_config(field_name="mark_messages_pending")) + max_message_length: int = dc_field(metadata=dc_config(field_name="max_message_length")) + message_retention: str = dc_field(metadata=dc_config(field_name="message_retention")) mutes: bool = dc_field(metadata=dc_config(field_name="mutes")) name: str = dc_field(metadata=dc_config(field_name="name")) polls: bool = dc_field(metadata=dc_config(field_name="polls")) - push_notifications: bool = dc_field( - metadata=dc_config(field_name="push_notifications") - ) + push_notifications: bool = dc_field(metadata=dc_config(field_name="push_notifications")) quotes: bool = dc_field(metadata=dc_config(field_name="quotes")) reactions: bool = dc_field(metadata=dc_config(field_name="reactions")) read_events: bool = dc_field(metadata=dc_config(field_name="read_events")) @@ -28377,57 +14457,25 @@ class UpdateChannelTypeResponse(DataClassJsonMixin): replies: bool = dc_field(metadata=dc_config(field_name="replies")) search: bool = dc_field(metadata=dc_config(field_name="search")) shared_locations: bool = dc_field(metadata=dc_config(field_name="shared_locations")) - skip_last_msg_update_for_system_msgs: bool = dc_field( - metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs") - ) + skip_last_msg_update_for_system_msgs: bool = dc_field(metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs")) typing_events: bool = dc_field(metadata=dc_config(field_name="typing_events")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) uploads: bool = dc_field(metadata=dc_config(field_name="uploads")) url_enrichment: bool = dc_field(metadata=dc_config(field_name="url_enrichment")) - user_message_reminders: bool = dc_field( - metadata=dc_config(field_name="user_message_reminders") - ) + user_message_reminders: bool = dc_field(metadata=dc_config(field_name="user_message_reminders")) commands: list[str] = dc_field(metadata=dc_config(field_name="commands")) - permissions: "list[PolicyRequest]" = dc_field( - metadata=dc_config(field_name="permissions") - ) - grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) - blocklist: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist") - ) - blocklist_behavior: str | None = dc_field( - default=None, metadata=dc_config(field_name="blocklist_behavior") - ) - partition_size: int | None = dc_field( - default=None, metadata=dc_config(field_name="partition_size") - ) - partition_ttl: str | None = dc_field( - default=None, metadata=dc_config(field_name="partition_ttl") - ) - push_level: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_level") - ) - allowed_flag_reasons: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="allowed_flag_reasons") - ) - blocklists: "list[BlockListOptions] | None" = dc_field( - default=None, metadata=dc_config(field_name="blocklists") - ) + permissions: 'list[PolicyRequest]' = dc_field(metadata=dc_config(field_name="permissions")) + grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) + blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) + blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) + partition_size: int | None = dc_field(default=None, metadata=dc_config(field_name="partition_size")) + partition_ttl: str | None = dc_field(default=None, metadata=dc_config(field_name="partition_ttl")) + push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) + allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) + blocklists: 'list[BlockListOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="blocklists")) # Sets thresholds for AI moderation - automod_thresholds: "Thresholds | None" = dc_field( - default=None, metadata=dc_config(field_name="automod_thresholds") - ) - chat_preferences: "ChatPreferences | None" = dc_field( - default=None, metadata=dc_config(field_name="chat_preferences") - ) - + automod_thresholds: 'Thresholds | None' = dc_field(default=None, metadata=dc_config(field_name="automod_thresholds")) + chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) @dataclass class UpdateCollectionRequest(DataClassJsonMixin): @@ -28438,30 +14486,19 @@ class UpdateCollectionRequest(DataClassJsonMixin): # Custom data for the collection (required, must contain at least one key) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - @dataclass class UpdateCollectionsRequest(DataClassJsonMixin): # List of collections to update (only custom data is updatable) - collections: "list[UpdateCollectionRequest]" = dc_field( - metadata=dc_config(field_name="collections") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + collections: 'list[UpdateCollectionRequest]' = dc_field(metadata=dc_config(field_name="collections")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdateCollectionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of updated collections - collections: "list[CollectionResponse]" = dc_field( - metadata=dc_config(field_name="collections") - ) - + collections: 'list[CollectionResponse]' = dc_field(metadata=dc_config(field_name="collections")) @dataclass class UpdateCommandRequest(DataClassJsonMixin): @@ -28472,146 +14509,84 @@ class UpdateCommandRequest(DataClassJsonMixin): # Set name used for grouping commands set: str | None = dc_field(default=None, metadata=dc_config(field_name="set")) - @dataclass class UpdateCommandResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents custom chat command - command: "Command | None" = dc_field( - default=None, metadata=dc_config(field_name="command") - ) - + command: 'Command | None' = dc_field(default=None, metadata=dc_config(field_name="command")) @dataclass class UpdateCommentBookmarkRequest(DataClassJsonMixin): # ID of the folder containing the bookmark - folder_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="folder_id") - ) + folder_id: str | None = dc_field(default=None, metadata=dc_config(field_name="folder_id")) # Move the bookmark to this folder (empty string removes the folder) - new_folder_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="new_folder_id") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + new_folder_id: str | None = dc_field(default=None, metadata=dc_config(field_name="new_folder_id")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Custom data for the bookmark - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - new_folder: "AddFolderRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="new_folder") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + new_folder: 'AddFolderRequest | None' = dc_field(default=None, metadata=dc_config(field_name="new_folder")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdateCommentBookmarkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) - + bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) @dataclass class UpdateCommentPartialRequest(DataClassJsonMixin): # Whether to copy custom data to notification activities Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field( - default=None, metadata=dc_config(field_name="copy_custom_to_notification") - ) + copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) # If true, forces moderation to run for server-side requests. By default, server-side requests skip moderation. Client-side requests always run moderation regardless of this field. - force_moderation: bool | None = dc_field( - default=None, metadata=dc_config(field_name="force_moderation") - ) + force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) # Whether to handle mention notification changes - handle_mention_notifications: bool | None = dc_field( - default=None, metadata=dc_config(field_name="handle_mention_notifications") - ) + handle_mention_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="handle_mention_notifications")) # Whether to skip URL enrichment - skip_enrich_url: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_enrich_url") - ) + skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) # Whether to skip push notifications - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # List of field names to remove. Supported fields: 'custom', 'attachments', 'mentioned_user_ids', 'status'. Use dot-notation for nested custom fields (e.g., 'custom.field_name') - unset: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="unset") - ) + unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) # Map of field names to new values. Supported fields: 'text', 'attachments', 'custom', 'mentioned_user_ids', 'status'. Use dot-notation for nested custom fields (e.g., 'custom.field_name') - set: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="set") - ) + set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdateCommentPartialResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) - + comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) @dataclass class UpdateCommentRequest(DataClassJsonMixin): # Updated text content of the comment - comment: str | None = dc_field( - default=None, metadata=dc_config(field_name="comment") - ) + comment: str | None = dc_field(default=None, metadata=dc_config(field_name="comment")) # Whether to copy custom data to the notification activity (only applies when handle_mention_notifications creates notifications) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field( - default=None, metadata=dc_config(field_name="copy_custom_to_notification") - ) + copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) # If true, forces moderation to run for server-side requests. By default, server-side requests skip moderation. Client-side requests always run moderation regardless of this field. - force_moderation: bool | None = dc_field( - default=None, metadata=dc_config(field_name="force_moderation") - ) + force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) # If true, creates notification activities for newly mentioned users and deletes notifications for users no longer mentioned - handle_mention_notifications: bool | None = dc_field( - default=None, metadata=dc_config(field_name="handle_mention_notifications") - ) + handle_mention_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="handle_mention_notifications")) # Whether to skip URL enrichment for this comment - skip_enrich_url: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_enrich_url") - ) - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Updated media attachments for the comment. Providing this field will replace all existing attachments. - attachments: "list[Attachment] | None" = dc_field( - default=None, metadata=dc_config(field_name="attachments") - ) + attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) # List of user IDs mentioned in the comment - mentioned_user_ids: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="mentioned_user_ids") - ) + mentioned_user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_user_ids")) # Updated custom data for the comment - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdateCommentResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) - + comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) @dataclass class UpdateExternalStorageRequest(DataClassJsonMixin): @@ -28619,20 +14594,13 @@ class UpdateExternalStorageRequest(DataClassJsonMixin): bucket: str = dc_field(metadata=dc_config(field_name="bucket")) # The type of storage to use storage_type: str = dc_field(metadata=dc_config(field_name="storage_type")) - gcs_credentials: str | None = dc_field( - default=None, metadata=dc_config(field_name="gcs_credentials") - ) + gcs_credentials: str | None = dc_field(default=None, metadata=dc_config(field_name="gcs_credentials")) # The path prefix to use for storing files path: str | None = dc_field(default=None, metadata=dc_config(field_name="path")) # Config for creating Amazon S3 storage. - aws_s3: "S3Request | None" = dc_field( - default=None, metadata=dc_config(field_name="aws_s3") - ) + aws_s3: 'S3Request | None' = dc_field(default=None, metadata=dc_config(field_name="aws_s3")) # Config for creating Azure Blob Storage storage - azure_blob: "AzureRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="azure_blob") - ) - + azure_blob: 'AzureRequest | None' = dc_field(default=None, metadata=dc_config(field_name="azure_blob")) @dataclass class UpdateExternalStorageResponse(DataClassJsonMixin): @@ -28643,51 +14611,30 @@ class UpdateExternalStorageResponse(DataClassJsonMixin): path: str = dc_field(metadata=dc_config(field_name="path")) type: str = dc_field(metadata=dc_config(field_name="type")) - @dataclass class UpdateFeedGroupRequest(DataClassJsonMixin): - default_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="default_visibility") - ) + # Role new followers of feeds in this group are given. Either a built-in (feed_follower, feed_member_viewer) or any role your app has defined. Empty means feed_follower. Applied when the follow is accepted, so a follow that starts pending picks it up on approval + default_follower_role: str | None = dc_field(default=None, metadata=dc_config(field_name="default_follower_role")) + # Default visibility for the feed group. One of: public, visible, followers, members, private + default_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="default_visibility")) # Configuration for activity processors - activity_processors: "list[ActivityProcessorConfig] | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_processors") - ) + activity_processors: 'list[ActivityProcessorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_processors")) # Configuration for activity selectors - activity_selectors: "list[ActivitySelectorConfig] | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_selectors") - ) - activity_filter: "ActivityFilterConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_filter") - ) - aggregation: "AggregationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="aggregation") - ) + activity_selectors: 'list[ActivitySelectorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_selectors")) + activity_filter: 'ActivityFilterConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_filter")) + activity_processing: 'ActivityProcessingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_processing")) + aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) # Custom data for the feed group - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - notification: "NotificationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="notification") - ) - push_notification: "PushNotificationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="push_notification") - ) - ranking: "RankingConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ranking") - ) - stories: "StoriesConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="stories") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + notification: 'NotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="notification")) + push_notification: 'PushNotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="push_notification")) + ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) + stories: 'StoriesConfig | None' = dc_field(default=None, metadata=dc_config(field_name="stories")) @dataclass class UpdateFeedGroupResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_group: "FeedGroupResponse" = dc_field( - metadata=dc_config(field_name="feed_group") - ) - + feed_group: 'FeedGroupResponse' = dc_field(metadata=dc_config(field_name="feed_group")) @dataclass class UpdateFeedMembersRequest(DataClassJsonMixin): @@ -28697,96 +14644,60 @@ class UpdateFeedMembersRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # List of members to upsert, remove, or set - members: "list[FeedMemberRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="members") - ) - + members: 'list[FeedMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) @dataclass class UpdateFeedMembersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - added: "list[FeedMemberResponse]" = dc_field(metadata=dc_config(field_name="added")) + added: 'list[FeedMemberResponse]' = dc_field(metadata=dc_config(field_name="added")) removed_ids: list[str] = dc_field(metadata=dc_config(field_name="removed_ids")) - updated: "list[FeedMemberResponse]" = dc_field( - metadata=dc_config(field_name="updated") - ) - + updated: 'list[FeedMemberResponse]' = dc_field(metadata=dc_config(field_name="updated")) @dataclass class UpdateFeedRequest(DataClassJsonMixin): # If true, removes the geographic location from the feed - clear_location: bool | None = dc_field( - default=None, metadata=dc_config(field_name="clear_location") - ) + clear_location: bool | None = dc_field(default=None, metadata=dc_config(field_name="clear_location")) # ID of the new feed creator (owner) - created_by_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="created_by_id") - ) + created_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_id")) # Description of the feed - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) # If true, enriches the feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enrich_own_fields") - ) + enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) # Name of the feed name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # Tags used for filtering feeds - filter_tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="filter_tags") - ) + filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) # Custom data for the feed - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - location: "Location | None" = dc_field( - default=None, metadata=dc_config(field_name="location") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) @dataclass class UpdateFeedResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed: "FeedResponse" = dc_field(metadata=dc_config(field_name="feed")) - + feed: 'FeedResponse' = dc_field(metadata=dc_config(field_name="feed")) @dataclass class UpdateFeedViewRequest(DataClassJsonMixin): # Updated configuration for selecting activities - activity_selectors: "list[ActivitySelectorConfig] | None" = dc_field( - default=None, metadata=dc_config(field_name="activity_selectors") - ) - aggregation: "AggregationConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="aggregation") - ) - ranking: "RankingConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ranking") - ) - + activity_selectors: 'list[ActivitySelectorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_selectors")) + aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) + ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) @dataclass class UpdateFeedViewResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_view: "FeedViewResponse" = dc_field(metadata=dc_config(field_name="feed_view")) - + feed_view: 'FeedViewResponse' = dc_field(metadata=dc_config(field_name="feed_view")) @dataclass class UpdateFeedVisibilityRequest(DataClassJsonMixin): # Updated permission grants for each role - grants: "dict[str, list[str]] | None" = dc_field( - default=None, metadata=dc_config(field_name="grants") - ) - + grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) @dataclass class UpdateFeedVisibilityResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_visibility: "FeedVisibilityResponse" = dc_field( - metadata=dc_config(field_name="feed_visibility") - ) - + feed_visibility: 'FeedVisibilityResponse' = dc_field(metadata=dc_config(field_name="feed_visibility")) @dataclass class UpdateFollowRequest(DataClassJsonMixin): @@ -28795,187 +14706,109 @@ class UpdateFollowRequest(DataClassJsonMixin): # Fully qualified ID of the target feed target: str = dc_field(metadata=dc_config(field_name="target")) # Maximum number of historical activities to copy from the target feed when the follow is first materialized. Not set = unlimited (default). 0 = copy nothing. Range: 0-1000. - activity_copy_limit: int | None = dc_field( - default=None, metadata=dc_config(field_name="activity_copy_limit") - ) + activity_copy_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="activity_copy_limit")) # Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field( - default=None, metadata=dc_config(field_name="copy_custom_to_notification") - ) + copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) # Whether to create a notification activity for this follow - create_notification_activity: bool | None = dc_field( - default=None, metadata=dc_config(field_name="create_notification_activity") - ) + create_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_notification_activity")) # If true, auto-creates users referenced by the source and target FIDs when they don't already exist. Server-side only. Defaults to false. Use directly on single follow endpoints (Follow, GetOrCreateFollow). On batch endpoints (FollowBatch, GetOrCreateFollows), use the top-level create_users field; per-item follows[i].create_users is rejected. - create_users: bool | None = dc_field( - default=None, metadata=dc_config(field_name="create_users") - ) + create_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_users")) # If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enrich_own_fields") - ) - follower_role: str | None = dc_field( - default=None, metadata=dc_config(field_name="follower_role") - ) + enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) + # Optional role for the follower in the follow relationship. Server-side only. Either a built-in ('feed_follower' (the default) or 'feed_member_viewer') or any role your app has defined; grants are not inspected. + follower_role: str | None = dc_field(default=None, metadata=dc_config(field_name="follower_role")) # Push preference for the follow relationship - push_preference: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_preference") - ) + push_preference: str | None = dc_field(default=None, metadata=dc_config(field_name="push_preference")) # Whether to skip push for this follow - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) # Status of the follow relationship. One of: accepted, pending, rejected status: str | None = dc_field(default=None, metadata=dc_config(field_name="status")) # Custom data for the follow relationship - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class UpdateFollowResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) - + follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) @dataclass class UpdateLiveLocationRequest(DataClassJsonMixin): # Live location ID message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # Time when the live location expires - end_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="end_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + end_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="end_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Latitude coordinate - latitude: float | None = dc_field( - default=None, metadata=dc_config(field_name="latitude") - ) + latitude: float | None = dc_field(default=None, metadata=dc_config(field_name="latitude")) # Longitude coordinate - longitude: float | None = dc_field( - default=None, metadata=dc_config(field_name="longitude") - ) - + longitude: float | None = dc_field(default=None, metadata=dc_config(field_name="longitude")) @dataclass class UpdateMemberPartialRequest(DataClassJsonMixin): - unset: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="unset") - ) - set: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="set") - ) - + unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) + set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) @dataclass class UpdateMemberPartialResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - channel_member: "ChannelMemberResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel_member") - ) - + channel_member: 'ChannelMemberResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel_member")) @dataclass class UpdateMembershipLevelRequest(DataClassJsonMixin): # Optional description of the membership level - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) # Display name for the membership level name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # Priority level (higher numbers = higher priority) - priority: int | None = dc_field( - default=None, metadata=dc_config(field_name="priority") - ) + priority: int | None = dc_field(default=None, metadata=dc_config(field_name="priority")) # Activity tags this membership level gives access to - tags: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="tags") - ) + tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="tags")) # Custom data for the membership level - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class UpdateMembershipLevelResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - membership_level: "MembershipLevelResponse" = dc_field( - metadata=dc_config(field_name="membership_level") - ) - + membership_level: 'MembershipLevelResponse' = dc_field(metadata=dc_config(field_name="membership_level")) @dataclass class UpdateMessagePartialRequest(DataClassJsonMixin): # Skip enriching the URL in the message - skip_enrich_url: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_enrich_url") - ) - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Array of field names to unset - unset: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="unset") - ) + unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) # Sets new field values - set: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="set") - ) + set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdateMessagePartialResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) # Pending message metadata - pending_message_metadata: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="pending_message_metadata") - ) - + pending_message_metadata: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="pending_message_metadata")) @dataclass class UpdateMessageRequest(DataClassJsonMixin): # Message data for creating or updating a message - message: "MessageRequest" = dc_field(metadata=dc_config(field_name="message")) + message: 'MessageRequest' = dc_field(metadata=dc_config(field_name="message")) # Skip enrich URL - skip_enrich_url: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_enrich_url") - ) - skip_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="skip_push") - ) - + skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) + skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) @dataclass class UpdateMessageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) - pending_message_metadata: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="pending_message_metadata") - ) - + message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) + pending_message_metadata: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="pending_message_metadata")) @dataclass class UpdatePollOptionRequest(DataClassJsonMixin): @@ -28983,37 +14816,21 @@ class UpdatePollOptionRequest(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) # Option text text: str = dc_field(metadata=dc_config(field_name="text")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Custom data for this object - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdatePollPartialRequest(DataClassJsonMixin): - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Array of field names to unset - unset: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="unset") - ) + unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) # Sets new field values - set: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="set") - ) + set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdatePollRequest(DataClassJsonMixin): @@ -29022,49 +14839,26 @@ class UpdatePollRequest(DataClassJsonMixin): # Poll name name: str = dc_field(metadata=dc_config(field_name="name")) # Allow answers - allow_answers: bool | None = dc_field( - default=None, metadata=dc_config(field_name="allow_answers") - ) + allow_answers: bool | None = dc_field(default=None, metadata=dc_config(field_name="allow_answers")) # Allow user suggested options - allow_user_suggested_options: bool | None = dc_field( - default=None, metadata=dc_config(field_name="allow_user_suggested_options") - ) + allow_user_suggested_options: bool | None = dc_field(default=None, metadata=dc_config(field_name="allow_user_suggested_options")) # Poll description - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) # Enforce unique vote - enforce_unique_vote: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enforce_unique_vote") - ) + enforce_unique_vote: bool | None = dc_field(default=None, metadata=dc_config(field_name="enforce_unique_vote")) # Is closed - is_closed: bool | None = dc_field( - default=None, metadata=dc_config(field_name="is_closed") - ) + is_closed: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_closed")) # Max votes allowed - max_votes_allowed: int | None = dc_field( - default=None, metadata=dc_config(field_name="max_votes_allowed") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + max_votes_allowed: int | None = dc_field(default=None, metadata=dc_config(field_name="max_votes_allowed")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Voting visibility - voting_visibility: str | None = dc_field( - default=None, metadata=dc_config(field_name="voting_visibility") - ) + voting_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="voting_visibility")) # Poll options - options: "list[PollOptionRequest] | None" = dc_field( - default=None, metadata=dc_config(field_name="options") - ) + options: 'list[PollOptionRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="options")) # Custom data for this object - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdatePredefinedFilterRequest(DataClassJsonMixin): @@ -29073,72 +14867,37 @@ class UpdatePredefinedFilterRequest(DataClassJsonMixin): # Filter to apply to the query filter: dict[str, object] = dc_field(metadata=dc_config(field_name="filter")) # The description of the predefined filter - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) - sort: "list[dict[str, object]] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) - + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + sort: 'list[dict[str, object]] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) @dataclass class UpdatePredefinedFilterResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - predefined_filter: "PredefinedFilterResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="predefined_filter") - ) - + predefined_filter: 'PredefinedFilterResponse | None' = dc_field(default=None, metadata=dc_config(field_name="predefined_filter")) @dataclass class UpdateQueueRequest(DataClassJsonMixin): - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - sort: "list[dict[str, object]] | None" = dc_field( - default=None, metadata=dc_config(field_name="sort") - ) - filters: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filters") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + sort: 'list[dict[str, object]] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + filters: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filters")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdateReminderRequest(DataClassJsonMixin): - remind_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="remind_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + remind_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="remind_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdateReminderResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - reminder: "ReminderResponseData" = dc_field( - metadata=dc_config(field_name="reminder") - ) - + reminder: 'ReminderResponseData' = dc_field(metadata=dc_config(field_name="reminder")) @dataclass class UpdateSIPInboundRoutingRuleRequest(DataClassJsonMixin): @@ -29147,43 +14906,25 @@ class UpdateSIPInboundRoutingRuleRequest(DataClassJsonMixin): # List of SIP trunk IDs trunk_ids: list[str] = dc_field(metadata=dc_config(field_name="trunk_ids")) # Configuration for SIP caller settings - caller_configs: "SIPCallerConfigsRequest" = dc_field( - metadata=dc_config(field_name="caller_configs") - ) + caller_configs: 'SIPCallerConfigsRequest' = dc_field(metadata=dc_config(field_name="caller_configs")) # List of called numbers - called_numbers: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="called_numbers") - ) + called_numbers: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="called_numbers")) # List of caller numbers (optional) - caller_numbers: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="caller_numbers") - ) + caller_numbers: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="caller_numbers")) # Configuration for SIP call settings - call_configs: "SIPCallConfigsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="call_configs") - ) + call_configs: 'SIPCallConfigsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="call_configs")) # Configuration for direct routing rule calls - direct_routing_configs: "SIPDirectRoutingRuleCallConfigsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="direct_routing_configs") - ) + direct_routing_configs: 'SIPDirectRoutingRuleCallConfigsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="direct_routing_configs")) # Configuration for PIN protection settings - pin_protection_configs: "SIPPinProtectionConfigsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="pin_protection_configs") - ) + pin_protection_configs: 'SIPPinProtectionConfigsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="pin_protection_configs")) # Configuration for PIN routing rule calls - pin_routing_configs: "SIPInboundRoutingRulePinConfigsRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="pin_routing_configs") - ) - + pin_routing_configs: 'SIPInboundRoutingRulePinConfigsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="pin_routing_configs")) @dataclass class UpdateSIPInboundRoutingRuleResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # SIP Inbound Routing Rule response - sip_inbound_routing_rule: "SIPInboundRoutingRuleResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="sip_inbound_routing_rule") - ) - + sip_inbound_routing_rule: 'SIPInboundRoutingRuleResponse | None' = dc_field(default=None, metadata=dc_config(field_name="sip_inbound_routing_rule")) @dataclass class UpdateSIPTrunkRequest(DataClassJsonMixin): @@ -29192,178 +14933,111 @@ class UpdateSIPTrunkRequest(DataClassJsonMixin): # Phone numbers associated with this SIP trunk numbers: list[str] = dc_field(metadata=dc_config(field_name="numbers")) # Optional password for SIP trunk authentication - password: str | None = dc_field( - default=None, metadata=dc_config(field_name="password") - ) + password: str | None = dc_field(default=None, metadata=dc_config(field_name="password")) # Optional list of allowed IPv4/IPv6 addresses or CIDR blocks - allowed_ips: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="allowed_ips") - ) - + allowed_ips: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_ips")) @dataclass class UpdateSIPTrunkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # SIP trunk information - sip_trunk: "SIPTrunkResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="sip_trunk") - ) - + sip_trunk: 'SIPTrunkResponse | None' = dc_field(default=None, metadata=dc_config(field_name="sip_trunk")) @dataclass class UpdateSegmentRequest(DataClassJsonMixin): # The description of the segment (max 256 characters) - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) # The name of the segment (max 128 characters) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # Filter to apply to the query - filter: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="filter") - ) - + filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) @dataclass class UpdateSegmentResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - segment: "SegmentResponse" = dc_field(metadata=dc_config(field_name="segment")) - + segment: 'SegmentResponse' = dc_field(metadata=dc_config(field_name="segment")) @dataclass class UpdateThreadPartialRequest(DataClassJsonMixin): - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Array of field names to unset - unset: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="unset") - ) + unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) # Sets new field values - set: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="set") - ) + set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpdateThreadPartialResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - thread: "ThreadResponse" = dc_field(metadata=dc_config(field_name="thread")) - + thread: 'ThreadResponse' = dc_field(metadata=dc_config(field_name="thread")) @dataclass class UpdateUserGroupRequest(DataClassJsonMixin): # The new description for the group - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) # The new name of the user group name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - team_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="team_id") - ) - + team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="team_id")) @dataclass class UpdateUserGroupResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - user_group: "UserGroupResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user_group") - ) - + user_group: 'UserGroupResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) @dataclass class UpdateUserPartialRequest(DataClassJsonMixin): # User ID to update id: str = dc_field(metadata=dc_config(field_name="id")) - unset: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="unset") - ) - set: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="set") - ) - + unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) + set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) @dataclass class UpdateUserPermissionsRequest(DataClassJsonMixin): user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - grant_permissions: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="grant_permissions") - ) - revoke_permissions: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="revoke_permissions") - ) - + grant_permissions: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="grant_permissions")) + revoke_permissions: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="revoke_permissions")) @dataclass class UpdateUserPermissionsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class UpdateUsersPartialRequest(DataClassJsonMixin): - users: "list[UpdateUserPartialRequest]" = dc_field( - metadata=dc_config(field_name="users") - ) - + users: 'list[UpdateUserPartialRequest]' = dc_field(metadata=dc_config(field_name="users")) @dataclass class UpdateUsersRequest(DataClassJsonMixin): # Object containing users - users: "dict[str, UserRequest]" = dc_field(metadata=dc_config(field_name="users")) - + users: 'dict[str, UserRequest]' = dc_field(metadata=dc_config(field_name="users")) @dataclass class UpdateUsersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - membership_deletion_task_id: str = dc_field( - metadata=dc_config(field_name="membership_deletion_task_id") - ) + membership_deletion_task_id: str = dc_field(metadata=dc_config(field_name="membership_deletion_task_id")) # Object containing users - users: "dict[str, FullUserResponse]" = dc_field( - metadata=dc_config(field_name="users") - ) - + users: 'dict[str, FullUserResponse]' = dc_field(metadata=dc_config(field_name="users")) @dataclass class UpdatedCallPermissionsEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The capabilities of the current user - own_capabilities: "list[OwnCapability]" = dc_field( - metadata=dc_config(field_name="own_capabilities") - ) + own_capabilities: 'list[OwnCapability]' = dc_field(metadata=dc_config(field_name="own_capabilities")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.permissions_updated" in this case - type: str = dc_field( - default="call.permissions_updated", metadata=dc_config(field_name="type") - ) - + type: str = dc_field(default="call.permissions_updated", metadata=dc_config(field_name="type")) @dataclass class UploadChannelFileRequest(DataClassJsonMixin): # file field file: str | None = dc_field(default=None, metadata=dc_config(field_name="file")) - user: "OnlyUserID | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'OnlyUserID | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UploadChannelFileResponse(DataClassJsonMixin): @@ -29371,61 +15045,37 @@ class UploadChannelFileResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # URL to the uploaded asset. Should be used to put to `asset_url` attachment field file: str | None = dc_field(default=None, metadata=dc_config(field_name="file")) - moderation_action: str | None = dc_field( - default=None, metadata=dc_config(field_name="moderation_action") - ) + moderation_action: str | None = dc_field(default=None, metadata=dc_config(field_name="moderation_action")) # URL of the file thumbnail for supported file formats. Should be put to `thumb_url` attachment field - thumb_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="thumb_url") - ) - + thumb_url: str | None = dc_field(default=None, metadata=dc_config(field_name="thumb_url")) @dataclass class UploadChannelRequest(DataClassJsonMixin): file: str | None = dc_field(default=None, metadata=dc_config(field_name="file")) # field with JSON-encoded array of image size configurations - upload_sizes: "list[ImageSize] | None" = dc_field( - default=None, metadata=dc_config(field_name="upload_sizes") - ) - user: "OnlyUserID | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + upload_sizes: 'list[ImageSize] | None' = dc_field(default=None, metadata=dc_config(field_name="upload_sizes")) + user: 'OnlyUserID | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UploadChannelResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) file: str | None = dc_field(default=None, metadata=dc_config(field_name="file")) - moderation_action: str | None = dc_field( - default=None, metadata=dc_config(field_name="moderation_action") - ) - thumb_url: str | None = dc_field( - default=None, metadata=dc_config(field_name="thumb_url") - ) + moderation_action: str | None = dc_field(default=None, metadata=dc_config(field_name="moderation_action")) + thumb_url: str | None = dc_field(default=None, metadata=dc_config(field_name="thumb_url")) # Array of image size configurations - upload_sizes: "list[ImageSize] | None" = dc_field( - default=None, metadata=dc_config(field_name="upload_sizes") - ) - + upload_sizes: 'list[ImageSize] | None' = dc_field(default=None, metadata=dc_config(field_name="upload_sizes")) @dataclass class UpsertActionConfigItem(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) order: int = dc_field(metadata=dc_config(field_name="order")) - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) icon: str | None = dc_field(default=None, metadata=dc_config(field_name="icon")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) - queue_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="queue_type") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + queue_type: str | None = dc_field(default=None, metadata=dc_config(field_name="queue_type")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class UpsertActionConfigRequest(DataClassJsonMixin): @@ -29436,89 +15086,55 @@ class UpsertActionConfigRequest(DataClassJsonMixin): # Display order in the dashboard (0–100, lower numbers shown first) order: int = dc_field(metadata=dc_config(field_name="order")) # Human-readable label for the dashboard button - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) # Icon identifier for the dashboard button icon: str | None = dc_field(default=None, metadata=dc_config(field_name="icon")) # UUID of an existing action config to update; omit to create a new record id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # Queue this config belongs to; null means the default queue - queue_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="queue_type") - ) + queue_type: str | None = dc_field(default=None, metadata=dc_config(field_name="queue_type")) # Optional user ID to associate with the audit log entry - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Action-specific parameters passed to the action handler - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpsertActionConfigResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Configuration for a moderation action - action_config: "ModerationActionConfigResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="action_config") - ) - + action_config: 'ModerationActionConfigResponse | None' = dc_field(default=None, metadata=dc_config(field_name="action_config")) @dataclass class UpsertActivitiesRequest(DataClassJsonMixin): # List of activities to create or update - activities: "list[ActivityRequest]" = dc_field( - metadata=dc_config(field_name="activities") - ) + activities: 'list[ActivityRequest]' = dc_field(metadata=dc_config(field_name="activities")) # Server-side only. If true, auto-creates users referenced by activity user_id values that don't already exist. Default: false. - create_users: bool | None = dc_field( - default=None, metadata=dc_config(field_name="create_users") - ) + create_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_users")) # If true, enriches the activities' current_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enrich_own_fields") - ) + enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) # If true, forces moderation to run for server-side requests. By default, server-side requests skip moderation. Client-side requests always run moderation regardless of this field. - force_moderation: bool | None = dc_field( - default=None, metadata=dc_config(field_name="force_moderation") - ) - + force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) @dataclass class UpsertActivitiesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of created or updated activities - activities: "list[ActivityResponse]" = dc_field( - metadata=dc_config(field_name="activities") - ) + activities: 'list[ActivityResponse]' = dc_field(metadata=dc_config(field_name="activities")) # Total number of mention notification activities created for mentioned users across all activities - mention_notifications_created: int | None = dc_field( - default=None, metadata=dc_config(field_name="mention_notifications_created") - ) - + mention_notifications_created: int | None = dc_field(default=None, metadata=dc_config(field_name="mention_notifications_created")) @dataclass class UpsertCollectionsRequest(DataClassJsonMixin): # List of collections to upsert (insert if new, update if existing) - collections: "list[CollectionRequest]" = dc_field( - metadata=dc_config(field_name="collections") - ) - + collections: 'list[CollectionRequest]' = dc_field(metadata=dc_config(field_name="collections")) @dataclass class UpsertCollectionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of upserted collections - collections: "list[CollectionResponse]" = dc_field( - metadata=dc_config(field_name="collections") - ) - + collections: 'list[CollectionResponse]' = dc_field(metadata=dc_config(field_name="collections")) @dataclass class UpsertConfigRequest(DataClassJsonMixin): @@ -29529,108 +15145,55 @@ class UpsertConfigRequest(DataClassJsonMixin): # Team associated with the configuration team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Optional user ID to associate with the audit log entry - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - ai_audio_config: "AIAudioConfigRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="ai_audio_config") - ) - ai_image_config: "AIImageConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ai_image_config") - ) - ai_text_config: "AITextConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ai_text_config") - ) - ai_video_config: "AIVideoConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="ai_video_config") - ) - automod_platform_circumvention_config: "AutomodPlatformCircumventionConfig | None" = dc_field( - default=None, - metadata=dc_config(field_name="automod_platform_circumvention_config"), - ) - automod_semantic_filters_config: "AutomodSemanticFiltersConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="automod_semantic_filters_config") - ) - automod_toxicity_config: "AutomodToxicityConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="automod_toxicity_config") - ) - aws_rekognition_config: "AIImageConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="aws_rekognition_config") - ) - block_list_config: "BlockListConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="block_list_config") - ) - bodyguard_config: "AITextConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="bodyguard_config") - ) - flood_config: "FloodConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="flood_config") - ) - google_vision_config: "GoogleVisionConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="google_vision_config") - ) - llm_config: "LLMConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="llm_config") - ) - rule_builder_config: "RuleBuilderConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="rule_builder_config") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + ai_audio_config: 'AIAudioConfigRequest | None' = dc_field(default=None, metadata=dc_config(field_name="ai_audio_config")) + ai_image_config: 'AIImageConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ai_image_config")) + ai_text_config: 'AITextConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ai_text_config")) + ai_video_config: 'AIVideoConfigRequest | None' = dc_field(default=None, metadata=dc_config(field_name="ai_video_config")) + automod_platform_circumvention_config: 'AutomodPlatformCircumventionConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_platform_circumvention_config")) + automod_semantic_filters_config: 'AutomodSemanticFiltersConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_semantic_filters_config")) + automod_toxicity_config: 'AutomodToxicityConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_toxicity_config")) + aws_rekognition_config: 'AIImageConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aws_rekognition_config")) + block_list_config: 'BlockListConfig | None' = dc_field(default=None, metadata=dc_config(field_name="block_list_config")) + bodyguard_config: 'AITextConfig | None' = dc_field(default=None, metadata=dc_config(field_name="bodyguard_config")) + flood_config: 'FloodConfig | None' = dc_field(default=None, metadata=dc_config(field_name="flood_config")) + google_vision_config: 'GoogleVisionConfig | None' = dc_field(default=None, metadata=dc_config(field_name="google_vision_config")) + llm_config: 'LLMConfig | None' = dc_field(default=None, metadata=dc_config(field_name="llm_config")) + rule_builder_config: 'RuleBuilderConfig | None' = dc_field(default=None, metadata=dc_config(field_name="rule_builder_config")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - velocity_filter_config: "VelocityFilterConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="velocity_filter_config") - ) - video_call_rule_config: "VideoCallRuleConfig | None" = dc_field( - default=None, metadata=dc_config(field_name="video_call_rule_config") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + velocity_filter_config: 'VelocityFilterConfig | None' = dc_field(default=None, metadata=dc_config(field_name="velocity_filter_config")) + video_call_rule_config: 'VideoCallRuleConfig | None' = dc_field(default=None, metadata=dc_config(field_name="video_call_rule_config")) @dataclass class UpsertConfigResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - config: "ConfigResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="config") - ) - + config: 'ConfigResponse | None' = dc_field(default=None, metadata=dc_config(field_name="config")) @dataclass class UpsertExternalStorageAWSS3Request(DataClassJsonMixin): bucket: str = dc_field(metadata=dc_config(field_name="bucket")) region: str = dc_field(metadata=dc_config(field_name="region")) role_arn: str = dc_field(metadata=dc_config(field_name="role_arn")) - path_prefix: str | None = dc_field( - default=None, metadata=dc_config(field_name="path_prefix") - ) - + path_prefix: str | None = dc_field(default=None, metadata=dc_config(field_name="path_prefix")) @dataclass class UpsertExternalStorageGCSRequest(DataClassJsonMixin): bucket: str = dc_field(metadata=dc_config(field_name="bucket")) credentials: str = dc_field(metadata=dc_config(field_name="credentials")) - path_prefix: str | None = dc_field( - default=None, metadata=dc_config(field_name="path_prefix") - ) - + path_prefix: str | None = dc_field(default=None, metadata=dc_config(field_name="path_prefix")) @dataclass class UpsertExternalStorageRequest(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) - aws_s3: "UpsertExternalStorageAWSS3Request | None" = dc_field( - default=None, metadata=dc_config(field_name="aws_s3") - ) - gcs: "UpsertExternalStorageGCSRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="gcs") - ) - + aws_s3: 'UpsertExternalStorageAWSS3Request | None' = dc_field(default=None, metadata=dc_config(field_name="aws_s3")) + gcs: 'UpsertExternalStorageGCSRequest | None' = dc_field(default=None, metadata=dc_config(field_name="gcs")) @dataclass class UpsertExternalStorageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class UpsertModerationRuleRequest(DataClassJsonMixin): # Unique rule name @@ -29638,166 +15201,96 @@ class UpsertModerationRuleRequest(DataClassJsonMixin): # Type of rule: user, content, call, or flood rule_type: str = dc_field(metadata=dc_config(field_name="rule_type")) # Duration before rule can trigger again (e.g. 24h, 7d) - cooldown_period: str | None = dc_field( - default=None, metadata=dc_config(field_name="cooldown_period") - ) + cooldown_period: str | None = dc_field(default=None, metadata=dc_config(field_name="cooldown_period")) # Optional description of the rule - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) # Whether the rule is active - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) # Logical operator between conditions/groups: AND or OR logic: str | None = dc_field(default=None, metadata=dc_config(field_name="logic")) # Team scope for the rule team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Optional user ID to associate with the audit log entry - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) # Escalation sequences for call rules - action_sequences: "list[CallRuleActionSequence] | None" = dc_field( - default=None, metadata=dc_config(field_name="action_sequences") - ) + action_sequences: 'list[CallRuleActionSequence] | None' = dc_field(default=None, metadata=dc_config(field_name="action_sequences")) # Flat list of conditions (legacy) - conditions: "list[RuleBuilderCondition] | None" = dc_field( - default=None, metadata=dc_config(field_name="conditions") - ) + conditions: 'list[RuleBuilderCondition] | None' = dc_field(default=None, metadata=dc_config(field_name="conditions")) # List of config keys this rule applies to - config_keys: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="config_keys") - ) + config_keys: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="config_keys")) # Nested condition groups - groups: "list[RuleBuilderConditionGroup] | None" = dc_field( - default=None, metadata=dc_config(field_name="groups") - ) - action: "RuleBuilderAction | None" = dc_field( - default=None, metadata=dc_config(field_name="action") - ) + groups: 'list[RuleBuilderConditionGroup] | None' = dc_field(default=None, metadata=dc_config(field_name="groups")) + action: 'RuleBuilderAction | None' = dc_field(default=None, metadata=dc_config(field_name="action")) # User request object - user: "UserRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UpsertModerationRuleResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - rule: "ModerationRuleV2Response | None" = dc_field( - default=None, metadata=dc_config(field_name="rule") - ) - + rule: 'ModerationRuleV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="rule")) @dataclass class UpsertModerationTemplateRequest(DataClassJsonMixin): # Name of the moderation template name: str = dc_field(metadata=dc_config(field_name="name")) # Configuration for a feeds moderation template - config: "FeedsModerationTemplateConfigPayload" = dc_field( - metadata=dc_config(field_name="config") - ) - + config: 'FeedsModerationTemplateConfigPayload' = dc_field(metadata=dc_config(field_name="config")) @dataclass class UpsertModerationTemplateResponse(DataClassJsonMixin): # When the template was created - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) duration: str = dc_field(metadata=dc_config(field_name="duration")) # Name of the moderation template name: str = dc_field(metadata=dc_config(field_name="name")) # When the template was last updated - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Configuration for a feeds moderation template - config: "FeedsModerationTemplateConfigPayload | None" = dc_field( - default=None, metadata=dc_config(field_name="config") - ) - + config: 'FeedsModerationTemplateConfigPayload | None' = dc_field(default=None, metadata=dc_config(field_name="config")) @dataclass class UpsertPushPreferencesRequest(DataClassJsonMixin): # A list of push preferences for channels, calls, or the user. - preferences: "list[PushPreferenceInput]" = dc_field( - metadata=dc_config(field_name="preferences") - ) - + preferences: 'list[PushPreferenceInput]' = dc_field(metadata=dc_config(field_name="preferences")) @dataclass class UpsertPushPreferencesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # The channel specific push notification preferences, only returned for channels you've edited. - user_channel_preferences: "dict[str, dict[str, ChannelPushPreferencesResponse]]" = ( - dc_field(metadata=dc_config(field_name="user_channel_preferences")) - ) + user_channel_preferences: 'dict[str, dict[str, ChannelPushPreferencesResponse]]' = dc_field(metadata=dc_config(field_name="user_channel_preferences")) # The user preferences, always returned regardless if you edited it - user_preferences: "dict[str, PushPreferencesResponse]" = dc_field( - metadata=dc_config(field_name="user_preferences") - ) - + user_preferences: 'dict[str, PushPreferencesResponse]' = dc_field(metadata=dc_config(field_name="user_preferences")) @dataclass class UpsertPushProviderRequest(DataClassJsonMixin): - push_provider: "PushProviderRequest | None" = dc_field( - default=None, metadata=dc_config(field_name="push_provider") - ) - + push_provider: 'PushProviderRequest | None' = dc_field(default=None, metadata=dc_config(field_name="push_provider")) @dataclass class UpsertPushProviderResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - push_provider: "PushProviderResponse" = dc_field( - metadata=dc_config(field_name="push_provider") - ) - + push_provider: 'PushProviderResponse' = dc_field(metadata=dc_config(field_name="push_provider")) @dataclass class UpsertPushTemplateRequest(DataClassJsonMixin): # Event type. One of: message.new, message.updated, reaction.new, notification.reminder_due, feeds.activity.added, feeds.comment.added, feeds.activity.reaction.added, feeds.comment.reaction.added, feeds.follow.created, feeds.notification_feed.updated event_type: str = dc_field(metadata=dc_config(field_name="event_type")) # Push provider type. One of: firebase, apn, huawei, xiaomi - push_provider_type: str = dc_field( - metadata=dc_config(field_name="push_provider_type") - ) + push_provider_type: str = dc_field(metadata=dc_config(field_name="push_provider_type")) # Whether to send push notification for this event - enable_push: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enable_push") - ) + enable_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="enable_push")) # Push provider name - push_provider_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="push_provider_name") - ) + push_provider_name: str | None = dc_field(default=None, metadata=dc_config(field_name="push_provider_name")) # Push template - template: str | None = dc_field( - default=None, metadata=dc_config(field_name="template") - ) - + template: str | None = dc_field(default=None, metadata=dc_config(field_name="template")) @dataclass class UpsertPushTemplateResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - template: "PushTemplateResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="template") - ) - + template: 'PushTemplateResponse | None' = dc_field(default=None, metadata=dc_config(field_name="template")) @dataclass class UpsertSetupSessionRequest(DataClassJsonMixin): @@ -29806,175 +15299,82 @@ class UpsertSetupSessionRequest(DataClassJsonMixin): # The status of the setup session. One of: in_progress, completed status: str = dc_field(metadata=dc_config(field_name="status")) # Per-step data keyed by step name (welcome, input, configure, live) - setup_data: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="setup_data") - ) - + setup_data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="setup_data")) @dataclass class UpsertSetupSessionResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - setup_session: "SetupSession | None" = dc_field( - default=None, metadata=dc_config(field_name="setup_session") - ) - + setup_session: 'SetupSession | None' = dc_field(default=None, metadata=dc_config(field_name="setup_session")) @dataclass class User(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) - data: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="data") - ) - + data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) @dataclass class UserBannedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.banned" in this case type: str = dc_field(default="user.banned", metadata=dc_config(field_name="type")) # The ID of the channel where the target user was banned - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel where the target user was banned - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel where the target user was banned cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) # The expiration date of the ban - expiration: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="expiration", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + expiration: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expiration", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The reason for the ban reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # ID of the review queue item (flagged message) that triggered the ban, if the ban was applied from the moderation review queue - review_queue_item_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="review_queue_item_id") - ) + review_queue_item_id: str | None = dc_field(default=None, metadata=dc_config(field_name="review_queue_item_id")) # Whether the user was shadow banned - shadow: bool | None = dc_field( - default=None, metadata=dc_config(field_name="shadow") - ) + shadow: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow")) # The team of the channel where the target user was banned team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - total_bans: int | None = dc_field( - default=None, metadata=dc_config(field_name="total_bans") - ) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - created_by: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) - + total_bans: int | None = dc_field(default=None, metadata=dc_config(field_name="total_bans")) + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + created_by: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) @dataclass class UserCreatedWithinParameters(DataClassJsonMixin): - max_age: str | None = dc_field( - default=None, metadata=dc_config(field_name="max_age") - ) - + max_age: str | None = dc_field(default=None, metadata=dc_config(field_name="max_age")) @dataclass class UserCustomEventRequest(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class UserCustomPropertyParameters(DataClassJsonMixin): - operator: str | None = dc_field( - default=None, metadata=dc_config(field_name="operator") - ) - property_key: str | None = dc_field( - default=None, metadata=dc_config(field_name="property_key") - ) - + operator: str | None = dc_field(default=None, metadata=dc_config(field_name="operator")) + property_key: str | None = dc_field(default=None, metadata=dc_config(field_name="property_key")) @dataclass class UserDeactivatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.deactivated" in this case - type: str = dc_field( - default="user.deactivated", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - created_by: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) - + type: str = dc_field(default="user.deactivated", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_by: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) @dataclass class UserDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The type of deletion that was used for the user's conversations. One of: hard, soft, pruning, (empty string) - delete_conversation: str = dc_field( - metadata=dc_config(field_name="delete_conversation") - ) + delete_conversation: str = dc_field(metadata=dc_config(field_name="delete_conversation")) # Whether the user's conversation channels were deleted - delete_conversation_channels: bool = dc_field( - metadata=dc_config(field_name="delete_conversation_channels") - ) + delete_conversation_channels: bool = dc_field(metadata=dc_config(field_name="delete_conversation_channels")) # The type of deletion that was used for the user's messages. One of: hard, soft, pruning, (empty string) delete_messages: str = dc_field(metadata=dc_config(field_name="delete_messages")) # The type of deletion that was used for the user. One of: hard, soft, pruning, (empty string) @@ -29982,38 +15382,21 @@ class UserDeletedEvent(DataClassJsonMixin): # Whether the user was hard deleted hard_delete: bool = dc_field(metadata=dc_config(field_name="hard_delete")) # Whether the user's messages were marked as deleted - mark_messages_deleted: bool = dc_field( - metadata=dc_config(field_name="mark_messages_deleted") - ) + mark_messages_deleted: bool = dc_field(metadata=dc_config(field_name="mark_messages_deleted")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.deleted" in this case type: str = dc_field(default="user.deleted", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class UserFeedbackReport(DataClassJsonMixin): unreported_count: int = dc_field(metadata=dc_config(field_name="unreported_count")) - count_by_rating: "dict[str, int]" = dc_field( - metadata=dc_config(field_name="count_by_rating") - ) - + count_by_rating: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="count_by_rating")) @dataclass class UserFeedbackReportResponse(DataClassJsonMixin): - daily: "list[DailyAggregateUserFeedbackReportResponse]" = dc_field( - metadata=dc_config(field_name="daily") - ) - + daily: 'list[DailyAggregateUserFeedbackReportResponse]' = dc_field(metadata=dc_config(field_name="daily")) @dataclass class UserFeedbackResponse(DataClassJsonMixin): @@ -30024,473 +15407,181 @@ class UserFeedbackResponse(DataClassJsonMixin): sdk_version: str = dc_field(metadata=dc_config(field_name="sdk_version")) session_id: str = dc_field(metadata=dc_config(field_name="session_id")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - platform: "PlatformDataResponse" = dc_field( - metadata=dc_config(field_name="platform") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + platform: 'PlatformDataResponse' = dc_field(metadata=dc_config(field_name="platform")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class UserFlaggedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The reason for the flag reason: str = dc_field(metadata=dc_config(field_name="reason")) # The total number of flags for the user total_flags: int = dc_field(metadata=dc_config(field_name="total_flags")) - user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.flagged" in this case type: str = dc_field(default="user.flagged", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Custom data - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - target_user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="target_user") - ) - + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + target_user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="target_user")) @dataclass class UserGroup(DataClassJsonMixin): app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) id: str = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - created_by: str | None = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) - team_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="team_id") - ) - members: "list[UserGroupMember] | None" = dc_field( - default=None, metadata=dc_config(field_name="members") - ) - + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_by: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by")) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="team_id")) + members: 'list[UserGroupMember] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) @dataclass class UserGroupCreatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "user_group.created" in this case - type: str = dc_field( - default="user_group.created", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - user_group: "UserGroup | None" = dc_field( - default=None, metadata=dc_config(field_name="user_group") - ) - + type: str = dc_field(default="user_group.created", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user_group: 'UserGroup | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) @dataclass class UserGroupDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "user_group.deleted" in this case - type: str = dc_field( - default="user_group.deleted", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - user_group: "UserGroup | None" = dc_field( - default=None, metadata=dc_config(field_name="user_group") - ) - + type: str = dc_field(default="user_group.deleted", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user_group: 'UserGroup | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) @dataclass class UserGroupMember(DataClassJsonMixin): app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) group_id: str = dc_field(metadata=dc_config(field_name="group_id")) is_admin: bool = dc_field(metadata=dc_config(field_name="is_admin")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - @dataclass class UserGroupMemberAddedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The user IDs that were added members: list[str] = dc_field(metadata=dc_config(field_name="members")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "user_group.member_added" in this case - type: str = dc_field( - default="user_group.member_added", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - user_group: "UserGroup | None" = dc_field( - default=None, metadata=dc_config(field_name="user_group") - ) - + type: str = dc_field(default="user_group.member_added", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user_group: 'UserGroup | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) @dataclass class UserGroupMemberRemovedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The user IDs that were removed members: list[str] = dc_field(metadata=dc_config(field_name="members")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "user_group.member_removed" in this case - type: str = dc_field( - default="user_group.member_removed", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - user_group: "UserGroup | None" = dc_field( - default=None, metadata=dc_config(field_name="user_group") - ) - + type: str = dc_field(default="user_group.member_removed", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user_group: 'UserGroup | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) @dataclass class UserGroupResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) id: str = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - created_by: str | None = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) - description: str | None = dc_field( - default=None, metadata=dc_config(field_name="description") - ) - team_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="team_id") - ) - members: "list[UserGroupMember] | None" = dc_field( - default=None, metadata=dc_config(field_name="members") - ) - + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_by: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by")) + description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="team_id")) + members: 'list[UserGroupMember] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) @dataclass class UserGroupUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "user_group.updated" in this case - type: str = dc_field( - default="user_group.updated", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - user_group: "UserGroup | None" = dc_field( - default=None, metadata=dc_config(field_name="user_group") - ) - + type: str = dc_field(default="user_group.updated", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user_group: 'UserGroup | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) @dataclass class UserIdenticalContentCountParameters(DataClassJsonMixin): - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - time_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="time_window") - ) - + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) @dataclass class UserMessagesDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.messages.deleted" in this case - type: str = dc_field( - default="user.messages.deleted", metadata=dc_config(field_name="type") - ) + type: str = dc_field(default="user.messages.deleted", metadata=dc_config(field_name="type")) # The ID of the channel where the target user's messages were deleted - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel where the target user's messages were deleted - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel where the target user's messages were deleted cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) # Whether Messages were hard deleted - hard_delete: bool | None = dc_field( - default=None, metadata=dc_config(field_name="hard_delete") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The team of the channel where the target user's messages were deleted team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) @dataclass class UserMuteResponse(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - expires: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="expires", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # User response object - target: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="target") - ) + target: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="target")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class UserMutedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.muted" in this case type: str = dc_field(default="user.muted", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The target users that were muted - target_users: "list[UserResponseCommonFields] | None" = dc_field( - default=None, metadata=dc_config(field_name="target_users") - ) - target_user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="target_user") - ) - + target_users: 'list[UserResponseCommonFields] | None' = dc_field(default=None, metadata=dc_config(field_name="target_users")) + target_user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="target_user")) @dataclass class UserRatingReportResponse(DataClassJsonMixin): average: float = dc_field(metadata=dc_config(field_name="average")) count: int = dc_field(metadata=dc_config(field_name="count")) - @dataclass class UserReactivatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.reactivated" in this case - type: str = dc_field( - default="user.reactivated", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - created_by: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) - + type: str = dc_field(default="user.reactivated", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_by: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) @dataclass class UserRequest(DataClassJsonMixin): @@ -30498,46 +15589,26 @@ class UserRequest(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) # User's profile image URL image: str | None = dc_field(default=None, metadata=dc_config(field_name="image")) - invisible: bool | None = dc_field( - default=None, metadata=dc_config(field_name="invisible") - ) - language: str | None = dc_field( - default=None, metadata=dc_config(field_name="language") - ) + invisible: bool | None = dc_field(default=None, metadata=dc_config(field_name="invisible")) + language: str | None = dc_field(default=None, metadata=dc_config(field_name="language")) # Optional name of user name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # User's global role role: str | None = dc_field(default=None, metadata=dc_config(field_name="role")) # List of teams the user belongs to - teams: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="teams") - ) + teams: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="teams")) # Custom user data - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - privacy_settings: "PrivacySettingsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="privacy_settings") - ) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + privacy_settings: 'PrivacySettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="privacy_settings")) # Map of team-specific roles for the user - teams_role: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="teams_role") - ) - + teams_role: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="teams_role")) @dataclass class UserResponse(DataClassJsonMixin): # Whether a user is banned or not banned: bool = dc_field(metadata=dc_config(field_name="banned")) # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Unique user identifier id: str = dc_field(metadata=dc_config(field_name="id")) invisible: bool = dc_field(metadata=dc_config(field_name="invisible")) @@ -30550,793 +15621,338 @@ class UserResponse(DataClassJsonMixin): # Whether a user is shadow banned shadow_banned: bool = dc_field(metadata=dc_config(field_name="shadow_banned")) # Date/time of the last update - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - blocked_user_ids: list[str] = dc_field( - metadata=dc_config(field_name="blocked_user_ids") - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + blocked_user_ids: list[str] = dc_field(metadata=dc_config(field_name="blocked_user_ids")) # List of teams user is a part of teams: list[str] = dc_field(metadata=dc_config(field_name="teams")) # Custom data for this object custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - avg_response_time: int | None = dc_field( - default=None, metadata=dc_config(field_name="avg_response_time") - ) + avg_response_time: int | None = dc_field(default=None, metadata=dc_config(field_name="avg_response_time")) # Date when ban expires - ban_expires: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="ban_expires", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - bypass_moderation: bool | None = dc_field( - default=None, metadata=dc_config(field_name="bypass_moderation") - ) + ban_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ban_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + bypass_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="bypass_moderation")) # Date of deactivation - deactivated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deactivated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + deactivated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deactivated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Date/time of deletion - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) image: str | None = dc_field(default=None, metadata=dc_config(field_name="image")) # Date of last activity - last_active: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_active", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + last_active: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_active", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Optional name of user name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # Revocation date for tokens - revoke_tokens_issued_before: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="revoke_tokens_issued_before", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + revoke_tokens_issued_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="revoke_tokens_issued_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # List of devices user is using - devices: "list[DeviceResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="devices") - ) - privacy_settings: "PrivacySettingsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="privacy_settings") - ) - push_notifications: "PushNotificationSettingsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="push_notifications") - ) - teams_role: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="teams_role") - ) - + devices: 'list[DeviceResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="devices")) + privacy_settings: 'PrivacySettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="privacy_settings")) + push_notifications: 'PushNotificationSettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="push_notifications")) + teams_role: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="teams_role")) @dataclass class UserResponseCommonFields(DataClassJsonMixin): banned: bool = dc_field(metadata=dc_config(field_name="banned")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) id: str = dc_field(metadata=dc_config(field_name="id")) language: str = dc_field(metadata=dc_config(field_name="language")) online: bool = dc_field(metadata=dc_config(field_name="online")) role: str = dc_field(metadata=dc_config(field_name="role")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - blocked_user_ids: list[str] = dc_field( - metadata=dc_config(field_name="blocked_user_ids") - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + blocked_user_ids: list[str] = dc_field(metadata=dc_config(field_name="blocked_user_ids")) teams: list[str] = dc_field(metadata=dc_config(field_name="teams")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - avg_response_time: int | None = dc_field( - default=None, metadata=dc_config(field_name="avg_response_time") - ) - deactivated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deactivated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + avg_response_time: int | None = dc_field(default=None, metadata=dc_config(field_name="avg_response_time")) + deactivated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deactivated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) image: str | None = dc_field(default=None, metadata=dc_config(field_name="image")) - last_active: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_active", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + last_active: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_active", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - revoke_tokens_issued_before: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="revoke_tokens_issued_before", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - teams_role: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="teams_role") - ) - + revoke_tokens_issued_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="revoke_tokens_issued_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + teams_role: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="teams_role")) @dataclass class UserResponsePrivacyFields(DataClassJsonMixin): banned: bool = dc_field(metadata=dc_config(field_name="banned")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) id: str = dc_field(metadata=dc_config(field_name="id")) language: str = dc_field(metadata=dc_config(field_name="language")) online: bool = dc_field(metadata=dc_config(field_name="online")) role: str = dc_field(metadata=dc_config(field_name="role")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - blocked_user_ids: list[str] = dc_field( - metadata=dc_config(field_name="blocked_user_ids") - ) + updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + blocked_user_ids: list[str] = dc_field(metadata=dc_config(field_name="blocked_user_ids")) teams: list[str] = dc_field(metadata=dc_config(field_name="teams")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - avg_response_time: int | None = dc_field( - default=None, metadata=dc_config(field_name="avg_response_time") - ) - deactivated_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deactivated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - deleted_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="deleted_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + avg_response_time: int | None = dc_field(default=None, metadata=dc_config(field_name="avg_response_time")) + deactivated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deactivated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) image: str | None = dc_field(default=None, metadata=dc_config(field_name="image")) - invisible: bool | None = dc_field( - default=None, metadata=dc_config(field_name="invisible") - ) - last_active: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="last_active", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + invisible: bool | None = dc_field(default=None, metadata=dc_config(field_name="invisible")) + last_active: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_active", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - revoke_tokens_issued_before: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="revoke_tokens_issued_before", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - privacy_settings: "PrivacySettingsResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="privacy_settings") - ) - teams_role: "dict[str, str] | None" = dc_field( - default=None, metadata=dc_config(field_name="teams_role") - ) - + revoke_tokens_issued_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="revoke_tokens_issued_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + privacy_settings: 'PrivacySettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="privacy_settings")) + teams_role: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="teams_role")) @dataclass class UserRoleParameters(DataClassJsonMixin): - operator: str | None = dc_field( - default=None, metadata=dc_config(field_name="operator") - ) + operator: str | None = dc_field(default=None, metadata=dc_config(field_name="operator")) role: str | None = dc_field(default=None, metadata=dc_config(field_name="role")) - @dataclass class UserRuleParameters(DataClassJsonMixin): - max_age: str | None = dc_field( - default=None, metadata=dc_config(field_name="max_age") - ) - + max_age: str | None = dc_field(default=None, metadata=dc_config(field_name="max_age")) @dataclass class UserUnbannedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.unbanned" in this case type: str = dc_field(default="user.unbanned", metadata=dc_config(field_name="type")) # The ID of the channel where the target user was unbanned - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) - channel_member_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_member_count") - ) - channel_message_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="channel_message_count") - ) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) # The type of the channel where the target user was unbanned - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) # The CID of the channel where the target user was unbanned cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # Whether the target user was shadow unbanned - shadow: bool | None = dc_field( - default=None, metadata=dc_config(field_name="shadow") - ) + shadow: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow")) # The team of the channel where the target user was unbanned team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="channel_custom") - ) - created_by: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) - + channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + created_by: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) @dataclass class UserUnmutedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.unmuted" in this case type: str = dc_field(default="user.unmuted", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The target users that were unmuted - target_users: "list[UserResponseCommonFields] | None" = dc_field( - default=None, metadata=dc_config(field_name="target_users") - ) - target_user: "UserResponseCommonFields | None" = dc_field( - default=None, metadata=dc_config(field_name="target_user") - ) - + target_users: 'list[UserResponseCommonFields] | None' = dc_field(default=None, metadata=dc_config(field_name="target_users")) + target_user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="target_user")) @dataclass class UserUnreadReminderEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) # The channels with unread messages - channels: "dict[str, ChannelMessagesResponse | None]" = dc_field( - metadata=dc_config(field_name="channels") - ) + channels: 'dict[str, ChannelMessagesResponse | None]' = dc_field(metadata=dc_config(field_name="channels")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.unread_message_reminder" in this case - type: str = dc_field( - default="user.unread_message_reminder", metadata=dc_config(field_name="type") - ) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + type: str = dc_field(default="user.unread_message_reminder", metadata=dc_config(field_name="type")) + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class UserUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: "UserResponsePrivacyFields" = dc_field(metadata=dc_config(field_name="user")) + user: 'UserResponsePrivacyFields' = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.updated" in this case type: str = dc_field(default="user.updated", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="received_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - + received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) @dataclass class ValidateExternalStorageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - @dataclass class VelocityFilterConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - advanced_filters: bool | None = dc_field( - default=None, metadata=dc_config(field_name="advanced_filters") - ) - cascading_actions: bool | None = dc_field( - default=None, metadata=dc_config(field_name="cascading_actions") - ) - cids_per_user: int | None = dc_field( - default=None, metadata=dc_config(field_name="cids_per_user") - ) - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - first_message_only: bool | None = dc_field( - default=None, metadata=dc_config(field_name="first_message_only") - ) - rules: "list[VelocityFilterConfigRule] | None" = dc_field( - default=None, metadata=dc_config(field_name="rules") - ) - + advanced_filters: bool | None = dc_field(default=None, metadata=dc_config(field_name="advanced_filters")) + cascading_actions: bool | None = dc_field(default=None, metadata=dc_config(field_name="cascading_actions")) + cids_per_user: int | None = dc_field(default=None, metadata=dc_config(field_name="cids_per_user")) + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + first_message_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="first_message_only")) + rules: 'list[VelocityFilterConfigRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) @dataclass class VelocityFilterConfigRule(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) - ban_duration: int | None = dc_field( - default=None, metadata=dc_config(field_name="ban_duration") - ) - cascading_action: str | None = dc_field( - default=None, metadata=dc_config(field_name="cascading_action") - ) - cascading_threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="cascading_threshold") - ) - check_message_context: bool | None = dc_field( - default=None, metadata=dc_config(field_name="check_message_context") - ) - fast_spam_threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="fast_spam_threshold") - ) - fast_spam_ttl: int | None = dc_field( - default=None, metadata=dc_config(field_name="fast_spam_ttl") - ) - ip_ban: bool | None = dc_field( - default=None, metadata=dc_config(field_name="ip_ban") - ) - probation_period: int | None = dc_field( - default=None, metadata=dc_config(field_name="probation_period") - ) - shadow_ban: bool | None = dc_field( - default=None, metadata=dc_config(field_name="shadow_ban") - ) - slow_spam_ban_duration: int | None = dc_field( - default=None, metadata=dc_config(field_name="slow_spam_ban_duration") - ) - slow_spam_threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="slow_spam_threshold") - ) - slow_spam_ttl: int | None = dc_field( - default=None, metadata=dc_config(field_name="slow_spam_ttl") - ) - url_only: bool | None = dc_field( - default=None, metadata=dc_config(field_name="url_only") - ) - + ban_duration: int | None = dc_field(default=None, metadata=dc_config(field_name="ban_duration")) + cascading_action: str | None = dc_field(default=None, metadata=dc_config(field_name="cascading_action")) + cascading_threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="cascading_threshold")) + check_message_context: bool | None = dc_field(default=None, metadata=dc_config(field_name="check_message_context")) + fast_spam_threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="fast_spam_threshold")) + fast_spam_ttl: int | None = dc_field(default=None, metadata=dc_config(field_name="fast_spam_ttl")) + ip_ban: bool | None = dc_field(default=None, metadata=dc_config(field_name="ip_ban")) + probation_period: int | None = dc_field(default=None, metadata=dc_config(field_name="probation_period")) + shadow_ban: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow_ban")) + slow_spam_ban_duration: int | None = dc_field(default=None, metadata=dc_config(field_name="slow_spam_ban_duration")) + slow_spam_threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="slow_spam_threshold")) + slow_spam_ttl: int | None = dc_field(default=None, metadata=dc_config(field_name="slow_spam_ttl")) + url_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="url_only")) @dataclass class VideoCallRuleConfig(DataClassJsonMixin): - flag_all_labels: bool | None = dc_field( - default=None, metadata=dc_config(field_name="flag_all_labels") - ) - flagged_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="flagged_labels") - ) - rules: "list[HarmConfig] | None" = dc_field( - default=None, metadata=dc_config(field_name="rules") - ) - + flag_all_labels: bool | None = dc_field(default=None, metadata=dc_config(field_name="flag_all_labels")) + flagged_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="flagged_labels")) + rules: 'list[HarmConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) @dataclass class VideoContentParameters(DataClassJsonMixin): - label_operator: str | None = dc_field( - default=None, metadata=dc_config(field_name="label_operator") - ) - harm_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="harm_labels") - ) - + label_operator: str | None = dc_field(default=None, metadata=dc_config(field_name="label_operator")) + harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) @dataclass class VideoEndCallRequestPayload(DataClassJsonMixin): pass - @dataclass class VideoKickUserRequestPayload(DataClassJsonMixin): pass - @dataclass class VideoReactionOverTimeResponse(DataClassJsonMixin): - by_minute: "list[CountByMinuteResponse] | None" = dc_field( - default=None, metadata=dc_config(field_name="by_minute") - ) - + by_minute: 'list[CountByMinuteResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="by_minute")) @dataclass class VideoReactionResponse(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) # User response object - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - emoji_code: str | None = dc_field( - default=None, metadata=dc_config(field_name="emoji_code") - ) - custom: dict[str, object] | None = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - + user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + emoji_code: str | None = dc_field(default=None, metadata=dc_config(field_name="emoji_code")) + custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) @dataclass class VideoReactionsResponse(DataClassJsonMixin): reaction: str = dc_field(metadata=dc_config(field_name="reaction")) - count_over_time: "VideoReactionOverTimeResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="count_over_time") - ) - + count_over_time: 'VideoReactionOverTimeResponse | None' = dc_field(default=None, metadata=dc_config(field_name="count_over_time")) @dataclass class VideoRuleParameters(DataClassJsonMixin): - threshold: int | None = dc_field( - default=None, metadata=dc_config(field_name="threshold") - ) - time_window: str | None = dc_field( - default=None, metadata=dc_config(field_name="time_window") - ) - harm_labels: list[str] | None = dc_field( - default=None, metadata=dc_config(field_name="harm_labels") - ) - + threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) + harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) @dataclass class VideoSettings(DataClassJsonMixin): - access_request_enabled: bool = dc_field( - metadata=dc_config(field_name="access_request_enabled") - ) - camera_default_on: bool = dc_field( - metadata=dc_config(field_name="camera_default_on") - ) + access_request_enabled: bool = dc_field(metadata=dc_config(field_name="access_request_enabled")) + camera_default_on: bool = dc_field(metadata=dc_config(field_name="camera_default_on")) camera_facing: str = dc_field(metadata=dc_config(field_name="camera_facing")) enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - target_resolution: "TargetResolution" = dc_field( - metadata=dc_config(field_name="target_resolution") - ) - + target_resolution: 'TargetResolution' = dc_field(metadata=dc_config(field_name="target_resolution")) @dataclass class VideoSettingsRequest(DataClassJsonMixin): - access_request_enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="access_request_enabled") - ) - camera_default_on: bool | None = dc_field( - default=None, metadata=dc_config(field_name="camera_default_on") - ) - camera_facing: str | None = dc_field( - default=None, metadata=dc_config(field_name="camera_facing") - ) - enabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="enabled") - ) - target_resolution: "TargetResolution | None" = dc_field( - default=None, metadata=dc_config(field_name="target_resolution") - ) - + access_request_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="access_request_enabled")) + camera_default_on: bool | None = dc_field(default=None, metadata=dc_config(field_name="camera_default_on")) + camera_facing: str | None = dc_field(default=None, metadata=dc_config(field_name="camera_facing")) + enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + target_resolution: 'TargetResolution | None' = dc_field(default=None, metadata=dc_config(field_name="target_resolution")) @dataclass class VideoSettingsResponse(DataClassJsonMixin): - access_request_enabled: bool = dc_field( - metadata=dc_config(field_name="access_request_enabled") - ) - camera_default_on: bool = dc_field( - metadata=dc_config(field_name="camera_default_on") - ) + access_request_enabled: bool = dc_field(metadata=dc_config(field_name="access_request_enabled")) + camera_default_on: bool = dc_field(metadata=dc_config(field_name="camera_default_on")) camera_facing: str = dc_field(metadata=dc_config(field_name="camera_facing")) enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - target_resolution: "TargetResolution" = dc_field( - metadata=dc_config(field_name="target_resolution") - ) - + target_resolution: 'TargetResolution' = dc_field(metadata=dc_config(field_name="target_resolution")) @dataclass class ViewerBehavior(DataClassJsonMixin): - connection_duration_p50_s: int = dc_field( - metadata=dc_config(field_name="connection_duration_p50_s") - ) - connections_per_viewer_mean: float = dc_field( - metadata=dc_config(field_name="connections_per_viewer_mean") - ) - median_watch_min: float = dc_field( - metadata=dc_config(field_name="median_watch_min") - ) + connection_duration_p50_s: int = dc_field(metadata=dc_config(field_name="connection_duration_p50_s")) + connections_per_viewer_mean: float = dc_field(metadata=dc_config(field_name="connections_per_viewer_mean")) + median_watch_min: float = dc_field(metadata=dc_config(field_name="median_watch_min")) note: str = dc_field(metadata=dc_config(field_name="note")) p90_watch_min: float = dc_field(metadata=dc_config(field_name="p90_watch_min")) - bounce_rate_pct: float | None = dc_field( - default=None, metadata=dc_config(field_name="bounce_rate_pct") - ) - connections_under_30s_pct: float | None = dc_field( - default=None, metadata=dc_config(field_name="connections_under_30s_pct") - ) - return_visit_rate_pct: float | None = dc_field( - default=None, metadata=dc_config(field_name="return_visit_rate_pct") - ) - + bounce_rate_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="bounce_rate_pct")) + connections_under_30s_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="connections_under_30s_pct")) + return_visit_rate_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="return_visit_rate_pct")) @dataclass class VoteData(DataClassJsonMixin): - answer_text: str | None = dc_field( - default=None, metadata=dc_config(field_name="answer_text") - ) - option_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="option_id") - ) - + answer_text: str | None = dc_field(default=None, metadata=dc_config(field_name="answer_text")) + option_id: str | None = dc_field(default=None, metadata=dc_config(field_name="option_id")) @dataclass class WHEvent(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) - @dataclass class WHIPIngress(DataClassJsonMixin): # URL for a new whip input, every time a new link is created address: str = dc_field(metadata=dc_config(field_name="address")) - @dataclass class WSEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) + created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) type: str = dc_field(metadata=dc_config(field_name="type")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - automoderation: bool | None = dc_field( - default=None, metadata=dc_config(field_name="automoderation") - ) - channel_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_id") - ) - channel_last_message_at: datetime | None = dc_field( - default=None, - metadata=dc_config( - field_name="channel_last_message_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - channel_type: str | None = dc_field( - default=None, metadata=dc_config(field_name="channel_type") - ) + automoderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="automoderation")) + channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_last_message_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="channel_last_message_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - connection_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="connection_id") - ) - parent_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) + connection_id: str | None = dc_field(default=None, metadata=dc_config(field_name="connection_id")) + parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - thread_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="thread_id") - ) - user_id: str | None = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - watcher_count: int | None = dc_field( - default=None, metadata=dc_config(field_name="watcher_count") - ) - automoderation_scores: "ModerationResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="automoderation_scores") - ) + thread_id: str | None = dc_field(default=None, metadata=dc_config(field_name="thread_id")) + user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + watcher_count: int | None = dc_field(default=None, metadata=dc_config(field_name="watcher_count")) + automoderation_scores: 'ModerationResponse | None' = dc_field(default=None, metadata=dc_config(field_name="automoderation_scores")) # Represents channel in chat - channel: "ChannelResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) + channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) # User response object - created_by: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) - me: "OwnUserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="me") - ) - member: "ChannelMemberResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="member") - ) + created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) + me: 'OwnUserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="me")) + member: 'ChannelMemberResponse | None' = dc_field(default=None, metadata=dc_config(field_name="member")) # Represents any chat message - message: "MessageResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - message_update: "MessageUpdate | None" = dc_field( - default=None, metadata=dc_config(field_name="message_update") - ) - poll: "PollResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="poll") - ) - poll_vote: "PollVoteResponseData | None" = dc_field( - default=None, metadata=dc_config(field_name="poll_vote") - ) - reaction: "ReactionResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="reaction") - ) - thread: "ThreadResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="thread") - ) + message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + message_update: 'MessageUpdate | None' = dc_field(default=None, metadata=dc_config(field_name="message_update")) + poll: 'PollResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll")) + poll_vote: 'PollVoteResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll_vote")) + reaction: 'ReactionResponse | None' = dc_field(default=None, metadata=dc_config(field_name="reaction")) + thread: 'ThreadResponse | None' = dc_field(default=None, metadata=dc_config(field_name="thread")) # User response object - user: "UserResponse | None" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - + user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) @dataclass class WebhookFailoverConfig(DataClassJsonMixin): - gcs_bucket: str | None = dc_field( - default=None, metadata=dc_config(field_name="gcs_bucket") - ) - gcs_credentials: str | None = dc_field( - default=None, metadata=dc_config(field_name="gcs_credentials") - ) - gcs_path: str | None = dc_field( - default=None, metadata=dc_config(field_name="gcs_path") - ) + gcs_bucket: str | None = dc_field(default=None, metadata=dc_config(field_name="gcs_bucket")) + gcs_credentials: str | None = dc_field(default=None, metadata=dc_config(field_name="gcs_credentials")) + gcs_path: str | None = dc_field(default=None, metadata=dc_config(field_name="gcs_path")) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - @dataclass class WrappedUnreadCountsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - total_unread_count: int = dc_field( - metadata=dc_config(field_name="total_unread_count") - ) - total_unread_threads_count: int = dc_field( - metadata=dc_config(field_name="total_unread_threads_count") - ) - channel_type: "list[UnreadCountsChannelType]" = dc_field( - metadata=dc_config(field_name="channel_type") - ) - channels: "list[UnreadCountsChannel]" = dc_field( - metadata=dc_config(field_name="channels") - ) - threads: "list[UnreadCountsThread]" = dc_field( - metadata=dc_config(field_name="threads") - ) - total_unread_count_by_team: "dict[str, int] | None" = dc_field( - default=None, metadata=dc_config(field_name="total_unread_count_by_team") - ) - + total_unread_count: int = dc_field(metadata=dc_config(field_name="total_unread_count")) + total_unread_threads_count: int = dc_field(metadata=dc_config(field_name="total_unread_threads_count")) + channel_type: 'list[UnreadCountsChannelType]' = dc_field(metadata=dc_config(field_name="channel_type")) + channels: 'list[UnreadCountsChannel]' = dc_field(metadata=dc_config(field_name="channels")) + threads: 'list[UnreadCountsThread]' = dc_field(metadata=dc_config(field_name="threads")) + total_unread_count_by_team: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="total_unread_count_by_team")) @dataclass class XiaomiConfig(DataClassJsonMixin): - disabled: bool | None = dc_field( - default=None, metadata=dc_config(field_name="Disabled") - ) - package_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="package_name") - ) + disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="Disabled")) + package_name: str | None = dc_field(default=None, metadata=dc_config(field_name="package_name")) secret: str | None = dc_field(default=None, metadata=dc_config(field_name="secret")) - @dataclass class XiaomiConfigFields(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - package_name: str | None = dc_field( - default=None, metadata=dc_config(field_name="package_name") - ) + package_name: str | None = dc_field(default=None, metadata=dc_config(field_name="package_name")) secret: str | None = dc_field(default=None, metadata=dc_config(field_name="secret")) + + + + + + + + + + diff --git a/getstream/moderation/async_rest_client.py b/getstream/moderation/async_rest_client.py index ff02ca1d..1bcf8b01 100644 --- a/getstream/moderation/async_rest_client.py +++ b/getstream/moderation/async_rest_client.py @@ -1,3 +1,4 @@ + # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import AsyncBaseClient from getstream.common import telemetry @@ -7,14 +8,8 @@ class ModerationRestClient(AsyncBaseClient): - def __init__( - self, - api_key: str, - base_url: str, - timeout: float, - token: str, - user_agent: str | None = None, - ): + + def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): """ Initializes ModerationClient with BaseClient instance :param api_key: A string representing the client's API key @@ -31,1068 +26,306 @@ def __init__( user_agent=user_agent, ) + @telemetry.operation_name("getstream.api.moderation.get_action_config") - async def get_action_config( - self, - queue_type: Optional[str] = None, - entity_type: Optional[str] = None, - exclude_defaults: Optional[bool] = None, - only_defaults: Optional[bool] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[GetActionConfigResponse]: - query_params = build_query_param( - queue_type=queue_type, - entity_type=entity_type, - exclude_defaults=exclude_defaults, - only_defaults=only_defaults, - user_id=user_id, - ) - return await self.get( - "/api/v2/moderation/action_config", - GetActionConfigResponse, - query_params=query_params, - ) - + async def get_action_config(self, queue_type: Optional[str] = None, entity_type: Optional[str] = None, exclude_defaults: Optional[bool] = None, only_defaults: Optional[bool] = None, user_id: Optional[str] = None) -> StreamResponse[GetActionConfigResponse]: + query_params = build_query_param(queue_type=queue_type, entity_type=entity_type, exclude_defaults=exclude_defaults, only_defaults=only_defaults, user_id=user_id) + return await self.get("/api/v2/moderation/action_config", GetActionConfigResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.moderation.upsert_action_config") - async def upsert_action_config( - self, - action: str, - entity_type: str, - order: int, - description: Optional[str] = None, - icon: Optional[str] = None, - id: Optional[str] = None, - queue_type: Optional[str] = None, - user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpsertActionConfigResponse]: - json = UpsertActionConfigRequest( - action=action, - entity_type=entity_type, - order=order, - description=description, - icon=icon, - id=id, - queue_type=queue_type, - user_id=user_id, - custom=custom, - user=user, - ).to_dict() - return await self.post( - "/api/v2/moderation/action_config", UpsertActionConfigResponse, json=json - ) - + async def upsert_action_config(self, action: str, entity_type: str, order: int, description: Optional[str] = None, icon: Optional[str] = None, id: Optional[str] = None, queue_type: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpsertActionConfigResponse]: + json = UpsertActionConfigRequest(action=action, entity_type=entity_type, order=order, description=description, icon=icon, id=id, queue_type=queue_type, user_id=user_id, custom=custom, user=user).to_dict() + return await self.post("/api/v2/moderation/action_config", UpsertActionConfigResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.bulk_upsert_action_config") - async def bulk_upsert_action_config( - self, - action_configs: List[UpsertActionConfigItem], - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[BulkUpsertActionConfigResponse]: - json = BulkUpsertActionConfigRequest( - action_configs=action_configs, user_id=user_id, user=user - ).to_dict() - return await self.post( - "/api/v2/moderation/action_config/bulk", - BulkUpsertActionConfigResponse, - json=json, - ) - + async def bulk_upsert_action_config(self, action_configs: List[UpsertActionConfigItem], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[BulkUpsertActionConfigResponse]: + json = BulkUpsertActionConfigRequest(action_configs=action_configs, user_id=user_id, user=user).to_dict() + return await self.post("/api/v2/moderation/action_config/bulk", BulkUpsertActionConfigResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.bulk_delete_action_config") - async def bulk_delete_action_config( - self, - ids: List[str], - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[BulkDeleteActionConfigResponse]: - json = BulkDeleteActionConfigRequest( - ids=ids, user_id=user_id, user=user - ).to_dict() - return await self.post( - "/api/v2/moderation/action_config/bulk_delete", - BulkDeleteActionConfigResponse, - json=json, - ) - + async def bulk_delete_action_config(self, ids: List[str], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[BulkDeleteActionConfigResponse]: + json = BulkDeleteActionConfigRequest(ids=ids, user_id=user_id, user=user).to_dict() + return await self.post("/api/v2/moderation/action_config/bulk_delete", BulkDeleteActionConfigResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.delete_action_config") - async def delete_action_config( - self, id: str, user_id: Optional[str] = None - ) -> StreamResponse[DeleteActionConfigResponse]: + async def delete_action_config(self, id: str, user_id: Optional[str] = None) -> StreamResponse[DeleteActionConfigResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "id": id, + "id": id, } - return await self.delete( - "/api/v2/moderation/action_config/{id}", - DeleteActionConfigResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.delete("/api/v2/moderation/action_config/{id}", DeleteActionConfigResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.insert_action_log") - async def insert_action_log( - self, - action_type: str, - entity_creator_id: str, - entity_id: str, - entity_type: str, - reason: Optional[str] = None, - reporter_type: Optional[str] = None, - reporter_user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - ) -> StreamResponse[InsertActionLogResponse]: - json = InsertActionLogRequest( - action_type=action_type, - entity_creator_id=entity_creator_id, - entity_id=entity_id, - entity_type=entity_type, - reason=reason, - reporter_type=reporter_type, - reporter_user_id=reporter_user_id, - custom=custom, - ).to_dict() - return await self.post( - "/api/v2/moderation/action_logs", InsertActionLogResponse, json=json - ) - + async def insert_action_log(self, action_type: str, entity_creator_id: str, entity_id: str, entity_type: str, reason: Optional[str] = None, reporter_type: Optional[str] = None, reporter_user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[InsertActionLogResponse]: + json = InsertActionLogRequest(action_type=action_type, entity_creator_id=entity_creator_id, entity_id=entity_id, entity_type=entity_type, reason=reason, reporter_type=reporter_type, reporter_user_id=reporter_user_id, custom=custom).to_dict() + return await self.post("/api/v2/moderation/action_logs", InsertActionLogResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.analyze") - async def analyze( - self, - async_response: Optional[bool] = None, - config_key: Optional[str] = None, - content_published_at: Optional[datetime] = None, - entity_creator_id: Optional[str] = None, - entity_id: Optional[str] = None, - entity_type: Optional[str] = None, - user_id: Optional[str] = None, - content_ids: Optional[Dict[str, str]] = None, - custom: Optional[Dict[str, object]] = None, - texts: Optional[Dict[str, str]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[AnalyzeResponse]: - json = AnalyzeRequest( - async_response=async_response, - config_key=config_key, - content_published_at=content_published_at, - entity_creator_id=entity_creator_id, - entity_id=entity_id, - entity_type=entity_type, - user_id=user_id, - content_ids=content_ids, - custom=custom, - texts=texts, - user=user, - ).to_dict() + async def analyze(self, async_response: Optional[bool] = None, config_key: Optional[str] = None, content_published_at: Optional[datetime] = None, entity_creator_id: Optional[str] = None, entity_id: Optional[str] = None, entity_type: Optional[str] = None, user_id: Optional[str] = None, content_ids: Optional[Dict[str, str]] = None, custom: Optional[Dict[str, object]] = None, texts: Optional[Dict[str, str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[AnalyzeResponse]: + json = AnalyzeRequest(async_response=async_response, config_key=config_key, content_published_at=content_published_at, entity_creator_id=entity_creator_id, entity_id=entity_id, entity_type=entity_type, user_id=user_id, content_ids=content_ids, custom=custom, texts=texts, user=user).to_dict() return await self.post("/api/v2/moderation/analyze", AnalyzeResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.appeal") - async def appeal( - self, - appeal_reason: str, - entity_id: str, - entity_type: str, - review_queue_item_id: Optional[str] = None, - user_id: Optional[str] = None, - attachments: Optional[List[str]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[AppealResponse]: - json = AppealRequest( - appeal_reason=appeal_reason, - entity_id=entity_id, - entity_type=entity_type, - review_queue_item_id=review_queue_item_id, - user_id=user_id, - attachments=attachments, - user=user, - ).to_dict() + async def appeal(self, appeal_reason: str, entity_id: str, entity_type: str, review_queue_item_id: Optional[str] = None, user_id: Optional[str] = None, attachments: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[AppealResponse]: + json = AppealRequest(appeal_reason=appeal_reason, entity_id=entity_id, entity_type=entity_type, review_queue_item_id=review_queue_item_id, user_id=user_id, attachments=attachments, user=user).to_dict() return await self.post("/api/v2/moderation/appeal", AppealResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.get_appeal") async def get_appeal(self, id: str) -> StreamResponse[GetAppealResponse]: path_params = { - "id": id, + "id": id, } - return await self.get( - "/api/v2/moderation/appeal/{id}", GetAppealResponse, path_params=path_params - ) - + return await self.get("/api/v2/moderation/appeal/{id}", GetAppealResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.query_appeals") - async def query_appeals( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryAppealsResponse]: - json = QueryAppealsRequest( - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return await self.post( - "/api/v2/moderation/appeals", QueryAppealsResponse, json=json - ) - + async def query_appeals(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryAppealsResponse]: + json = QueryAppealsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return await self.post("/api/v2/moderation/appeals", QueryAppealsResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.bulk_action_appeals") - async def bulk_action_appeals( - self, - action_type: str, - appeal_ids: List[str], - user_id: Optional[str] = None, - mark_reviewed: Optional[MarkReviewedRequestPayload] = None, - reject_appeal: Optional[RejectAppealRequestPayload] = None, - restore: Optional[RestoreActionRequestPayload] = None, - unban: Optional[UnbanActionRequestPayload] = None, - unblock: Optional[UnblockActionRequestPayload] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[BulkActionAppealsResponse]: - json = BulkActionAppealsRequest( - action_type=action_type, - appeal_ids=appeal_ids, - user_id=user_id, - mark_reviewed=mark_reviewed, - reject_appeal=reject_appeal, - restore=restore, - unban=unban, - unblock=unblock, - user=user, - ).to_dict() - return await self.post( - "/api/v2/moderation/appeals/bulk_action", - BulkActionAppealsResponse, - json=json, - ) - + async def bulk_action_appeals(self, action_type: str, appeal_ids: List[str], user_id: Optional[str] = None, mark_reviewed: Optional[MarkReviewedRequestPayload] = None, reject_appeal: Optional[RejectAppealRequestPayload] = None, restore: Optional[RestoreActionRequestPayload] = None, unban: Optional[UnbanActionRequestPayload] = None, unblock: Optional[UnblockActionRequestPayload] = None, user: Optional[UserRequest] = None) -> StreamResponse[BulkActionAppealsResponse]: + json = BulkActionAppealsRequest(action_type=action_type, appeal_ids=appeal_ids, user_id=user_id, mark_reviewed=mark_reviewed, reject_appeal=reject_appeal, restore=restore, unban=unban, unblock=unblock, user=user).to_dict() + return await self.post("/api/v2/moderation/appeals/bulk_action", BulkActionAppealsResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.ban") - async def ban( - self, - target_user_id: str, - banned_by_id: Optional[str] = None, - channel_cid: Optional[str] = None, - delete_messages: Optional[str] = None, - ip_ban: Optional[bool] = None, - reason: Optional[str] = None, - shadow: Optional[bool] = None, - timeout: Optional[int] = None, - banned_by: Optional[UserRequest] = None, - ) -> StreamResponse[ModerationBanResponse]: - json = BanRequest( - target_user_id=target_user_id, - banned_by_id=banned_by_id, - channel_cid=channel_cid, - delete_messages=delete_messages, - ip_ban=ip_ban, - reason=reason, - shadow=shadow, - timeout=timeout, - banned_by=banned_by, - ).to_dict() - return await self.post( - "/api/v2/moderation/ban", ModerationBanResponse, json=json - ) - + async def ban(self, target_user_id: str, banned_by_id: Optional[str] = None, channel_cid: Optional[str] = None, delete_messages: Optional[str] = None, ip_ban: Optional[bool] = None, reason: Optional[str] = None, shadow: Optional[bool] = None, timeout: Optional[int] = None, banned_by: Optional[UserRequest] = None) -> StreamResponse[ModerationBanResponse]: + json = BanRequest(target_user_id=target_user_id, banned_by_id=banned_by_id, channel_cid=channel_cid, delete_messages=delete_messages, ip_ban=ip_ban, reason=reason, shadow=shadow, timeout=timeout, banned_by=banned_by).to_dict() + return await self.post("/api/v2/moderation/ban", ModerationBanResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.bulk_image_moderation") - async def bulk_image_moderation( - self, csv_file: str - ) -> StreamResponse[BulkImageModerationResponse]: + async def bulk_image_moderation(self, csv_file: str) -> StreamResponse[BulkImageModerationResponse]: json = BulkImageModerationRequest(csv_file=csv_file).to_dict() - return await self.post( - "/api/v2/moderation/bulk_image_moderation", - BulkImageModerationResponse, - json=json, - ) - + return await self.post("/api/v2/moderation/bulk_image_moderation", BulkImageModerationResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.bypass") - async def bypass( - self, enabled: bool, target_user_id: str - ) -> StreamResponse[BypassResponse]: + async def bypass(self, enabled: bool, target_user_id: str) -> StreamResponse[BypassResponse]: json = BypassRequest(enabled=enabled, target_user_id=target_user_id).to_dict() return await self.post("/api/v2/moderation/bypass", BypassResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.check") - async def check( - self, - entity_creator_id: str, - entity_id: str, - entity_type: str, - config_key: Optional[str] = None, - config_team: Optional[str] = None, - content_published_at: Optional[datetime] = None, - test_mode: Optional[bool] = None, - user_id: Optional[str] = None, - config: Optional[ModerationConfig] = None, - moderation_payload: Optional[ModerationPayload] = None, - options: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[CheckResponse]: - json = CheckRequest( - entity_creator_id=entity_creator_id, - entity_id=entity_id, - entity_type=entity_type, - config_key=config_key, - config_team=config_team, - content_published_at=content_published_at, - test_mode=test_mode, - user_id=user_id, - config=config, - moderation_payload=moderation_payload, - options=options, - user=user, - ).to_dict() + async def check(self, entity_creator_id: str, entity_id: str, entity_type: str, config_key: Optional[str] = None, config_team: Optional[str] = None, content_published_at: Optional[datetime] = None, test_mode: Optional[bool] = None, user_id: Optional[str] = None, config: Optional[ModerationConfig] = None, moderation_payload: Optional[ModerationPayload] = None, options: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[CheckResponse]: + json = CheckRequest(entity_creator_id=entity_creator_id, entity_id=entity_id, entity_type=entity_type, config_key=config_key, config_team=config_team, content_published_at=content_published_at, test_mode=test_mode, user_id=user_id, config=config, moderation_payload=moderation_payload, options=options, user=user).to_dict() return await self.post("/api/v2/moderation/check", CheckResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.check_s3_access") - async def check_s3_access( - self, s3_url: Optional[str] = None - ) -> StreamResponse[CheckS3AccessResponse]: + async def check_s3_access(self, s3_url: Optional[str] = None) -> StreamResponse[CheckS3AccessResponse]: json = CheckS3AccessRequest(s3_url=s3_url).to_dict() - return await self.post( - "/api/v2/moderation/check_s3_access", CheckS3AccessResponse, json=json - ) - + return await self.post("/api/v2/moderation/check_s3_access", CheckS3AccessResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.upsert_config") - async def upsert_config( - self, - key: str, - _async: Optional[bool] = None, - team: Optional[str] = None, - user_id: Optional[str] = None, - ai_audio_config: Optional[AIAudioConfigRequest] = None, - ai_image_config: Optional[AIImageConfig] = None, - ai_text_config: Optional[AITextConfig] = None, - ai_video_config: Optional[AIVideoConfig] = None, - automod_platform_circumvention_config: Optional[ - AutomodPlatformCircumventionConfig - ] = None, - automod_semantic_filters_config: Optional[AutomodSemanticFiltersConfig] = None, - automod_toxicity_config: Optional[AutomodToxicityConfig] = None, - aws_rekognition_config: Optional[AIImageConfig] = None, - block_list_config: Optional[BlockListConfig] = None, - bodyguard_config: Optional[AITextConfig] = None, - flood_config: Optional[FloodConfig] = None, - google_vision_config: Optional[GoogleVisionConfig] = None, - llm_config: Optional[LLMConfig] = None, - rule_builder_config: Optional[RuleBuilderConfig] = None, - user: Optional[UserRequest] = None, - velocity_filter_config: Optional[VelocityFilterConfig] = None, - video_call_rule_config: Optional[VideoCallRuleConfig] = None, - ) -> StreamResponse[UpsertConfigResponse]: - json = UpsertConfigRequest( - key=key, - _async=_async, - team=team, - user_id=user_id, - ai_audio_config=ai_audio_config, - ai_image_config=ai_image_config, - ai_text_config=ai_text_config, - ai_video_config=ai_video_config, - automod_platform_circumvention_config=automod_platform_circumvention_config, - automod_semantic_filters_config=automod_semantic_filters_config, - automod_toxicity_config=automod_toxicity_config, - aws_rekognition_config=aws_rekognition_config, - block_list_config=block_list_config, - bodyguard_config=bodyguard_config, - flood_config=flood_config, - google_vision_config=google_vision_config, - llm_config=llm_config, - rule_builder_config=rule_builder_config, - user=user, - velocity_filter_config=velocity_filter_config, - video_call_rule_config=video_call_rule_config, - ).to_dict() - return await self.post( - "/api/v2/moderation/config", UpsertConfigResponse, json=json - ) - + async def upsert_config(self, key: str, _async: Optional[bool] = None, team: Optional[str] = None, user_id: Optional[str] = None, ai_audio_config: Optional[AIAudioConfigRequest] = None, ai_image_config: Optional[AIImageConfig] = None, ai_text_config: Optional[AITextConfig] = None, ai_video_config: Optional[AIVideoConfigRequest] = None, automod_platform_circumvention_config: Optional[AutomodPlatformCircumventionConfig] = None, automod_semantic_filters_config: Optional[AutomodSemanticFiltersConfig] = None, automod_toxicity_config: Optional[AutomodToxicityConfig] = None, aws_rekognition_config: Optional[AIImageConfig] = None, block_list_config: Optional[BlockListConfig] = None, bodyguard_config: Optional[AITextConfig] = None, flood_config: Optional[FloodConfig] = None, google_vision_config: Optional[GoogleVisionConfig] = None, llm_config: Optional[LLMConfig] = None, rule_builder_config: Optional[RuleBuilderConfig] = None, user: Optional[UserRequest] = None, velocity_filter_config: Optional[VelocityFilterConfig] = None, video_call_rule_config: Optional[VideoCallRuleConfig] = None) -> StreamResponse[UpsertConfigResponse]: + json = UpsertConfigRequest(key=key, _async=_async, team=team, user_id=user_id, ai_audio_config=ai_audio_config, ai_image_config=ai_image_config, ai_text_config=ai_text_config, ai_video_config=ai_video_config, automod_platform_circumvention_config=automod_platform_circumvention_config, automod_semantic_filters_config=automod_semantic_filters_config, automod_toxicity_config=automod_toxicity_config, aws_rekognition_config=aws_rekognition_config, block_list_config=block_list_config, bodyguard_config=bodyguard_config, flood_config=flood_config, google_vision_config=google_vision_config, llm_config=llm_config, rule_builder_config=rule_builder_config, user=user, velocity_filter_config=velocity_filter_config, video_call_rule_config=video_call_rule_config).to_dict() + return await self.post("/api/v2/moderation/config", UpsertConfigResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.delete_config") - async def delete_config( - self, key: str, team: Optional[str] = None, user_id: Optional[str] = None - ) -> StreamResponse[DeleteModerationConfigResponse]: + async def delete_config(self, key: str, team: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[DeleteModerationConfigResponse]: query_params = build_query_param(team=team, user_id=user_id) path_params = { - "key": key, + "key": key, } - return await self.delete( - "/api/v2/moderation/config/{key}", - DeleteModerationConfigResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.delete("/api/v2/moderation/config/{key}", DeleteModerationConfigResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.get_config") - async def get_config( - self, key: str, team: Optional[str] = None - ) -> StreamResponse[GetConfigResponse]: + async def get_config(self, key: str, team: Optional[str] = None) -> StreamResponse[GetConfigResponse]: query_params = build_query_param(team=team) path_params = { - "key": key, + "key": key, } - return await self.get( - "/api/v2/moderation/config/{key}", - GetConfigResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/moderation/config/{key}", GetConfigResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.query_moderation_configs") - async def query_moderation_configs( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryModerationConfigsResponse]: - json = QueryModerationConfigsRequest( - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return await self.post( - "/api/v2/moderation/configs", QueryModerationConfigsResponse, json=json - ) - + async def query_moderation_configs(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryModerationConfigsResponse]: + json = QueryModerationConfigsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return await self.post("/api/v2/moderation/configs", QueryModerationConfigsResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.custom_check") - async def custom_check( - self, - entity_id: str, - entity_type: str, - flags: List[CustomCheckFlag], - entity_creator_id: Optional[str] = None, - user_id: Optional[str] = None, - moderation_payload: Optional[ModerationPayloadRequest] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[CustomCheckResponse]: - json = CustomCheckRequest( - entity_id=entity_id, - entity_type=entity_type, - flags=flags, - entity_creator_id=entity_creator_id, - user_id=user_id, - moderation_payload=moderation_payload, - user=user, - ).to_dict() - return await self.post( - "/api/v2/moderation/custom_check", CustomCheckResponse, json=json - ) - + async def custom_check(self, entity_id: str, entity_type: str, flags: List[CustomCheckFlag], entity_creator_id: Optional[str] = None, user_id: Optional[str] = None, moderation_payload: Optional[ModerationPayloadRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[CustomCheckResponse]: + json = CustomCheckRequest(entity_id=entity_id, entity_type=entity_type, flags=flags, entity_creator_id=entity_creator_id, user_id=user_id, moderation_payload=moderation_payload, user=user).to_dict() + return await self.post("/api/v2/moderation/custom_check", CustomCheckResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.v2_delete_template") - async def v2_delete_template( - self, - ) -> StreamResponse[DeleteModerationTemplateResponse]: - return await self.delete( - "/api/v2/moderation/feeds_moderation_template", - DeleteModerationTemplateResponse, - ) - + async def v2_delete_template(self) -> StreamResponse[DeleteModerationTemplateResponse]: + return await self.delete("/api/v2/moderation/feeds_moderation_template", DeleteModerationTemplateResponse) + @telemetry.operation_name("getstream.api.moderation.v2_query_templates") - async def v2_query_templates( - self, - ) -> StreamResponse[QueryFeedModerationTemplatesResponse]: - return await self.get( - "/api/v2/moderation/feeds_moderation_template", - QueryFeedModerationTemplatesResponse, - ) - + async def v2_query_templates(self) -> StreamResponse[QueryFeedModerationTemplatesResponse]: + return await self.get("/api/v2/moderation/feeds_moderation_template", QueryFeedModerationTemplatesResponse) + @telemetry.operation_name("getstream.api.moderation.v2_upsert_template") - async def v2_upsert_template( - self, name: str, config: FeedsModerationTemplateConfigPayload - ) -> StreamResponse[UpsertModerationTemplateResponse]: + async def v2_upsert_template(self, name: str, config: FeedsModerationTemplateConfigPayload) -> StreamResponse[UpsertModerationTemplateResponse]: json = UpsertModerationTemplateRequest(name=name, config=config).to_dict() - return await self.post( - "/api/v2/moderation/feeds_moderation_template", - UpsertModerationTemplateResponse, - json=json, - ) - + return await self.post("/api/v2/moderation/feeds_moderation_template", UpsertModerationTemplateResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.flag") - async def flag( - self, - entity_id: str, - entity_type: str, - entity_creator_id: Optional[str] = None, - reason: Optional[str] = None, - user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - moderation_payload: Optional[ModerationPayload] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[FlagItemResponse]: - json = FlagRequest( - entity_id=entity_id, - entity_type=entity_type, - entity_creator_id=entity_creator_id, - reason=reason, - user_id=user_id, - custom=custom, - moderation_payload=moderation_payload, - user=user, - ).to_dict() + async def flag(self, entity_id: str, entity_type: str, entity_creator_id: Optional[str] = None, reason: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, moderation_payload: Optional[ModerationPayload] = None, user: Optional[UserRequest] = None) -> StreamResponse[FlagItemResponse]: + json = FlagRequest(entity_id=entity_id, entity_type=entity_type, entity_creator_id=entity_creator_id, reason=reason, user_id=user_id, custom=custom, moderation_payload=moderation_payload, user=user).to_dict() return await self.post("/api/v2/moderation/flag", FlagItemResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.get_flag_count") - async def get_flag_count( - self, entity_creator_id: str, entity_type: Optional[str] = None - ) -> StreamResponse[GetFlagCountResponse]: - json = GetFlagCountRequest( - entity_creator_id=entity_creator_id, entity_type=entity_type - ).to_dict() - return await self.post( - "/api/v2/moderation/flag_count", GetFlagCountResponse, json=json - ) - + async def get_flag_count(self, entity_creator_id: str, entity_type: Optional[str] = None) -> StreamResponse[GetFlagCountResponse]: + json = GetFlagCountRequest(entity_creator_id=entity_creator_id, entity_type=entity_type).to_dict() + return await self.post("/api/v2/moderation/flag_count", GetFlagCountResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.query_moderation_flags") - async def query_moderation_flags( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryModerationFlagsResponse]: - json = QueryModerationFlagsRequest( - limit=limit, next=next, prev=prev, sort=sort, filter=filter - ).to_dict() - return await self.post( - "/api/v2/moderation/flags", QueryModerationFlagsResponse, json=json - ) - + async def query_moderation_flags(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryModerationFlagsResponse]: + json = QueryModerationFlagsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() + return await self.post("/api/v2/moderation/flags", QueryModerationFlagsResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.labels") - async def labels( - self, - content: str, - category: Optional[str] = None, - content_id: Optional[str] = None, - content_type: Optional[str] = None, - dry_run: Optional[bool] = None, - policy: Optional[str] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[LabelsResponse]: - json = LabelsRequest( - content=content, - category=category, - content_id=content_id, - content_type=content_type, - dry_run=dry_run, - policy=policy, - user_id=user_id, - ).to_dict() + async def labels(self, content: str, category: Optional[str] = None, content_id: Optional[str] = None, content_type: Optional[str] = None, dry_run: Optional[bool] = None, policy: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[LabelsResponse]: + json = LabelsRequest(content=content, category=category, content_id=content_id, content_type=content_type, dry_run=dry_run, policy=policy, user_id=user_id).to_dict() return await self.post("/api/v2/moderation/labels", LabelsResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.query_label_results") - async def query_label_results( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryLabelResultsResponse]: - json = QueryLabelResultsRequest( - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return await self.post( - "/api/v2/moderation/labels/results", QueryLabelResultsResponse, json=json - ) - + async def query_label_results(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryLabelResultsResponse]: + json = QueryLabelResultsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return await self.post("/api/v2/moderation/labels/results", QueryLabelResultsResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.query_moderation_logs") - async def query_moderation_logs( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryModerationLogsResponse]: - json = QueryModerationLogsRequest( - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return await self.post( - "/api/v2/moderation/logs", QueryModerationLogsResponse, json=json - ) - + async def query_moderation_logs(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryModerationLogsResponse]: + json = QueryModerationLogsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return await self.post("/api/v2/moderation/logs", QueryModerationLogsResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.upsert_moderation_rule") - async def upsert_moderation_rule( - self, - name: str, - rule_type: str, - cooldown_period: Optional[str] = None, - description: Optional[str] = None, - enabled: Optional[bool] = None, - logic: Optional[str] = None, - team: Optional[str] = None, - user_id: Optional[str] = None, - action_sequences: Optional[List[CallRuleActionSequence]] = None, - conditions: Optional[List[RuleBuilderCondition]] = None, - config_keys: Optional[List[str]] = None, - groups: Optional[List[RuleBuilderConditionGroup]] = None, - action: Optional[RuleBuilderAction] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpsertModerationRuleResponse]: - json = UpsertModerationRuleRequest( - name=name, - rule_type=rule_type, - cooldown_period=cooldown_period, - description=description, - enabled=enabled, - logic=logic, - team=team, - user_id=user_id, - action_sequences=action_sequences, - conditions=conditions, - config_keys=config_keys, - groups=groups, - action=action, - user=user, - ).to_dict() - return await self.post( - "/api/v2/moderation/moderation_rule", - UpsertModerationRuleResponse, - json=json, - ) - + async def upsert_moderation_rule(self, name: str, rule_type: str, cooldown_period: Optional[str] = None, description: Optional[str] = None, enabled: Optional[bool] = None, logic: Optional[str] = None, team: Optional[str] = None, user_id: Optional[str] = None, action_sequences: Optional[List[CallRuleActionSequence]] = None, conditions: Optional[List[RuleBuilderCondition]] = None, config_keys: Optional[List[str]] = None, groups: Optional[List[RuleBuilderConditionGroup]] = None, action: Optional[RuleBuilderAction] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpsertModerationRuleResponse]: + json = UpsertModerationRuleRequest(name=name, rule_type=rule_type, cooldown_period=cooldown_period, description=description, enabled=enabled, logic=logic, team=team, user_id=user_id, action_sequences=action_sequences, conditions=conditions, config_keys=config_keys, groups=groups, action=action, user=user).to_dict() + return await self.post("/api/v2/moderation/moderation_rule", UpsertModerationRuleResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.delete_moderation_rule") - async def delete_moderation_rule( - self, id: str, user_id: Optional[str] = None - ) -> StreamResponse[DeleteModerationRuleResponse]: + async def delete_moderation_rule(self, id: str, user_id: Optional[str] = None) -> StreamResponse[DeleteModerationRuleResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "id": id, + "id": id, } - return await self.delete( - "/api/v2/moderation/moderation_rule/{id}", - DeleteModerationRuleResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.delete("/api/v2/moderation/moderation_rule/{id}", DeleteModerationRuleResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.get_moderation_rule") - async def get_moderation_rule( - self, id: str - ) -> StreamResponse[GetModerationRuleResponse]: + async def get_moderation_rule(self, id: str) -> StreamResponse[GetModerationRuleResponse]: path_params = { - "id": id, + "id": id, } - return await self.get( - "/api/v2/moderation/moderation_rule/{id}", - GetModerationRuleResponse, - path_params=path_params, - ) - + return await self.get("/api/v2/moderation/moderation_rule/{id}", GetModerationRuleResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.query_moderation_rules") - async def query_moderation_rules( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryModerationRulesResponse]: - json = QueryModerationRulesRequest( - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return await self.post( - "/api/v2/moderation/moderation_rules", - QueryModerationRulesResponse, - json=json, - ) - + async def query_moderation_rules(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryModerationRulesResponse]: + json = QueryModerationRulesRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return await self.post("/api/v2/moderation/moderation_rules", QueryModerationRulesResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.mute") - async def mute( - self, - target_ids: List[str], - timeout: Optional[int] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[MuteResponse]: - json = MuteRequest( - target_ids=target_ids, timeout=timeout, user_id=user_id, user=user - ).to_dict() + async def mute(self, target_ids: List[str], timeout: Optional[int] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[MuteResponse]: + json = MuteRequest(target_ids=target_ids, timeout=timeout, user_id=user_id, user=user).to_dict() return await self.post("/api/v2/moderation/mute", MuteResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.get_policy_test_run") - async def get_policy_test_run( - self, id: str - ) -> StreamResponse[PolicyTestRunResponse]: + async def get_policy_test_run(self, id: str) -> StreamResponse[PolicyTestRunResponse]: path_params = { - "id": id, + "id": id, } - return await self.get( - "/api/v2/moderation/policy_tests/runs/{id}", - PolicyTestRunResponse, - path_params=path_params, - ) - + return await self.get("/api/v2/moderation/policy_tests/runs/{id}", PolicyTestRunResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.list_policy_test_sets") async def list_policy_test_sets(self) -> StreamResponse[PolicyTestSetListResponse]: - return await self.get( - "/api/v2/moderation/policy_tests/sets", PolicyTestSetListResponse - ) - + return await self.get("/api/v2/moderation/policy_tests/sets", PolicyTestSetListResponse) + @telemetry.operation_name("getstream.api.moderation.create_policy_test_set") - async def create_policy_test_set( - self, - name: str, - config_key: Optional[str] = None, - mode: Optional[str] = None, - team: Optional[str] = None, - rows: Optional[List[PolicyTestRow]] = None, - seed: Optional[PolicyTestSeedSpec] = None, - ) -> StreamResponse[PolicyTestSetResponse]: - json = CreatePolicyTestSetRequest( - name=name, config_key=config_key, mode=mode, team=team, rows=rows, seed=seed - ).to_dict() - return await self.post( - "/api/v2/moderation/policy_tests/sets", PolicyTestSetResponse, json=json - ) - + async def create_policy_test_set(self, name: str, config_key: Optional[str] = None, mode: Optional[str] = None, team: Optional[str] = None, rows: Optional[List[PolicyTestRow]] = None, seed: Optional[PolicyTestSeedSpec] = None) -> StreamResponse[PolicyTestSetResponse]: + json = CreatePolicyTestSetRequest(name=name, config_key=config_key, mode=mode, team=team, rows=rows, seed=seed).to_dict() + return await self.post("/api/v2/moderation/policy_tests/sets", PolicyTestSetResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.delete_policy_test_set") async def delete_policy_test_set(self, id: str) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - return await self.delete( - "/api/v2/moderation/policy_tests/sets/{id}", - Response, - path_params=path_params, - ) - + return await self.delete("/api/v2/moderation/policy_tests/sets/{id}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.get_policy_test_set") - async def get_policy_test_set( - self, id: str - ) -> StreamResponse[PolicyTestSetResponse]: + async def get_policy_test_set(self, id: str) -> StreamResponse[PolicyTestSetResponse]: path_params = { - "id": id, + "id": id, } - return await self.get( - "/api/v2/moderation/policy_tests/sets/{id}", - PolicyTestSetResponse, - path_params=path_params, - ) - + return await self.get("/api/v2/moderation/policy_tests/sets/{id}", PolicyTestSetResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.start_policy_test_run") - async def start_policy_test_run( - self, id: str - ) -> StreamResponse[PolicyTestRunResponse]: + async def start_policy_test_run(self, id: str) -> StreamResponse[PolicyTestRunResponse]: path_params = { - "id": id, + "id": id, } - return await self.post( - "/api/v2/moderation/policy_tests/sets/{id}/runs", - PolicyTestRunResponse, - path_params=path_params, - ) - + return await self.post("/api/v2/moderation/policy_tests/sets/{id}/runs", PolicyTestRunResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.list_queues") - async def list_queues( - self, user_id: Optional[str] = None - ) -> StreamResponse[ListQueuesResponse]: + async def list_queues(self, user_id: Optional[str] = None) -> StreamResponse[ListQueuesResponse]: query_params = build_query_param(user_id=user_id) - return await self.get( - "/api/v2/moderation/queues", ListQueuesResponse, query_params=query_params - ) - + return await self.get("/api/v2/moderation/queues", ListQueuesResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.moderation.create_queue") - async def create_queue( - self, - name: str, - type: str, - description: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[Dict[str, object]]] = None, - filters: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueueResponse]: - json = CreateQueueRequest( - name=name, - type=type, - description=description, - user_id=user_id, - sort=sort, - filters=filters, - user=user, - ).to_dict() + async def create_queue(self, name: str, type: str, description: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[Dict[str, object]]] = None, filters: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueueResponse]: + json = CreateQueueRequest(name=name, type=type, description=description, user_id=user_id, sort=sort, filters=filters, user=user).to_dict() return await self.post("/api/v2/moderation/queues", QueueResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.get_queue") - async def get_queue( - self, id: str, user_id: Optional[str] = None - ) -> StreamResponse[QueueResponse]: + async def get_queue(self, id: str, user_id: Optional[str] = None) -> StreamResponse[QueueResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "id": id, + "id": id, } - return await self.get( - "/api/v2/moderation/queues/{id}", - QueueResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/moderation/queues/{id}", QueueResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.update_queue") - async def update_queue( - self, - id: str, - description: Optional[str] = None, - name: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[Dict[str, object]]] = None, - filters: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueueResponse]: + async def update_queue(self, id: str, description: Optional[str] = None, name: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[Dict[str, object]]] = None, filters: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueueResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateQueueRequest( - description=description, - name=name, - user_id=user_id, - sort=sort, - filters=filters, - user=user, - ).to_dict() - return await self.patch( - "/api/v2/moderation/queues/{id}", - QueueResponse, - path_params=path_params, - json=json, - ) - + json = UpdateQueueRequest(description=description, name=name, user_id=user_id, sort=sort, filters=filters, user=user).to_dict() + return await self.patch("/api/v2/moderation/queues/{id}", QueueResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.moderation.delete_queue") - async def delete_queue( - self, id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None - ) -> StreamResponse[QueueResponse]: + async def delete_queue(self, id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueueResponse]: path_params = { - "id": id, + "id": id, } json = DeleteQueueRequest(user_id=user_id, user=user).to_dict() - return await self.post( - "/api/v2/moderation/queues/{id}/delete", - QueueResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/moderation/queues/{id}/delete", QueueResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.moderation.query_review_queue") - async def query_review_queue( - self, - exclude_default_action_config: Optional[bool] = None, - limit: Optional[int] = None, - lock_count: Optional[int] = None, - lock_duration: Optional[int] = None, - lock_items: Optional[bool] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - stats_only: Optional[bool] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryReviewQueueResponse]: - json = QueryReviewQueueRequest( - exclude_default_action_config=exclude_default_action_config, - limit=limit, - lock_count=lock_count, - lock_duration=lock_duration, - lock_items=lock_items, - next=next, - prev=prev, - stats_only=stats_only, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return await self.post( - "/api/v2/moderation/review_queue", QueryReviewQueueResponse, json=json - ) - + async def query_review_queue(self, exclude_default_action_config: Optional[bool] = None, limit: Optional[int] = None, lock_count: Optional[int] = None, lock_duration: Optional[int] = None, lock_items: Optional[bool] = None, next: Optional[str] = None, prev: Optional[str] = None, stats_only: Optional[bool] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryReviewQueueResponse]: + json = QueryReviewQueueRequest(exclude_default_action_config=exclude_default_action_config, limit=limit, lock_count=lock_count, lock_duration=lock_duration, lock_items=lock_items, next=next, prev=prev, stats_only=stats_only, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return await self.post("/api/v2/moderation/review_queue", QueryReviewQueueResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.get_review_queue_item") - async def get_review_queue_item( - self, id: str - ) -> StreamResponse[GetReviewQueueItemResponse]: + async def get_review_queue_item(self, id: str) -> StreamResponse[GetReviewQueueItemResponse]: path_params = { - "id": id, + "id": id, } - return await self.get( - "/api/v2/moderation/review_queue/{id}", - GetReviewQueueItemResponse, - path_params=path_params, - ) - + return await self.get("/api/v2/moderation/review_queue/{id}", GetReviewQueueItemResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.get_setup_session") async def get_setup_session(self) -> StreamResponse[GetSetupSessionResponse]: return await self.get("/api/v2/moderation/setup", GetSetupSessionResponse) - + @telemetry.operation_name("getstream.api.moderation.upsert_setup_session") - async def upsert_setup_session( - self, - current_step: str, - status: str, - setup_data: Optional[Dict[str, object]] = None, - ) -> StreamResponse[UpsertSetupSessionResponse]: - json = UpsertSetupSessionRequest( - current_step=current_step, status=status, setup_data=setup_data - ).to_dict() - return await self.post( - "/api/v2/moderation/setup", UpsertSetupSessionResponse, json=json - ) - + async def upsert_setup_session(self, current_step: str, status: str, setup_data: Optional[Dict[str, object]] = None) -> StreamResponse[UpsertSetupSessionResponse]: + json = UpsertSetupSessionRequest(current_step=current_step, status=status, setup_data=setup_data).to_dict() + return await self.post("/api/v2/moderation/setup", UpsertSetupSessionResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.submit_action") - async def submit_action( - self, - action_type: str, - appeal_id: Optional[str] = None, - item_id: Optional[str] = None, - user_id: Optional[str] = None, - ban: Optional[BanActionRequestPayload] = None, - block: Optional[BlockActionRequestPayload] = None, - bypass: Optional[BypassActionRequest] = None, - custom: Optional[CustomActionRequestPayload] = None, - delete_activity: Optional[DeleteActivityRequestPayload] = None, - delete_comment: Optional[DeleteCommentRequestPayload] = None, - delete_message: Optional[DeleteMessageRequestPayload] = None, - delete_reaction: Optional[DeleteReactionRequestPayload] = None, - delete_user: Optional[DeleteUserRequestPayload] = None, - delete_user_messages: Optional[DeleteUserMessagesRequestPayload] = None, - escalate: Optional[EscalatePayload] = None, - flag: Optional[FlagRequest] = None, - mark_reviewed: Optional[MarkReviewedRequestPayload] = None, - reject_appeal: Optional[RejectAppealRequestPayload] = None, - restore: Optional[RestoreActionRequestPayload] = None, - shadow_block: Optional[ShadowBlockActionRequestPayload] = None, - unban: Optional[UnbanActionRequestPayload] = None, - unblock: Optional[UnblockActionRequestPayload] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[SubmitActionResponse]: - json = SubmitActionRequest( - action_type=action_type, - appeal_id=appeal_id, - item_id=item_id, - user_id=user_id, - ban=ban, - block=block, - bypass=bypass, - custom=custom, - delete_activity=delete_activity, - delete_comment=delete_comment, - delete_message=delete_message, - delete_reaction=delete_reaction, - delete_user=delete_user, - delete_user_messages=delete_user_messages, - escalate=escalate, - flag=flag, - mark_reviewed=mark_reviewed, - reject_appeal=reject_appeal, - restore=restore, - shadow_block=shadow_block, - unban=unban, - unblock=unblock, - user=user, - ).to_dict() - return await self.post( - "/api/v2/moderation/submit_action", SubmitActionResponse, json=json - ) - + async def submit_action(self, action_type: str, appeal_id: Optional[str] = None, item_id: Optional[str] = None, user_id: Optional[str] = None, ban: Optional[BanActionRequestPayload] = None, block: Optional[BlockActionRequestPayload] = None, bypass: Optional[BypassActionRequest] = None, custom: Optional[CustomActionRequestPayload] = None, delete_activity: Optional[DeleteActivityRequestPayload] = None, delete_comment: Optional[DeleteCommentRequestPayload] = None, delete_message: Optional[DeleteMessageRequestPayload] = None, delete_reaction: Optional[DeleteReactionRequestPayload] = None, delete_user: Optional[DeleteUserRequestPayload] = None, delete_user_messages: Optional[DeleteUserMessagesRequestPayload] = None, escalate: Optional[EscalatePayload] = None, flag: Optional[FlagRequest] = None, mark_reviewed: Optional[MarkReviewedRequestPayload] = None, reject_appeal: Optional[RejectAppealRequestPayload] = None, restore: Optional[RestoreActionRequestPayload] = None, shadow_block: Optional[ShadowBlockActionRequestPayload] = None, unban: Optional[UnbanActionRequestPayload] = None, unblock: Optional[UnblockActionRequestPayload] = None, user: Optional[UserRequest] = None) -> StreamResponse[SubmitActionResponse]: + json = SubmitActionRequest(action_type=action_type, appeal_id=appeal_id, item_id=item_id, user_id=user_id, ban=ban, block=block, bypass=bypass, custom=custom, delete_activity=delete_activity, delete_comment=delete_comment, delete_message=delete_message, delete_reaction=delete_reaction, delete_user=delete_user, delete_user_messages=delete_user_messages, escalate=escalate, flag=flag, mark_reviewed=mark_reviewed, reject_appeal=reject_appeal, restore=restore, shadow_block=shadow_block, unban=unban, unblock=unblock, user=user).to_dict() + return await self.post("/api/v2/moderation/submit_action", SubmitActionResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.submit_moderation_feedback") - async def submit_moderation_feedback( - self, - message: str, - published_at: str, - reference: str, - channel_id: Optional[str] = None, - current_recommended_action: Optional[str] = None, - description: Optional[str] = None, - expected_recommended_action: Optional[str] = None, - current_labels: Optional[List[str]] = None, - expected_labels: Optional[List[str]] = None, - ) -> StreamResponse[SubmitModerationFeedbackResponse]: - json = SubmitModerationFeedbackRequest( - message=message, - published_at=published_at, - reference=reference, - channel_id=channel_id, - current_recommended_action=current_recommended_action, - description=description, - expected_recommended_action=expected_recommended_action, - current_labels=current_labels, - expected_labels=expected_labels, - ).to_dict() - return await self.post( - "/api/v2/moderation/submit_moderation_feedback", - SubmitModerationFeedbackResponse, - json=json, - ) - + async def submit_moderation_feedback(self, message: str, published_at: str, reference: str, channel_id: Optional[str] = None, current_recommended_action: Optional[str] = None, description: Optional[str] = None, expected_recommended_action: Optional[str] = None, current_labels: Optional[List[str]] = None, expected_labels: Optional[List[str]] = None) -> StreamResponse[SubmitModerationFeedbackResponse]: + json = SubmitModerationFeedbackRequest(message=message, published_at=published_at, reference=reference, channel_id=channel_id, current_recommended_action=current_recommended_action, description=description, expected_recommended_action=expected_recommended_action, current_labels=current_labels, expected_labels=expected_labels).to_dict() + return await self.post("/api/v2/moderation/submit_moderation_feedback", SubmitModerationFeedbackResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.unban") - async def unban( - self, - target_user_id: str, - channel_cid: Optional[str] = None, - created_by: Optional[str] = None, - unbanned_by_id: Optional[str] = None, - unbanned_by: Optional[UserRequest] = None, - ) -> StreamResponse[UnbanResponse]: - query_params = build_query_param( - target_user_id=target_user_id, - channel_cid=channel_cid, - created_by=created_by, - ) - json = UnbanRequest( - unbanned_by_id=unbanned_by_id, unbanned_by=unbanned_by - ).to_dict() - return await self.post( - "/api/v2/moderation/unban", - UnbanResponse, - query_params=query_params, - json=json, - ) - + async def unban(self, target_user_id: str, channel_cid: Optional[str] = None, created_by: Optional[str] = None, unbanned_by_id: Optional[str] = None, unbanned_by: Optional[UserRequest] = None) -> StreamResponse[UnbanResponse]: + query_params = build_query_param(target_user_id=target_user_id, channel_cid=channel_cid, created_by=created_by) + json = UnbanRequest(unbanned_by_id=unbanned_by_id, unbanned_by=unbanned_by).to_dict() + return await self.post("/api/v2/moderation/unban", UnbanResponse, query_params=query_params, json=json) + @telemetry.operation_name("getstream.api.moderation.unmute") - async def unmute( - self, - target_ids: List[str], - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UnmuteResponse]: - json = UnmuteRequest( - target_ids=target_ids, user_id=user_id, user=user - ).to_dict() + async def unmute(self, target_ids: List[str], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[UnmuteResponse]: + json = UnmuteRequest(target_ids=target_ids, user_id=user_id, user=user).to_dict() return await self.post("/api/v2/moderation/unmute", UnmuteResponse, json=json) + \ No newline at end of file diff --git a/getstream/moderation/rest_client.py b/getstream/moderation/rest_client.py index d9c08df2..e159eeeb 100644 --- a/getstream/moderation/rest_client.py +++ b/getstream/moderation/rest_client.py @@ -1,3 +1,4 @@ + # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import BaseClient from getstream.common import telemetry @@ -7,14 +8,8 @@ class ModerationRestClient(BaseClient): - def __init__( - self, - api_key: str, - base_url: str, - timeout: float, - token: str, - user_agent: str | None = None, - ): + + def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): """ Initializes ModerationClient with BaseClient instance :param api_key: A string representing the client's API key @@ -31,1052 +26,306 @@ def __init__( user_agent=user_agent, ) + @telemetry.operation_name("getstream.api.moderation.get_action_config") - def get_action_config( - self, - queue_type: Optional[str] = None, - entity_type: Optional[str] = None, - exclude_defaults: Optional[bool] = None, - only_defaults: Optional[bool] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[GetActionConfigResponse]: - query_params = build_query_param( - queue_type=queue_type, - entity_type=entity_type, - exclude_defaults=exclude_defaults, - only_defaults=only_defaults, - user_id=user_id, - ) - return self.get( - "/api/v2/moderation/action_config", - GetActionConfigResponse, - query_params=query_params, - ) - + def get_action_config(self, queue_type: Optional[str] = None, entity_type: Optional[str] = None, exclude_defaults: Optional[bool] = None, only_defaults: Optional[bool] = None, user_id: Optional[str] = None) -> StreamResponse[GetActionConfigResponse]: + query_params = build_query_param(queue_type=queue_type, entity_type=entity_type, exclude_defaults=exclude_defaults, only_defaults=only_defaults, user_id=user_id) + return self.get("/api/v2/moderation/action_config", GetActionConfigResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.moderation.upsert_action_config") - def upsert_action_config( - self, - action: str, - entity_type: str, - order: int, - description: Optional[str] = None, - icon: Optional[str] = None, - id: Optional[str] = None, - queue_type: Optional[str] = None, - user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpsertActionConfigResponse]: - json = UpsertActionConfigRequest( - action=action, - entity_type=entity_type, - order=order, - description=description, - icon=icon, - id=id, - queue_type=queue_type, - user_id=user_id, - custom=custom, - user=user, - ).to_dict() - return self.post( - "/api/v2/moderation/action_config", UpsertActionConfigResponse, json=json - ) - + def upsert_action_config(self, action: str, entity_type: str, order: int, description: Optional[str] = None, icon: Optional[str] = None, id: Optional[str] = None, queue_type: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpsertActionConfigResponse]: + json = UpsertActionConfigRequest(action=action, entity_type=entity_type, order=order, description=description, icon=icon, id=id, queue_type=queue_type, user_id=user_id, custom=custom, user=user).to_dict() + return self.post("/api/v2/moderation/action_config", UpsertActionConfigResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.bulk_upsert_action_config") - def bulk_upsert_action_config( - self, - action_configs: List[UpsertActionConfigItem], - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[BulkUpsertActionConfigResponse]: - json = BulkUpsertActionConfigRequest( - action_configs=action_configs, user_id=user_id, user=user - ).to_dict() - return self.post( - "/api/v2/moderation/action_config/bulk", - BulkUpsertActionConfigResponse, - json=json, - ) - + def bulk_upsert_action_config(self, action_configs: List[UpsertActionConfigItem], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[BulkUpsertActionConfigResponse]: + json = BulkUpsertActionConfigRequest(action_configs=action_configs, user_id=user_id, user=user).to_dict() + return self.post("/api/v2/moderation/action_config/bulk", BulkUpsertActionConfigResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.bulk_delete_action_config") - def bulk_delete_action_config( - self, - ids: List[str], - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[BulkDeleteActionConfigResponse]: - json = BulkDeleteActionConfigRequest( - ids=ids, user_id=user_id, user=user - ).to_dict() - return self.post( - "/api/v2/moderation/action_config/bulk_delete", - BulkDeleteActionConfigResponse, - json=json, - ) - + def bulk_delete_action_config(self, ids: List[str], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[BulkDeleteActionConfigResponse]: + json = BulkDeleteActionConfigRequest(ids=ids, user_id=user_id, user=user).to_dict() + return self.post("/api/v2/moderation/action_config/bulk_delete", BulkDeleteActionConfigResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.delete_action_config") - def delete_action_config( - self, id: str, user_id: Optional[str] = None - ) -> StreamResponse[DeleteActionConfigResponse]: + def delete_action_config(self, id: str, user_id: Optional[str] = None) -> StreamResponse[DeleteActionConfigResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "id": id, + "id": id, } - return self.delete( - "/api/v2/moderation/action_config/{id}", - DeleteActionConfigResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/moderation/action_config/{id}", DeleteActionConfigResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.insert_action_log") - def insert_action_log( - self, - action_type: str, - entity_creator_id: str, - entity_id: str, - entity_type: str, - reason: Optional[str] = None, - reporter_type: Optional[str] = None, - reporter_user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - ) -> StreamResponse[InsertActionLogResponse]: - json = InsertActionLogRequest( - action_type=action_type, - entity_creator_id=entity_creator_id, - entity_id=entity_id, - entity_type=entity_type, - reason=reason, - reporter_type=reporter_type, - reporter_user_id=reporter_user_id, - custom=custom, - ).to_dict() - return self.post( - "/api/v2/moderation/action_logs", InsertActionLogResponse, json=json - ) - + def insert_action_log(self, action_type: str, entity_creator_id: str, entity_id: str, entity_type: str, reason: Optional[str] = None, reporter_type: Optional[str] = None, reporter_user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[InsertActionLogResponse]: + json = InsertActionLogRequest(action_type=action_type, entity_creator_id=entity_creator_id, entity_id=entity_id, entity_type=entity_type, reason=reason, reporter_type=reporter_type, reporter_user_id=reporter_user_id, custom=custom).to_dict() + return self.post("/api/v2/moderation/action_logs", InsertActionLogResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.analyze") - def analyze( - self, - async_response: Optional[bool] = None, - config_key: Optional[str] = None, - content_published_at: Optional[datetime] = None, - entity_creator_id: Optional[str] = None, - entity_id: Optional[str] = None, - entity_type: Optional[str] = None, - user_id: Optional[str] = None, - content_ids: Optional[Dict[str, str]] = None, - custom: Optional[Dict[str, object]] = None, - texts: Optional[Dict[str, str]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[AnalyzeResponse]: - json = AnalyzeRequest( - async_response=async_response, - config_key=config_key, - content_published_at=content_published_at, - entity_creator_id=entity_creator_id, - entity_id=entity_id, - entity_type=entity_type, - user_id=user_id, - content_ids=content_ids, - custom=custom, - texts=texts, - user=user, - ).to_dict() + def analyze(self, async_response: Optional[bool] = None, config_key: Optional[str] = None, content_published_at: Optional[datetime] = None, entity_creator_id: Optional[str] = None, entity_id: Optional[str] = None, entity_type: Optional[str] = None, user_id: Optional[str] = None, content_ids: Optional[Dict[str, str]] = None, custom: Optional[Dict[str, object]] = None, texts: Optional[Dict[str, str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[AnalyzeResponse]: + json = AnalyzeRequest(async_response=async_response, config_key=config_key, content_published_at=content_published_at, entity_creator_id=entity_creator_id, entity_id=entity_id, entity_type=entity_type, user_id=user_id, content_ids=content_ids, custom=custom, texts=texts, user=user).to_dict() return self.post("/api/v2/moderation/analyze", AnalyzeResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.appeal") - def appeal( - self, - appeal_reason: str, - entity_id: str, - entity_type: str, - review_queue_item_id: Optional[str] = None, - user_id: Optional[str] = None, - attachments: Optional[List[str]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[AppealResponse]: - json = AppealRequest( - appeal_reason=appeal_reason, - entity_id=entity_id, - entity_type=entity_type, - review_queue_item_id=review_queue_item_id, - user_id=user_id, - attachments=attachments, - user=user, - ).to_dict() + def appeal(self, appeal_reason: str, entity_id: str, entity_type: str, review_queue_item_id: Optional[str] = None, user_id: Optional[str] = None, attachments: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[AppealResponse]: + json = AppealRequest(appeal_reason=appeal_reason, entity_id=entity_id, entity_type=entity_type, review_queue_item_id=review_queue_item_id, user_id=user_id, attachments=attachments, user=user).to_dict() return self.post("/api/v2/moderation/appeal", AppealResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.get_appeal") def get_appeal(self, id: str) -> StreamResponse[GetAppealResponse]: path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/moderation/appeal/{id}", GetAppealResponse, path_params=path_params - ) - + return self.get("/api/v2/moderation/appeal/{id}", GetAppealResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.query_appeals") - def query_appeals( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryAppealsResponse]: - json = QueryAppealsRequest( - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() + def query_appeals(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryAppealsResponse]: + json = QueryAppealsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() return self.post("/api/v2/moderation/appeals", QueryAppealsResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.bulk_action_appeals") - def bulk_action_appeals( - self, - action_type: str, - appeal_ids: List[str], - user_id: Optional[str] = None, - mark_reviewed: Optional[MarkReviewedRequestPayload] = None, - reject_appeal: Optional[RejectAppealRequestPayload] = None, - restore: Optional[RestoreActionRequestPayload] = None, - unban: Optional[UnbanActionRequestPayload] = None, - unblock: Optional[UnblockActionRequestPayload] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[BulkActionAppealsResponse]: - json = BulkActionAppealsRequest( - action_type=action_type, - appeal_ids=appeal_ids, - user_id=user_id, - mark_reviewed=mark_reviewed, - reject_appeal=reject_appeal, - restore=restore, - unban=unban, - unblock=unblock, - user=user, - ).to_dict() - return self.post( - "/api/v2/moderation/appeals/bulk_action", - BulkActionAppealsResponse, - json=json, - ) - + def bulk_action_appeals(self, action_type: str, appeal_ids: List[str], user_id: Optional[str] = None, mark_reviewed: Optional[MarkReviewedRequestPayload] = None, reject_appeal: Optional[RejectAppealRequestPayload] = None, restore: Optional[RestoreActionRequestPayload] = None, unban: Optional[UnbanActionRequestPayload] = None, unblock: Optional[UnblockActionRequestPayload] = None, user: Optional[UserRequest] = None) -> StreamResponse[BulkActionAppealsResponse]: + json = BulkActionAppealsRequest(action_type=action_type, appeal_ids=appeal_ids, user_id=user_id, mark_reviewed=mark_reviewed, reject_appeal=reject_appeal, restore=restore, unban=unban, unblock=unblock, user=user).to_dict() + return self.post("/api/v2/moderation/appeals/bulk_action", BulkActionAppealsResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.ban") - def ban( - self, - target_user_id: str, - banned_by_id: Optional[str] = None, - channel_cid: Optional[str] = None, - delete_messages: Optional[str] = None, - ip_ban: Optional[bool] = None, - reason: Optional[str] = None, - shadow: Optional[bool] = None, - timeout: Optional[int] = None, - banned_by: Optional[UserRequest] = None, - ) -> StreamResponse[ModerationBanResponse]: - json = BanRequest( - target_user_id=target_user_id, - banned_by_id=banned_by_id, - channel_cid=channel_cid, - delete_messages=delete_messages, - ip_ban=ip_ban, - reason=reason, - shadow=shadow, - timeout=timeout, - banned_by=banned_by, - ).to_dict() + def ban(self, target_user_id: str, banned_by_id: Optional[str] = None, channel_cid: Optional[str] = None, delete_messages: Optional[str] = None, ip_ban: Optional[bool] = None, reason: Optional[str] = None, shadow: Optional[bool] = None, timeout: Optional[int] = None, banned_by: Optional[UserRequest] = None) -> StreamResponse[ModerationBanResponse]: + json = BanRequest(target_user_id=target_user_id, banned_by_id=banned_by_id, channel_cid=channel_cid, delete_messages=delete_messages, ip_ban=ip_ban, reason=reason, shadow=shadow, timeout=timeout, banned_by=banned_by).to_dict() return self.post("/api/v2/moderation/ban", ModerationBanResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.bulk_image_moderation") - def bulk_image_moderation( - self, csv_file: str - ) -> StreamResponse[BulkImageModerationResponse]: + def bulk_image_moderation(self, csv_file: str) -> StreamResponse[BulkImageModerationResponse]: json = BulkImageModerationRequest(csv_file=csv_file).to_dict() - return self.post( - "/api/v2/moderation/bulk_image_moderation", - BulkImageModerationResponse, - json=json, - ) - + return self.post("/api/v2/moderation/bulk_image_moderation", BulkImageModerationResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.bypass") - def bypass( - self, enabled: bool, target_user_id: str - ) -> StreamResponse[BypassResponse]: + def bypass(self, enabled: bool, target_user_id: str) -> StreamResponse[BypassResponse]: json = BypassRequest(enabled=enabled, target_user_id=target_user_id).to_dict() return self.post("/api/v2/moderation/bypass", BypassResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.check") - def check( - self, - entity_creator_id: str, - entity_id: str, - entity_type: str, - config_key: Optional[str] = None, - config_team: Optional[str] = None, - content_published_at: Optional[datetime] = None, - test_mode: Optional[bool] = None, - user_id: Optional[str] = None, - config: Optional[ModerationConfig] = None, - moderation_payload: Optional[ModerationPayload] = None, - options: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[CheckResponse]: - json = CheckRequest( - entity_creator_id=entity_creator_id, - entity_id=entity_id, - entity_type=entity_type, - config_key=config_key, - config_team=config_team, - content_published_at=content_published_at, - test_mode=test_mode, - user_id=user_id, - config=config, - moderation_payload=moderation_payload, - options=options, - user=user, - ).to_dict() + def check(self, entity_creator_id: str, entity_id: str, entity_type: str, config_key: Optional[str] = None, config_team: Optional[str] = None, content_published_at: Optional[datetime] = None, test_mode: Optional[bool] = None, user_id: Optional[str] = None, config: Optional[ModerationConfig] = None, moderation_payload: Optional[ModerationPayload] = None, options: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[CheckResponse]: + json = CheckRequest(entity_creator_id=entity_creator_id, entity_id=entity_id, entity_type=entity_type, config_key=config_key, config_team=config_team, content_published_at=content_published_at, test_mode=test_mode, user_id=user_id, config=config, moderation_payload=moderation_payload, options=options, user=user).to_dict() return self.post("/api/v2/moderation/check", CheckResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.check_s3_access") - def check_s3_access( - self, s3_url: Optional[str] = None - ) -> StreamResponse[CheckS3AccessResponse]: + def check_s3_access(self, s3_url: Optional[str] = None) -> StreamResponse[CheckS3AccessResponse]: json = CheckS3AccessRequest(s3_url=s3_url).to_dict() - return self.post( - "/api/v2/moderation/check_s3_access", CheckS3AccessResponse, json=json - ) - + return self.post("/api/v2/moderation/check_s3_access", CheckS3AccessResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.upsert_config") - def upsert_config( - self, - key: str, - _async: Optional[bool] = None, - team: Optional[str] = None, - user_id: Optional[str] = None, - ai_audio_config: Optional[AIAudioConfigRequest] = None, - ai_image_config: Optional[AIImageConfig] = None, - ai_text_config: Optional[AITextConfig] = None, - ai_video_config: Optional[AIVideoConfig] = None, - automod_platform_circumvention_config: Optional[ - AutomodPlatformCircumventionConfig - ] = None, - automod_semantic_filters_config: Optional[AutomodSemanticFiltersConfig] = None, - automod_toxicity_config: Optional[AutomodToxicityConfig] = None, - aws_rekognition_config: Optional[AIImageConfig] = None, - block_list_config: Optional[BlockListConfig] = None, - bodyguard_config: Optional[AITextConfig] = None, - flood_config: Optional[FloodConfig] = None, - google_vision_config: Optional[GoogleVisionConfig] = None, - llm_config: Optional[LLMConfig] = None, - rule_builder_config: Optional[RuleBuilderConfig] = None, - user: Optional[UserRequest] = None, - velocity_filter_config: Optional[VelocityFilterConfig] = None, - video_call_rule_config: Optional[VideoCallRuleConfig] = None, - ) -> StreamResponse[UpsertConfigResponse]: - json = UpsertConfigRequest( - key=key, - _async=_async, - team=team, - user_id=user_id, - ai_audio_config=ai_audio_config, - ai_image_config=ai_image_config, - ai_text_config=ai_text_config, - ai_video_config=ai_video_config, - automod_platform_circumvention_config=automod_platform_circumvention_config, - automod_semantic_filters_config=automod_semantic_filters_config, - automod_toxicity_config=automod_toxicity_config, - aws_rekognition_config=aws_rekognition_config, - block_list_config=block_list_config, - bodyguard_config=bodyguard_config, - flood_config=flood_config, - google_vision_config=google_vision_config, - llm_config=llm_config, - rule_builder_config=rule_builder_config, - user=user, - velocity_filter_config=velocity_filter_config, - video_call_rule_config=video_call_rule_config, - ).to_dict() + def upsert_config(self, key: str, _async: Optional[bool] = None, team: Optional[str] = None, user_id: Optional[str] = None, ai_audio_config: Optional[AIAudioConfigRequest] = None, ai_image_config: Optional[AIImageConfig] = None, ai_text_config: Optional[AITextConfig] = None, ai_video_config: Optional[AIVideoConfigRequest] = None, automod_platform_circumvention_config: Optional[AutomodPlatformCircumventionConfig] = None, automod_semantic_filters_config: Optional[AutomodSemanticFiltersConfig] = None, automod_toxicity_config: Optional[AutomodToxicityConfig] = None, aws_rekognition_config: Optional[AIImageConfig] = None, block_list_config: Optional[BlockListConfig] = None, bodyguard_config: Optional[AITextConfig] = None, flood_config: Optional[FloodConfig] = None, google_vision_config: Optional[GoogleVisionConfig] = None, llm_config: Optional[LLMConfig] = None, rule_builder_config: Optional[RuleBuilderConfig] = None, user: Optional[UserRequest] = None, velocity_filter_config: Optional[VelocityFilterConfig] = None, video_call_rule_config: Optional[VideoCallRuleConfig] = None) -> StreamResponse[UpsertConfigResponse]: + json = UpsertConfigRequest(key=key, _async=_async, team=team, user_id=user_id, ai_audio_config=ai_audio_config, ai_image_config=ai_image_config, ai_text_config=ai_text_config, ai_video_config=ai_video_config, automod_platform_circumvention_config=automod_platform_circumvention_config, automod_semantic_filters_config=automod_semantic_filters_config, automod_toxicity_config=automod_toxicity_config, aws_rekognition_config=aws_rekognition_config, block_list_config=block_list_config, bodyguard_config=bodyguard_config, flood_config=flood_config, google_vision_config=google_vision_config, llm_config=llm_config, rule_builder_config=rule_builder_config, user=user, velocity_filter_config=velocity_filter_config, video_call_rule_config=video_call_rule_config).to_dict() return self.post("/api/v2/moderation/config", UpsertConfigResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.delete_config") - def delete_config( - self, key: str, team: Optional[str] = None, user_id: Optional[str] = None - ) -> StreamResponse[DeleteModerationConfigResponse]: + def delete_config(self, key: str, team: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[DeleteModerationConfigResponse]: query_params = build_query_param(team=team, user_id=user_id) path_params = { - "key": key, + "key": key, } - return self.delete( - "/api/v2/moderation/config/{key}", - DeleteModerationConfigResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/moderation/config/{key}", DeleteModerationConfigResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.get_config") - def get_config( - self, key: str, team: Optional[str] = None - ) -> StreamResponse[GetConfigResponse]: + def get_config(self, key: str, team: Optional[str] = None) -> StreamResponse[GetConfigResponse]: query_params = build_query_param(team=team) path_params = { - "key": key, + "key": key, } - return self.get( - "/api/v2/moderation/config/{key}", - GetConfigResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/moderation/config/{key}", GetConfigResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.query_moderation_configs") - def query_moderation_configs( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryModerationConfigsResponse]: - json = QueryModerationConfigsRequest( - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return self.post( - "/api/v2/moderation/configs", QueryModerationConfigsResponse, json=json - ) - + def query_moderation_configs(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryModerationConfigsResponse]: + json = QueryModerationConfigsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return self.post("/api/v2/moderation/configs", QueryModerationConfigsResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.custom_check") - def custom_check( - self, - entity_id: str, - entity_type: str, - flags: List[CustomCheckFlag], - entity_creator_id: Optional[str] = None, - user_id: Optional[str] = None, - moderation_payload: Optional[ModerationPayloadRequest] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[CustomCheckResponse]: - json = CustomCheckRequest( - entity_id=entity_id, - entity_type=entity_type, - flags=flags, - entity_creator_id=entity_creator_id, - user_id=user_id, - moderation_payload=moderation_payload, - user=user, - ).to_dict() - return self.post( - "/api/v2/moderation/custom_check", CustomCheckResponse, json=json - ) - + def custom_check(self, entity_id: str, entity_type: str, flags: List[CustomCheckFlag], entity_creator_id: Optional[str] = None, user_id: Optional[str] = None, moderation_payload: Optional[ModerationPayloadRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[CustomCheckResponse]: + json = CustomCheckRequest(entity_id=entity_id, entity_type=entity_type, flags=flags, entity_creator_id=entity_creator_id, user_id=user_id, moderation_payload=moderation_payload, user=user).to_dict() + return self.post("/api/v2/moderation/custom_check", CustomCheckResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.v2_delete_template") def v2_delete_template(self) -> StreamResponse[DeleteModerationTemplateResponse]: - return self.delete( - "/api/v2/moderation/feeds_moderation_template", - DeleteModerationTemplateResponse, - ) - + return self.delete("/api/v2/moderation/feeds_moderation_template", DeleteModerationTemplateResponse) + @telemetry.operation_name("getstream.api.moderation.v2_query_templates") - def v2_query_templates( - self, - ) -> StreamResponse[QueryFeedModerationTemplatesResponse]: - return self.get( - "/api/v2/moderation/feeds_moderation_template", - QueryFeedModerationTemplatesResponse, - ) - + def v2_query_templates(self) -> StreamResponse[QueryFeedModerationTemplatesResponse]: + return self.get("/api/v2/moderation/feeds_moderation_template", QueryFeedModerationTemplatesResponse) + @telemetry.operation_name("getstream.api.moderation.v2_upsert_template") - def v2_upsert_template( - self, name: str, config: FeedsModerationTemplateConfigPayload - ) -> StreamResponse[UpsertModerationTemplateResponse]: + def v2_upsert_template(self, name: str, config: FeedsModerationTemplateConfigPayload) -> StreamResponse[UpsertModerationTemplateResponse]: json = UpsertModerationTemplateRequest(name=name, config=config).to_dict() - return self.post( - "/api/v2/moderation/feeds_moderation_template", - UpsertModerationTemplateResponse, - json=json, - ) - + return self.post("/api/v2/moderation/feeds_moderation_template", UpsertModerationTemplateResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.flag") - def flag( - self, - entity_id: str, - entity_type: str, - entity_creator_id: Optional[str] = None, - reason: Optional[str] = None, - user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - moderation_payload: Optional[ModerationPayload] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[FlagItemResponse]: - json = FlagRequest( - entity_id=entity_id, - entity_type=entity_type, - entity_creator_id=entity_creator_id, - reason=reason, - user_id=user_id, - custom=custom, - moderation_payload=moderation_payload, - user=user, - ).to_dict() + def flag(self, entity_id: str, entity_type: str, entity_creator_id: Optional[str] = None, reason: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, moderation_payload: Optional[ModerationPayload] = None, user: Optional[UserRequest] = None) -> StreamResponse[FlagItemResponse]: + json = FlagRequest(entity_id=entity_id, entity_type=entity_type, entity_creator_id=entity_creator_id, reason=reason, user_id=user_id, custom=custom, moderation_payload=moderation_payload, user=user).to_dict() return self.post("/api/v2/moderation/flag", FlagItemResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.get_flag_count") - def get_flag_count( - self, entity_creator_id: str, entity_type: Optional[str] = None - ) -> StreamResponse[GetFlagCountResponse]: - json = GetFlagCountRequest( - entity_creator_id=entity_creator_id, entity_type=entity_type - ).to_dict() - return self.post( - "/api/v2/moderation/flag_count", GetFlagCountResponse, json=json - ) - + def get_flag_count(self, entity_creator_id: str, entity_type: Optional[str] = None) -> StreamResponse[GetFlagCountResponse]: + json = GetFlagCountRequest(entity_creator_id=entity_creator_id, entity_type=entity_type).to_dict() + return self.post("/api/v2/moderation/flag_count", GetFlagCountResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.query_moderation_flags") - def query_moderation_flags( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryModerationFlagsResponse]: - json = QueryModerationFlagsRequest( - limit=limit, next=next, prev=prev, sort=sort, filter=filter - ).to_dict() - return self.post( - "/api/v2/moderation/flags", QueryModerationFlagsResponse, json=json - ) - + def query_moderation_flags(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryModerationFlagsResponse]: + json = QueryModerationFlagsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() + return self.post("/api/v2/moderation/flags", QueryModerationFlagsResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.labels") - def labels( - self, - content: str, - category: Optional[str] = None, - content_id: Optional[str] = None, - content_type: Optional[str] = None, - dry_run: Optional[bool] = None, - policy: Optional[str] = None, - user_id: Optional[str] = None, - ) -> StreamResponse[LabelsResponse]: - json = LabelsRequest( - content=content, - category=category, - content_id=content_id, - content_type=content_type, - dry_run=dry_run, - policy=policy, - user_id=user_id, - ).to_dict() + def labels(self, content: str, category: Optional[str] = None, content_id: Optional[str] = None, content_type: Optional[str] = None, dry_run: Optional[bool] = None, policy: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[LabelsResponse]: + json = LabelsRequest(content=content, category=category, content_id=content_id, content_type=content_type, dry_run=dry_run, policy=policy, user_id=user_id).to_dict() return self.post("/api/v2/moderation/labels", LabelsResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.query_label_results") - def query_label_results( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryLabelResultsResponse]: - json = QueryLabelResultsRequest( - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return self.post( - "/api/v2/moderation/labels/results", QueryLabelResultsResponse, json=json - ) - + def query_label_results(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryLabelResultsResponse]: + json = QueryLabelResultsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return self.post("/api/v2/moderation/labels/results", QueryLabelResultsResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.query_moderation_logs") - def query_moderation_logs( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryModerationLogsResponse]: - json = QueryModerationLogsRequest( - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return self.post( - "/api/v2/moderation/logs", QueryModerationLogsResponse, json=json - ) - + def query_moderation_logs(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryModerationLogsResponse]: + json = QueryModerationLogsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return self.post("/api/v2/moderation/logs", QueryModerationLogsResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.upsert_moderation_rule") - def upsert_moderation_rule( - self, - name: str, - rule_type: str, - cooldown_period: Optional[str] = None, - description: Optional[str] = None, - enabled: Optional[bool] = None, - logic: Optional[str] = None, - team: Optional[str] = None, - user_id: Optional[str] = None, - action_sequences: Optional[List[CallRuleActionSequence]] = None, - conditions: Optional[List[RuleBuilderCondition]] = None, - config_keys: Optional[List[str]] = None, - groups: Optional[List[RuleBuilderConditionGroup]] = None, - action: Optional[RuleBuilderAction] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UpsertModerationRuleResponse]: - json = UpsertModerationRuleRequest( - name=name, - rule_type=rule_type, - cooldown_period=cooldown_period, - description=description, - enabled=enabled, - logic=logic, - team=team, - user_id=user_id, - action_sequences=action_sequences, - conditions=conditions, - config_keys=config_keys, - groups=groups, - action=action, - user=user, - ).to_dict() - return self.post( - "/api/v2/moderation/moderation_rule", - UpsertModerationRuleResponse, - json=json, - ) - + def upsert_moderation_rule(self, name: str, rule_type: str, cooldown_period: Optional[str] = None, description: Optional[str] = None, enabled: Optional[bool] = None, logic: Optional[str] = None, team: Optional[str] = None, user_id: Optional[str] = None, action_sequences: Optional[List[CallRuleActionSequence]] = None, conditions: Optional[List[RuleBuilderCondition]] = None, config_keys: Optional[List[str]] = None, groups: Optional[List[RuleBuilderConditionGroup]] = None, action: Optional[RuleBuilderAction] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpsertModerationRuleResponse]: + json = UpsertModerationRuleRequest(name=name, rule_type=rule_type, cooldown_period=cooldown_period, description=description, enabled=enabled, logic=logic, team=team, user_id=user_id, action_sequences=action_sequences, conditions=conditions, config_keys=config_keys, groups=groups, action=action, user=user).to_dict() + return self.post("/api/v2/moderation/moderation_rule", UpsertModerationRuleResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.delete_moderation_rule") - def delete_moderation_rule( - self, id: str, user_id: Optional[str] = None - ) -> StreamResponse[DeleteModerationRuleResponse]: + def delete_moderation_rule(self, id: str, user_id: Optional[str] = None) -> StreamResponse[DeleteModerationRuleResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "id": id, + "id": id, } - return self.delete( - "/api/v2/moderation/moderation_rule/{id}", - DeleteModerationRuleResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.delete("/api/v2/moderation/moderation_rule/{id}", DeleteModerationRuleResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.get_moderation_rule") def get_moderation_rule(self, id: str) -> StreamResponse[GetModerationRuleResponse]: path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/moderation/moderation_rule/{id}", - GetModerationRuleResponse, - path_params=path_params, - ) - + return self.get("/api/v2/moderation/moderation_rule/{id}", GetModerationRuleResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.query_moderation_rules") - def query_moderation_rules( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryModerationRulesResponse]: - json = QueryModerationRulesRequest( - limit=limit, - next=next, - prev=prev, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return self.post( - "/api/v2/moderation/moderation_rules", - QueryModerationRulesResponse, - json=json, - ) - + def query_moderation_rules(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryModerationRulesResponse]: + json = QueryModerationRulesRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return self.post("/api/v2/moderation/moderation_rules", QueryModerationRulesResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.mute") - def mute( - self, - target_ids: List[str], - timeout: Optional[int] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[MuteResponse]: - json = MuteRequest( - target_ids=target_ids, timeout=timeout, user_id=user_id, user=user - ).to_dict() + def mute(self, target_ids: List[str], timeout: Optional[int] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[MuteResponse]: + json = MuteRequest(target_ids=target_ids, timeout=timeout, user_id=user_id, user=user).to_dict() return self.post("/api/v2/moderation/mute", MuteResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.get_policy_test_run") def get_policy_test_run(self, id: str) -> StreamResponse[PolicyTestRunResponse]: path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/moderation/policy_tests/runs/{id}", - PolicyTestRunResponse, - path_params=path_params, - ) - + return self.get("/api/v2/moderation/policy_tests/runs/{id}", PolicyTestRunResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.list_policy_test_sets") def list_policy_test_sets(self) -> StreamResponse[PolicyTestSetListResponse]: - return self.get( - "/api/v2/moderation/policy_tests/sets", PolicyTestSetListResponse - ) - + return self.get("/api/v2/moderation/policy_tests/sets", PolicyTestSetListResponse) + @telemetry.operation_name("getstream.api.moderation.create_policy_test_set") - def create_policy_test_set( - self, - name: str, - config_key: Optional[str] = None, - mode: Optional[str] = None, - team: Optional[str] = None, - rows: Optional[List[PolicyTestRow]] = None, - seed: Optional[PolicyTestSeedSpec] = None, - ) -> StreamResponse[PolicyTestSetResponse]: - json = CreatePolicyTestSetRequest( - name=name, config_key=config_key, mode=mode, team=team, rows=rows, seed=seed - ).to_dict() - return self.post( - "/api/v2/moderation/policy_tests/sets", PolicyTestSetResponse, json=json - ) - + def create_policy_test_set(self, name: str, config_key: Optional[str] = None, mode: Optional[str] = None, team: Optional[str] = None, rows: Optional[List[PolicyTestRow]] = None, seed: Optional[PolicyTestSeedSpec] = None) -> StreamResponse[PolicyTestSetResponse]: + json = CreatePolicyTestSetRequest(name=name, config_key=config_key, mode=mode, team=team, rows=rows, seed=seed).to_dict() + return self.post("/api/v2/moderation/policy_tests/sets", PolicyTestSetResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.delete_policy_test_set") def delete_policy_test_set(self, id: str) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - return self.delete( - "/api/v2/moderation/policy_tests/sets/{id}", - Response, - path_params=path_params, - ) - + return self.delete("/api/v2/moderation/policy_tests/sets/{id}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.get_policy_test_set") def get_policy_test_set(self, id: str) -> StreamResponse[PolicyTestSetResponse]: path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/moderation/policy_tests/sets/{id}", - PolicyTestSetResponse, - path_params=path_params, - ) - + return self.get("/api/v2/moderation/policy_tests/sets/{id}", PolicyTestSetResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.start_policy_test_run") def start_policy_test_run(self, id: str) -> StreamResponse[PolicyTestRunResponse]: path_params = { - "id": id, + "id": id, } - return self.post( - "/api/v2/moderation/policy_tests/sets/{id}/runs", - PolicyTestRunResponse, - path_params=path_params, - ) - + return self.post("/api/v2/moderation/policy_tests/sets/{id}/runs", PolicyTestRunResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.list_queues") - def list_queues( - self, user_id: Optional[str] = None - ) -> StreamResponse[ListQueuesResponse]: + def list_queues(self, user_id: Optional[str] = None) -> StreamResponse[ListQueuesResponse]: query_params = build_query_param(user_id=user_id) - return self.get( - "/api/v2/moderation/queues", ListQueuesResponse, query_params=query_params - ) - + return self.get("/api/v2/moderation/queues", ListQueuesResponse, query_params=query_params) + @telemetry.operation_name("getstream.api.moderation.create_queue") - def create_queue( - self, - name: str, - type: str, - description: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[Dict[str, object]]] = None, - filters: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueueResponse]: - json = CreateQueueRequest( - name=name, - type=type, - description=description, - user_id=user_id, - sort=sort, - filters=filters, - user=user, - ).to_dict() + def create_queue(self, name: str, type: str, description: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[Dict[str, object]]] = None, filters: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueueResponse]: + json = CreateQueueRequest(name=name, type=type, description=description, user_id=user_id, sort=sort, filters=filters, user=user).to_dict() return self.post("/api/v2/moderation/queues", QueueResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.get_queue") - def get_queue( - self, id: str, user_id: Optional[str] = None - ) -> StreamResponse[QueueResponse]: + def get_queue(self, id: str, user_id: Optional[str] = None) -> StreamResponse[QueueResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/moderation/queues/{id}", - QueueResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/moderation/queues/{id}", QueueResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.update_queue") - def update_queue( - self, - id: str, - description: Optional[str] = None, - name: Optional[str] = None, - user_id: Optional[str] = None, - sort: Optional[List[Dict[str, object]]] = None, - filters: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueueResponse]: + def update_queue(self, id: str, description: Optional[str] = None, name: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[Dict[str, object]]] = None, filters: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueueResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateQueueRequest( - description=description, - name=name, - user_id=user_id, - sort=sort, - filters=filters, - user=user, - ).to_dict() - return self.patch( - "/api/v2/moderation/queues/{id}", - QueueResponse, - path_params=path_params, - json=json, - ) - + json = UpdateQueueRequest(description=description, name=name, user_id=user_id, sort=sort, filters=filters, user=user).to_dict() + return self.patch("/api/v2/moderation/queues/{id}", QueueResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.moderation.delete_queue") - def delete_queue( - self, id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None - ) -> StreamResponse[QueueResponse]: + def delete_queue(self, id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueueResponse]: path_params = { - "id": id, + "id": id, } json = DeleteQueueRequest(user_id=user_id, user=user).to_dict() - return self.post( - "/api/v2/moderation/queues/{id}/delete", - QueueResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/moderation/queues/{id}/delete", QueueResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.moderation.query_review_queue") - def query_review_queue( - self, - exclude_default_action_config: Optional[bool] = None, - limit: Optional[int] = None, - lock_count: Optional[int] = None, - lock_duration: Optional[int] = None, - lock_items: Optional[bool] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - stats_only: Optional[bool] = None, - user_id: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[QueryReviewQueueResponse]: - json = QueryReviewQueueRequest( - exclude_default_action_config=exclude_default_action_config, - limit=limit, - lock_count=lock_count, - lock_duration=lock_duration, - lock_items=lock_items, - next=next, - prev=prev, - stats_only=stats_only, - user_id=user_id, - sort=sort, - filter=filter, - user=user, - ).to_dict() - return self.post( - "/api/v2/moderation/review_queue", QueryReviewQueueResponse, json=json - ) - + def query_review_queue(self, exclude_default_action_config: Optional[bool] = None, limit: Optional[int] = None, lock_count: Optional[int] = None, lock_duration: Optional[int] = None, lock_items: Optional[bool] = None, next: Optional[str] = None, prev: Optional[str] = None, stats_only: Optional[bool] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryReviewQueueResponse]: + json = QueryReviewQueueRequest(exclude_default_action_config=exclude_default_action_config, limit=limit, lock_count=lock_count, lock_duration=lock_duration, lock_items=lock_items, next=next, prev=prev, stats_only=stats_only, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + return self.post("/api/v2/moderation/review_queue", QueryReviewQueueResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.get_review_queue_item") - def get_review_queue_item( - self, id: str - ) -> StreamResponse[GetReviewQueueItemResponse]: + def get_review_queue_item(self, id: str) -> StreamResponse[GetReviewQueueItemResponse]: path_params = { - "id": id, + "id": id, } - return self.get( - "/api/v2/moderation/review_queue/{id}", - GetReviewQueueItemResponse, - path_params=path_params, - ) - + return self.get("/api/v2/moderation/review_queue/{id}", GetReviewQueueItemResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.moderation.get_setup_session") def get_setup_session(self) -> StreamResponse[GetSetupSessionResponse]: return self.get("/api/v2/moderation/setup", GetSetupSessionResponse) - + @telemetry.operation_name("getstream.api.moderation.upsert_setup_session") - def upsert_setup_session( - self, - current_step: str, - status: str, - setup_data: Optional[Dict[str, object]] = None, - ) -> StreamResponse[UpsertSetupSessionResponse]: - json = UpsertSetupSessionRequest( - current_step=current_step, status=status, setup_data=setup_data - ).to_dict() - return self.post( - "/api/v2/moderation/setup", UpsertSetupSessionResponse, json=json - ) - + def upsert_setup_session(self, current_step: str, status: str, setup_data: Optional[Dict[str, object]] = None) -> StreamResponse[UpsertSetupSessionResponse]: + json = UpsertSetupSessionRequest(current_step=current_step, status=status, setup_data=setup_data).to_dict() + return self.post("/api/v2/moderation/setup", UpsertSetupSessionResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.submit_action") - def submit_action( - self, - action_type: str, - appeal_id: Optional[str] = None, - item_id: Optional[str] = None, - user_id: Optional[str] = None, - ban: Optional[BanActionRequestPayload] = None, - block: Optional[BlockActionRequestPayload] = None, - bypass: Optional[BypassActionRequest] = None, - custom: Optional[CustomActionRequestPayload] = None, - delete_activity: Optional[DeleteActivityRequestPayload] = None, - delete_comment: Optional[DeleteCommentRequestPayload] = None, - delete_message: Optional[DeleteMessageRequestPayload] = None, - delete_reaction: Optional[DeleteReactionRequestPayload] = None, - delete_user: Optional[DeleteUserRequestPayload] = None, - delete_user_messages: Optional[DeleteUserMessagesRequestPayload] = None, - escalate: Optional[EscalatePayload] = None, - flag: Optional[FlagRequest] = None, - mark_reviewed: Optional[MarkReviewedRequestPayload] = None, - reject_appeal: Optional[RejectAppealRequestPayload] = None, - restore: Optional[RestoreActionRequestPayload] = None, - shadow_block: Optional[ShadowBlockActionRequestPayload] = None, - unban: Optional[UnbanActionRequestPayload] = None, - unblock: Optional[UnblockActionRequestPayload] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[SubmitActionResponse]: - json = SubmitActionRequest( - action_type=action_type, - appeal_id=appeal_id, - item_id=item_id, - user_id=user_id, - ban=ban, - block=block, - bypass=bypass, - custom=custom, - delete_activity=delete_activity, - delete_comment=delete_comment, - delete_message=delete_message, - delete_reaction=delete_reaction, - delete_user=delete_user, - delete_user_messages=delete_user_messages, - escalate=escalate, - flag=flag, - mark_reviewed=mark_reviewed, - reject_appeal=reject_appeal, - restore=restore, - shadow_block=shadow_block, - unban=unban, - unblock=unblock, - user=user, - ).to_dict() - return self.post( - "/api/v2/moderation/submit_action", SubmitActionResponse, json=json - ) - + def submit_action(self, action_type: str, appeal_id: Optional[str] = None, item_id: Optional[str] = None, user_id: Optional[str] = None, ban: Optional[BanActionRequestPayload] = None, block: Optional[BlockActionRequestPayload] = None, bypass: Optional[BypassActionRequest] = None, custom: Optional[CustomActionRequestPayload] = None, delete_activity: Optional[DeleteActivityRequestPayload] = None, delete_comment: Optional[DeleteCommentRequestPayload] = None, delete_message: Optional[DeleteMessageRequestPayload] = None, delete_reaction: Optional[DeleteReactionRequestPayload] = None, delete_user: Optional[DeleteUserRequestPayload] = None, delete_user_messages: Optional[DeleteUserMessagesRequestPayload] = None, escalate: Optional[EscalatePayload] = None, flag: Optional[FlagRequest] = None, mark_reviewed: Optional[MarkReviewedRequestPayload] = None, reject_appeal: Optional[RejectAppealRequestPayload] = None, restore: Optional[RestoreActionRequestPayload] = None, shadow_block: Optional[ShadowBlockActionRequestPayload] = None, unban: Optional[UnbanActionRequestPayload] = None, unblock: Optional[UnblockActionRequestPayload] = None, user: Optional[UserRequest] = None) -> StreamResponse[SubmitActionResponse]: + json = SubmitActionRequest(action_type=action_type, appeal_id=appeal_id, item_id=item_id, user_id=user_id, ban=ban, block=block, bypass=bypass, custom=custom, delete_activity=delete_activity, delete_comment=delete_comment, delete_message=delete_message, delete_reaction=delete_reaction, delete_user=delete_user, delete_user_messages=delete_user_messages, escalate=escalate, flag=flag, mark_reviewed=mark_reviewed, reject_appeal=reject_appeal, restore=restore, shadow_block=shadow_block, unban=unban, unblock=unblock, user=user).to_dict() + return self.post("/api/v2/moderation/submit_action", SubmitActionResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.submit_moderation_feedback") - def submit_moderation_feedback( - self, - message: str, - published_at: str, - reference: str, - channel_id: Optional[str] = None, - current_recommended_action: Optional[str] = None, - description: Optional[str] = None, - expected_recommended_action: Optional[str] = None, - current_labels: Optional[List[str]] = None, - expected_labels: Optional[List[str]] = None, - ) -> StreamResponse[SubmitModerationFeedbackResponse]: - json = SubmitModerationFeedbackRequest( - message=message, - published_at=published_at, - reference=reference, - channel_id=channel_id, - current_recommended_action=current_recommended_action, - description=description, - expected_recommended_action=expected_recommended_action, - current_labels=current_labels, - expected_labels=expected_labels, - ).to_dict() - return self.post( - "/api/v2/moderation/submit_moderation_feedback", - SubmitModerationFeedbackResponse, - json=json, - ) - + def submit_moderation_feedback(self, message: str, published_at: str, reference: str, channel_id: Optional[str] = None, current_recommended_action: Optional[str] = None, description: Optional[str] = None, expected_recommended_action: Optional[str] = None, current_labels: Optional[List[str]] = None, expected_labels: Optional[List[str]] = None) -> StreamResponse[SubmitModerationFeedbackResponse]: + json = SubmitModerationFeedbackRequest(message=message, published_at=published_at, reference=reference, channel_id=channel_id, current_recommended_action=current_recommended_action, description=description, expected_recommended_action=expected_recommended_action, current_labels=current_labels, expected_labels=expected_labels).to_dict() + return self.post("/api/v2/moderation/submit_moderation_feedback", SubmitModerationFeedbackResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.unban") - def unban( - self, - target_user_id: str, - channel_cid: Optional[str] = None, - created_by: Optional[str] = None, - unbanned_by_id: Optional[str] = None, - unbanned_by: Optional[UserRequest] = None, - ) -> StreamResponse[UnbanResponse]: - query_params = build_query_param( - target_user_id=target_user_id, - channel_cid=channel_cid, - created_by=created_by, - ) - json = UnbanRequest( - unbanned_by_id=unbanned_by_id, unbanned_by=unbanned_by - ).to_dict() - return self.post( - "/api/v2/moderation/unban", - UnbanResponse, - query_params=query_params, - json=json, - ) - + def unban(self, target_user_id: str, channel_cid: Optional[str] = None, created_by: Optional[str] = None, unbanned_by_id: Optional[str] = None, unbanned_by: Optional[UserRequest] = None) -> StreamResponse[UnbanResponse]: + query_params = build_query_param(target_user_id=target_user_id, channel_cid=channel_cid, created_by=created_by) + json = UnbanRequest(unbanned_by_id=unbanned_by_id, unbanned_by=unbanned_by).to_dict() + return self.post("/api/v2/moderation/unban", UnbanResponse, query_params=query_params, json=json) + @telemetry.operation_name("getstream.api.moderation.unmute") - def unmute( - self, - target_ids: List[str], - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[UnmuteResponse]: - json = UnmuteRequest( - target_ids=target_ids, user_id=user_id, user=user - ).to_dict() + def unmute(self, target_ids: List[str], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[UnmuteResponse]: + json = UnmuteRequest(target_ids=target_ids, user_id=user_id, user=user).to_dict() return self.post("/api/v2/moderation/unmute", UnmuteResponse, json=json) + \ No newline at end of file diff --git a/getstream/stream.py b/getstream/stream.py index d25848ff..3b987956 100644 --- a/getstream/stream.py +++ b/getstream/stream.py @@ -1,32 +1,30 @@ from __future__ import annotations -from contextlib import AsyncExitStack -from functools import cached_property import logging import time -from typing import List, Optional +from contextlib import AsyncExitStack +from functools import cached_property from uuid import uuid4 import httpx import jwt from pydantic_settings import BaseSettings, SettingsConfigDict +from typing_extensions import deprecated from getstream.base import _log_client_initialized, _resolve_logger -from getstream.common import telemetry -from getstream.config import RetryConfig -from getstream.chat.client import ChatClient from getstream.chat.async_client import ChatClient as AsyncChatClient +from getstream.chat.client import ChatClient +from getstream.common import telemetry from getstream.common.async_client import CommonClient as AsyncCommonClient from getstream.common.client import CommonClient +from getstream.config import RetryConfig from getstream.feeds.client import FeedsClient from getstream.models import FullUserResponse, UserRequest -from getstream.moderation.client import ModerationClient from getstream.moderation.async_client import ModerationClient as AsyncModerationClient +from getstream.moderation.client import ModerationClient from getstream.utils import validate_and_clean_url -from getstream.video.client import VideoClient from getstream.video.async_client import VideoClient as AsyncVideoClient -from typing_extensions import deprecated - +from getstream.video.client import VideoClient BASE_URL = "https://chat.stream-io-api.com/" @@ -44,11 +42,11 @@ class Settings(BaseSettings): # Env names: STREAM_API_KEY, STREAM_API_SECRET, STREAM_BASE_URL, STREAM_TIMEOUT, STREAM_REQUEST_TIMEOUT, STREAM_MAX_CONNS_PER_HOST, STREAM_IDLE_TIMEOUT, STREAM_CONNECT_TIMEOUT api_key: str - api_secret: Optional[str] = None - base_url: Optional[str] = None + api_secret: str | None = None + base_url: str | None = None # `timeout` kept as alias for `request_timeout` for backward compat. timeout: float = DEFAULT_REQUEST_TIMEOUT - request_timeout: Optional[float] = None + request_timeout: float | None = None max_conns_per_host: int = DEFAULT_MAX_CONNS_PER_HOST idle_timeout: float = DEFAULT_IDLE_TIMEOUT connect_timeout: float = DEFAULT_CONNECT_TIMEOUT @@ -69,7 +67,7 @@ class _PoolSettings(BaseSettings): """ timeout: float = DEFAULT_REQUEST_TIMEOUT - request_timeout: Optional[float] = None + request_timeout: float | None = None max_conns_per_host: int = DEFAULT_MAX_CONNS_PER_HOST idle_timeout: float = DEFAULT_IDLE_TIMEOUT connect_timeout: float = DEFAULT_CONNECT_TIMEOUT @@ -82,21 +80,21 @@ class _PoolSettings(BaseSettings): class BaseStream: def __init__( self, - api_key: Optional[str] = None, - api_secret: Optional[str] = None, - timeout: Optional[float] = None, - base_url: Optional[str] = BASE_URL, - user_agent: Optional[str] = None, + api_key: str | None = None, + api_secret: str | None = None, + timeout: float | None = None, + base_url: str | None = BASE_URL, + user_agent: str | None = None, transport=None, http_client=None, - token: Optional[str] = None, - request_timeout: Optional[float] = None, - max_conns_per_host: Optional[int] = None, - idle_timeout: Optional[float] = None, - connect_timeout: Optional[float] = None, - logger: Optional[logging.Logger] = None, + token: str | None = None, + request_timeout: float | None = None, + max_conns_per_host: int | None = None, + idle_timeout: float | None = None, + connect_timeout: float | None = None, + logger: logging.Logger | None = None, log_bodies: bool = False, - retry: Optional[RetryConfig] = None, + retry: RetryConfig | None = None, ): """Build a Stream client. @@ -147,7 +145,7 @@ def __init__( # _PoolSettings (not Settings) is used here so missing STREAM_API_KEY # in the environment does not crash construction when api_key was # passed explicitly. It reads the same STREAM_* env vars. - s_for_pool: Optional[_PoolSettings] = None + s_for_pool: _PoolSettings | None = None def _settings() -> _PoolSettings: nonlocal s_for_pool @@ -325,7 +323,7 @@ def clone_for_token(self, token: str): def create_call_token( self, user_id: str, - call_cids: List[str] = None, + call_cids: list[str] = None, role: str = None, expiration: int = None, ): @@ -340,8 +338,8 @@ def create_call_token( def _create_token( self, user_id: str = None, - channel_cids: List[str] = None, - call_cids: List[str] = None, + channel_cids: list[str] = None, + call_cids: list[str] = None, role: str = None, expiration=None, iat: int = None, @@ -550,7 +548,7 @@ class Stream(BaseStream, CommonClient): @classmethod @deprecated("from_env is deprecated, use __init__ instead") - def from_env(cls, timeout: Optional[float] = None) -> Stream: + def from_env(cls, timeout: float | None = None) -> Stream: """ Construct a StreamClient by loading its credentials and base_url from environment variables (via our pydantic Settings). @@ -568,7 +566,7 @@ def from_env(cls, timeout: Optional[float] = None) -> Stream: timeout=timeout, ) - def as_async(self) -> "AsyncStream": + def as_async(self) -> AsyncStream: return AsyncStream( api_key=self.api_key, api_secret=self._api_secret, diff --git a/getstream/stream_response.py b/getstream/stream_response.py index fe5ce065..9fdee4cd 100644 --- a/getstream/stream_response.py +++ b/getstream/stream_response.py @@ -1,5 +1,5 @@ -from typing import Any, Dict, Optional, Generic import typing +from typing import Any, Generic import httpx @@ -16,18 +16,18 @@ def __init__(self, response: httpx.Response, data: T): self.__rate_limit = extract_rate_limit(response) self.__data: T = data - super(StreamResponse, self).__init__() + super().__init__() @property def data(self) -> T: """Returns the encapsulated data of provided type.""" return self.__data - def rate_limit(self) -> Optional[RateLimitInfo]: + def rate_limit(self) -> RateLimitInfo | None: """Returns the ratelimit info of your API operation.""" return self.__rate_limit - def headers(self) -> Dict[str, Any]: + def headers(self) -> dict[str, Any]: """Returns the headers of the response.""" return dict(self.__headers) diff --git a/getstream/tests/test_webhook.py b/getstream/tests/test_webhook.py index 1f5c9f03..36407252 100644 --- a/getstream/tests/test_webhook.py +++ b/getstream/tests/test_webhook.py @@ -30,36 +30,20 @@ def setup_method(self): ).hexdigest() def test_valid_signature(self): - assert ( - verify_webhook_signature(self.body, self.valid_signature, self.secret) - is True - ) + assert verify_webhook_signature(self.body, self.valid_signature, self.secret) is True def test_wrong_signature(self): - assert ( - verify_webhook_signature(self.body, "invalidsignature", self.secret) - is False - ) + assert verify_webhook_signature(self.body, "invalidsignature", self.secret) is False def test_tampered_body(self): - assert ( - verify_webhook_signature( - b'{"type":"tampered"}', self.valid_signature, self.secret - ) - is False - ) + assert verify_webhook_signature(b'{"type":"tampered"}', self.valid_signature, self.secret) is False def test_wrong_secret(self): - assert ( - verify_webhook_signature(self.body, self.valid_signature, "wrong-secret") - is False - ) + assert verify_webhook_signature(self.body, self.valid_signature, "wrong-secret") is False def test_string_body(self): body_str = '{"type":"test.event"}' - sig = hmac.new( - self.secret.encode("utf-8"), body_str.encode("utf-8"), hashlib.sha256 - ).hexdigest() + sig = hmac.new(self.secret.encode("utf-8"), body_str.encode("utf-8"), hashlib.sha256).hexdigest() assert verify_webhook_signature(body_str, sig, self.secret) is True @@ -351,9 +335,7 @@ def test_parse_call_session_ended(self): def test_parse_call_session_participant_count_updated(self): with warnings.catch_warnings(): warnings.simplefilter("ignore", RuntimeWarning) - event = parse_webhook_event( - {"type": "call.session_participant_count_updated"} - ) + event = parse_webhook_event({"type": "call.session_participant_count_updated"}) assert type(event).__name__ == "CallSessionParticipantCountsUpdatedEvent" def test_parse_call_session_participant_joined(self): @@ -533,9 +515,7 @@ def test_parse_export_bulk_image_moderation_error(self): def test_parse_export_bulk_image_moderation_success(self): with warnings.catch_warnings(): warnings.simplefilter("ignore", RuntimeWarning) - event = parse_webhook_event( - {"type": "export.bulk_image_moderation.success"} - ) + event = parse_webhook_event({"type": "export.bulk_image_moderation.success"}) assert type(event).__name__ == "AsyncBulkImageModerationEvent" def test_parse_export_channels_error(self): @@ -1147,9 +1127,7 @@ def test_invalid_json(self): def _fixture_event_dirs(): if not FIXTURE_ROOT.exists(): return [] - return sorted( - d for d in FIXTURE_ROOT.iterdir() if d.is_dir() and d.name != "_invalid" - ) + return sorted(d for d in FIXTURE_ROOT.iterdir() if d.is_dir() and d.name != "_invalid") def _read_bytes(p: Path) -> bytes: @@ -1165,9 +1143,7 @@ class TestWebhookConformanceHappy: @pytest.fixture(autouse=True) def _skip_if_no_fixtures(self): if not FIXTURE_ROOT.exists(): - pytest.skip( - "conformance fixtures not present (run generate.sh to populate)" - ) + pytest.skip("conformance fixtures not present (run generate.sh to populate)") def test_parse_event(self, fixture_dir): body = _read_bytes(fixture_dir / "body.json") @@ -1219,17 +1195,13 @@ def _neg(self, name): @pytest.fixture(autouse=True) def _skip_if_no_fixtures(self): if not FIXTURE_ROOT.exists(): - pytest.skip( - "conformance fixtures not present (run generate.sh to populate)" - ) + pytest.skip("conformance fixtures not present (run generate.sh to populate)") def test_tampered_body(self): body = _read_bytes(self._neg("tampered_body") / "body.json") sig = _read_str(self._neg("tampered_body") / "signature.txt") # Single-arm catch on the unified InvalidWebhookError; message identifies the mode. - with pytest.raises( - InvalidWebhookError, match=InvalidWebhookError.SIGNATURE_MISMATCH - ): + with pytest.raises(InvalidWebhookError, match=InvalidWebhookError.SIGNATURE_MISMATCH): verify_and_parse_webhook(body, sig, CANONICAL_TEST_SECRET) def test_unknown_type_returns_unknown_event(self): @@ -1245,9 +1217,7 @@ def test_missing_type(self): def test_malformed_json(self): body = _read_bytes(self._neg("malformed_json") / "body.json") - with pytest.raises( - InvalidWebhookError, match="failed to parse webhook payload" - ): + with pytest.raises(InvalidWebhookError, match="failed to parse webhook payload"): parse_event(body) def test_empty_body(self): diff --git a/getstream/video/__init__.py b/getstream/video/__init__.py index cd6fc721..e26cce83 100644 --- a/getstream/video/__init__.py +++ b/getstream/video/__init__.py @@ -1,14 +1,13 @@ from __future__ import annotations -from typing import TYPE_CHECKING from dataclasses import dataclass -from typing import Optional, Dict, Union +from typing import TYPE_CHECKING, Dict, Optional, Union from getstream.models import CallResponse if TYPE_CHECKING: - from getstream.video.client import VideoClient from getstream.video.async_client import VideoClient as AsyncVideoClient + from getstream.video.client import VideoClient @dataclass @@ -19,16 +18,16 @@ class SRTCredentials: class BaseCall: def __init__( self, - client: Union[VideoClient | AsyncVideoClient], + client: VideoClient | AsyncVideoClient, call_type: str, - call_id: Optional[str] = None, - custom_data: Optional[Dict] = None, + call_id: str | None = None, + custom_data: dict | None = None, ): self.id = call_id self.call_type = call_type self.client = client self.custom_data = custom_data or {} - self._data: Optional[CallResponse] = None + self._data: CallResponse | None = None def _sync_from_response(self, data): if hasattr(data, "call") and isinstance(data.call, CallResponse): @@ -38,7 +37,7 @@ def _sync_from_response(self, data): def connect_openai( self, openai_api_key, agent_user_id, model="gpt-4o-realtime-preview" ): - from .openai import get_openai_realtime_client, ConnectionManagerWrapper + from .openai import ConnectionManagerWrapper, get_openai_realtime_client client = get_openai_realtime_client(openai_api_key, self.client.base_url or "") token = self.client.stream.create_token(agent_user_id) diff --git a/getstream/video/async_call.py b/getstream/video/async_call.py index ec7fd972..ded03b04 100644 --- a/getstream/video/async_call.py +++ b/getstream/video/async_call.py @@ -6,191 +6,65 @@ class Call(BaseCall): + + + @attach_call_cid_async + async def get(self, members_limit: Optional[int] = None, ring: Optional[bool] = None, notify: Optional[bool] = None, video: Optional[bool] = None) -> StreamResponse[GetCallResponse]: + response = await self.client.get_call(type=self.call_type, id=self.id, members_limit=members_limit, ring=ring, notify=notify, video=video) + self._sync_from_response(response.data) + return response + + @attach_call_cid_async + async def update(self, starts_at: Optional[datetime] = None, custom: Optional[Dict[str, object]] = None, settings_override: Optional[CallSettingsRequest] = None) -> StreamResponse[UpdateCallResponse]: + response = await self.client.update_call(type=self.call_type, id=self.id, starts_at=starts_at, custom=custom, settings_override=settings_override) + self._sync_from_response(response.data) + return response + @attach_call_cid_async - async def get( - self, - members_limit: Optional[int] = None, - ring: Optional[bool] = None, - notify: Optional[bool] = None, - video: Optional[bool] = None, - ) -> StreamResponse[GetCallResponse]: - response = await self.client.get_call( - type=self.call_type, - id=self.id, - members_limit=members_limit, - ring=ring, - notify=notify, - video=video, - ) - self._sync_from_response(response.data) - return response - - @attach_call_cid_async - async def update( - self, - starts_at: Optional[datetime] = None, - custom: Optional[Dict[str, object]] = None, - settings_override: Optional[CallSettingsRequest] = None, - ) -> StreamResponse[UpdateCallResponse]: - response = await self.client.update_call( - type=self.call_type, - id=self.id, - starts_at=starts_at, - custom=custom, - settings_override=settings_override, - ) - self._sync_from_response(response.data) - return response - - @attach_call_cid_async - async def get_or_create( - self, - members_limit: Optional[int] = None, - notify: Optional[bool] = None, - ring: Optional[bool] = None, - video: Optional[bool] = None, - data: Optional[CallRequest] = None, - ) -> StreamResponse[GetOrCreateCallResponse]: - response = await self.client.get_or_create_call( - type=self.call_type, - id=self.id, - members_limit=members_limit, - notify=notify, - ring=ring, - video=video, - data=data, - ) + async def get_or_create(self, members_limit: Optional[int] = None, notify: Optional[bool] = None, ring: Optional[bool] = None, video: Optional[bool] = None, data: Optional[CallRequest] = None) -> StreamResponse[GetOrCreateCallResponse]: + response = await self.client.get_or_create_call(type=self.call_type, id=self.id, members_limit=members_limit, notify=notify, ring=ring, video=video, data=data) self._sync_from_response(response.data) return response @attach_call_cid_async async def block_user(self, user_id: str) -> StreamResponse[BlockUserResponse]: - response = await self.client.block_user( - type=self.call_type, id=self.id, user_id=user_id - ) - self._sync_from_response(response.data) - return response - - @attach_call_cid_async - async def send_closed_caption( - self, - speaker_id: str, - text: str, - end_time: Optional[datetime] = None, - language: Optional[str] = None, - service: Optional[str] = None, - start_time: Optional[datetime] = None, - translated: Optional[bool] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[SendClosedCaptionResponse]: - response = await self.client.send_closed_caption( - type=self.call_type, - id=self.id, - speaker_id=speaker_id, - text=text, - end_time=end_time, - language=language, - service=service, - start_time=start_time, - translated=translated, - user_id=user_id, - user=user, - ) - self._sync_from_response(response.data) - return response - - @attach_call_cid_async - async def delete( - self, hard: Optional[bool] = None - ) -> StreamResponse[DeleteCallResponse]: - response = await self.client.delete_call( - type=self.call_type, id=self.id, hard=hard - ) - self._sync_from_response(response.data) - return response - - @attach_call_cid_async - async def send_call_event( - self, - user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[SendCallEventResponse]: - response = await self.client.send_call_event( - type=self.call_type, id=self.id, user_id=user_id, custom=custom, user=user - ) - self._sync_from_response(response.data) - return response - - @attach_call_cid_async - async def collect_user_feedback( - self, - rating: int, - sdk: str, - sdk_version: str, - reason: Optional[str] = None, - user_session_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - ) -> StreamResponse[CollectUserFeedbackResponse]: - response = await self.client.collect_user_feedback( - type=self.call_type, - id=self.id, - rating=rating, - sdk=sdk, - sdk_version=sdk_version, - reason=reason, - user_session_id=user_session_id, - custom=custom, - ) - self._sync_from_response(response.data) - return response - - @attach_call_cid_async - async def go_live( - self, - recording_storage_name: Optional[str] = None, - start_closed_caption: Optional[bool] = None, - start_composite_recording: Optional[bool] = None, - start_hls: Optional[bool] = None, - start_individual_recording: Optional[bool] = None, - start_raw_recording: Optional[bool] = None, - start_recording: Optional[bool] = None, - start_transcription: Optional[bool] = None, - transcription_storage_name: Optional[str] = None, - ) -> StreamResponse[GoLiveResponse]: - response = await self.client.go_live( - type=self.call_type, - id=self.id, - recording_storage_name=recording_storage_name, - start_closed_caption=start_closed_caption, - start_composite_recording=start_composite_recording, - start_hls=start_hls, - start_individual_recording=start_individual_recording, - start_raw_recording=start_raw_recording, - start_recording=start_recording, - start_transcription=start_transcription, - transcription_storage_name=transcription_storage_name, - ) - self._sync_from_response(response.data) - return response - - @attach_call_cid_async - async def kick_user( - self, - user_id: str, - block: Optional[bool] = None, - kicked_by_id: Optional[str] = None, - kicked_by: Optional[UserRequest] = None, - ) -> StreamResponse[KickUserResponse]: - response = await self.client.kick_user( - type=self.call_type, - id=self.id, - user_id=user_id, - block=block, - kicked_by_id=kicked_by_id, - kicked_by=kicked_by, - ) + response = await self.client.block_user(type=self.call_type, id=self.id, user_id=user_id) + self._sync_from_response(response.data) + return response + + @attach_call_cid_async + async def send_closed_caption(self, speaker_id: str, text: str, end_time: Optional[datetime] = None, language: Optional[str] = None, service: Optional[str] = None, start_time: Optional[datetime] = None, translated: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[SendClosedCaptionResponse]: + response = await self.client.send_closed_caption(type=self.call_type, id=self.id, speaker_id=speaker_id, text=text, end_time=end_time, language=language, service=service, start_time=start_time, translated=translated, user_id=user_id, user=user) + self._sync_from_response(response.data) + return response + + @attach_call_cid_async + async def delete(self, hard: Optional[bool] = None) -> StreamResponse[DeleteCallResponse]: + response = await self.client.delete_call(type=self.call_type, id=self.id, hard=hard) + self._sync_from_response(response.data) + return response + + @attach_call_cid_async + async def send_call_event(self, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[SendCallEventResponse]: + response = await self.client.send_call_event(type=self.call_type, id=self.id, user_id=user_id, custom=custom, user=user) + self._sync_from_response(response.data) + return response + + @attach_call_cid_async + async def collect_user_feedback(self, rating: int, sdk: str, sdk_version: str, reason: Optional[str] = None, user_session_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[CollectUserFeedbackResponse]: + response = await self.client.collect_user_feedback(type=self.call_type, id=self.id, rating=rating, sdk=sdk, sdk_version=sdk_version, reason=reason, user_session_id=user_session_id, custom=custom) + self._sync_from_response(response.data) + return response + + @attach_call_cid_async + async def go_live(self, recording_storage_name: Optional[str] = None, start_closed_caption: Optional[bool] = None, start_composite_recording: Optional[bool] = None, start_hls: Optional[bool] = None, start_individual_recording: Optional[bool] = None, start_raw_recording: Optional[bool] = None, start_recording: Optional[bool] = None, start_transcription: Optional[bool] = None, transcription_storage_name: Optional[str] = None) -> StreamResponse[GoLiveResponse]: + response = await self.client.go_live(type=self.call_type, id=self.id, recording_storage_name=recording_storage_name, start_closed_caption=start_closed_caption, start_composite_recording=start_composite_recording, start_hls=start_hls, start_individual_recording=start_individual_recording, start_raw_recording=start_raw_recording, start_recording=start_recording, start_transcription=start_transcription, transcription_storage_name=transcription_storage_name) + self._sync_from_response(response.data) + return response + + @attach_call_cid_async + async def kick_user(self, user_id: str, block: Optional[bool] = None, kicked_by_id: Optional[str] = None, kicked_by: Optional[UserRequest] = None) -> StreamResponse[KickUserResponse]: + response = await self.client.kick_user(type=self.call_type, id=self.id, user_id=user_id, block=block, kicked_by_id=kicked_by_id, kicked_by=kicked_by) self._sync_from_response(response.data) return response @@ -201,69 +75,26 @@ async def end(self) -> StreamResponse[EndCallResponse]: return response @attach_call_cid_async - async def update_call_members( - self, - remove_members: Optional[List[str]] = None, - update_members: Optional[List[MemberRequest]] = None, - ) -> StreamResponse[UpdateCallMembersResponse]: - response = await self.client.update_call_members( - type=self.call_type, - id=self.id, - remove_members=remove_members, - update_members=update_members, - ) + async def update_call_members(self, remove_members: Optional[List[str]] = None, update_members: Optional[List[MemberRequest]] = None) -> StreamResponse[UpdateCallMembersResponse]: + response = await self.client.update_call_members(type=self.call_type, id=self.id, remove_members=remove_members, update_members=update_members) self._sync_from_response(response.data) return response @attach_call_cid_async - async def mute_users( - self, - audio: Optional[bool] = None, - mute_all_users: Optional[bool] = None, - muted_by_id: Optional[str] = None, - screenshare: Optional[bool] = None, - screenshare_audio: Optional[bool] = None, - video: Optional[bool] = None, - user_ids: Optional[List[str]] = None, - muted_by: Optional[UserRequest] = None, - ) -> StreamResponse[MuteUsersResponse]: - response = await self.client.mute_users( - type=self.call_type, - id=self.id, - audio=audio, - mute_all_users=mute_all_users, - muted_by_id=muted_by_id, - screenshare=screenshare, - screenshare_audio=screenshare_audio, - video=video, - user_ids=user_ids, - muted_by=muted_by, - ) + async def mute_users(self, audio: Optional[bool] = None, mute_all_users: Optional[bool] = None, muted_by_id: Optional[str] = None, screenshare: Optional[bool] = None, screenshare_audio: Optional[bool] = None, video: Optional[bool] = None, user_ids: Optional[List[str]] = None, muted_by: Optional[UserRequest] = None) -> StreamResponse[MuteUsersResponse]: + response = await self.client.mute_users(type=self.call_type, id=self.id, audio=audio, mute_all_users=mute_all_users, muted_by_id=muted_by_id, screenshare=screenshare, screenshare_audio=screenshare_audio, video=video, user_ids=user_ids, muted_by=muted_by) self._sync_from_response(response.data) return response @attach_call_cid_async - async def query_call_participants( - self, - limit: Optional[int] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallParticipantsResponse]: - response = await self.client.query_call_participants( - type=self.call_type, - id=self.id, - limit=limit, - filter_conditions=filter_conditions, - ) + async def query_call_participants(self, limit: Optional[int] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallParticipantsResponse]: + response = await self.client.query_call_participants(type=self.call_type, id=self.id, limit=limit, filter_conditions=filter_conditions) self._sync_from_response(response.data) return response @attach_call_cid_async - async def video_pin( - self, session_id: str, user_id: str - ) -> StreamResponse[PinResponse]: - response = await self.client.video_pin( - type=self.call_type, id=self.id, session_id=session_id, user_id=user_id - ) + async def video_pin(self, session_id: str, user_id: str) -> StreamResponse[PinResponse]: + response = await self.client.video_pin(type=self.call_type, id=self.id, session_id=session_id, user_id=user_id) self._sync_from_response(response.data) return response @@ -274,310 +105,148 @@ async def list_recordings(self) -> StreamResponse[ListRecordingsResponse]: return response @attach_call_cid_async - async def start_recording( - self, recording_type: str, recording_external_storage: Optional[str] = None - ) -> StreamResponse[StartRecordingResponse]: - response = await self.client.start_recording( - type=self.call_type, - id=self.id, - recording_type=recording_type, - recording_external_storage=recording_external_storage, - ) + async def start_recording(self, recording_type: str, recording_external_storage: Optional[str] = None) -> StreamResponse[StartRecordingResponse]: + response = await self.client.start_recording(type=self.call_type, id=self.id, recording_type=recording_type, recording_external_storage=recording_external_storage) self._sync_from_response(response.data) return response @attach_call_cid_async - async def stop_recording( - self, - recording_type: str, - ) -> StreamResponse[StopRecordingResponse]: - response = await self.client.stop_recording( - type=self.call_type, - id=self.id, - recording_type=recording_type, - ) + async def stop_recording(self, recording_type: str, ) -> StreamResponse[StopRecordingResponse]: + response = await self.client.stop_recording(type=self.call_type, id=self.id, recording_type=recording_type, ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def get_call_report( - self, session_id: Optional[str] = None - ) -> StreamResponse[GetCallReportResponse]: - response = await self.client.get_call_report( - type=self.call_type, id=self.id, session_id=session_id - ) + async def get_call_report(self, session_id: Optional[str] = None) -> StreamResponse[GetCallReportResponse]: + response = await self.client.get_call_report(type=self.call_type, id=self.id, session_id=session_id) self._sync_from_response(response.data) return response @attach_call_cid_async - async def ring( - self, video: Optional[bool] = None, members_ids: Optional[List[str]] = None - ) -> StreamResponse[RingCallResponse]: - response = await self.client.ring_call( - type=self.call_type, id=self.id, video=video, members_ids=members_ids - ) + async def ring(self, video: Optional[bool] = None, members_ids: Optional[List[str]] = None) -> StreamResponse[RingCallResponse]: + response = await self.client.ring_call(type=self.call_type, id=self.id, video=video, members_ids=members_ids) self._sync_from_response(response.data) return response @attach_call_cid_async - async def start_rtmp_broadcasts( - self, broadcasts: List[RTMPBroadcastRequest] - ) -> StreamResponse[StartRTMPBroadcastsResponse]: - response = await self.client.start_rtmp_broadcasts( - type=self.call_type, id=self.id, broadcasts=broadcasts - ) + async def start_rtmp_broadcasts(self, broadcasts: List[RTMPBroadcastRequest]) -> StreamResponse[StartRTMPBroadcastsResponse]: + response = await self.client.start_rtmp_broadcasts(type=self.call_type, id=self.id, broadcasts=broadcasts) self._sync_from_response(response.data) return response @attach_call_cid_async - async def stop_all_rtmp_broadcasts( - self, - ) -> StreamResponse[StopAllRTMPBroadcastsResponse]: - response = await self.client.stop_all_rtmp_broadcasts( - type=self.call_type, id=self.id - ) + async def stop_all_rtmp_broadcasts(self) -> StreamResponse[StopAllRTMPBroadcastsResponse]: + response = await self.client.stop_all_rtmp_broadcasts(type=self.call_type, id=self.id) self._sync_from_response(response.data) return response @attach_call_cid_async - async def stop_rtmp_broadcast( - self, - name: str, - ) -> StreamResponse[StopRTMPBroadcastsResponse]: - response = await self.client.stop_rtmp_broadcast( - type=self.call_type, - id=self.id, - name=name, - ) + async def stop_rtmp_broadcast(self, name: str, ) -> StreamResponse[StopRTMPBroadcastsResponse]: + response = await self.client.stop_rtmp_broadcast(type=self.call_type, id=self.id, name=name, ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def get_call_participant_session_metrics( - self, - session: str, - user: str, - user_session: str, - since: Optional[datetime] = None, - until: Optional[datetime] = None, - ) -> StreamResponse[GetCallParticipantSessionMetricsResponse]: - response = await self.client.get_call_participant_session_metrics( - type=self.call_type, - id=self.id, - session=session, - user=user, - user_session=user_session, - since=since, - until=until, - ) + async def get_call_participant_session_metrics(self, session: str, user: str, user_session: str, since: Optional[datetime] = None, until: Optional[datetime] = None) -> StreamResponse[GetCallParticipantSessionMetricsResponse]: + response = await self.client.get_call_participant_session_metrics(type=self.call_type, id=self.id, session=session, user=user, user_session=user_session, since=since, until=until) self._sync_from_response(response.data) return response @attach_call_cid_async - async def query_call_participant_sessions( - self, - session: str, - limit: Optional[int] = None, - prev: Optional[str] = None, - next: Optional[str] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallParticipantSessionsResponse]: - response = await self.client.query_call_participant_sessions( - type=self.call_type, - id=self.id, - session=session, - limit=limit, - prev=prev, - next=next, - filter_conditions=filter_conditions, - ) + async def query_call_participant_sessions(self, session: str, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallParticipantSessionsResponse]: + response = await self.client.query_call_participant_sessions(type=self.call_type, id=self.id, session=session, limit=limit, prev=prev, next=next, filter_conditions=filter_conditions) self._sync_from_response(response.data) return response @attach_call_cid_async - async def start_hls_broadcasting( - self, - ) -> StreamResponse[StartHLSBroadcastingResponse]: - response = await self.client.start_hls_broadcasting( - type=self.call_type, id=self.id - ) + async def start_hls_broadcasting(self) -> StreamResponse[StartHLSBroadcastingResponse]: + response = await self.client.start_hls_broadcasting(type=self.call_type, id=self.id) self._sync_from_response(response.data) return response @attach_call_cid_async - async def start_closed_captions( - self, - enable_transcription: Optional[bool] = None, - external_storage: Optional[str] = None, - language: Optional[str] = None, - speech_segment_config: Optional[SpeechSegmentConfig] = None, - ) -> StreamResponse[StartClosedCaptionsResponse]: - response = await self.client.start_closed_captions( - type=self.call_type, - id=self.id, - enable_transcription=enable_transcription, - external_storage=external_storage, - language=language, - speech_segment_config=speech_segment_config, - ) + async def start_closed_captions(self, enable_transcription: Optional[bool] = None, external_storage: Optional[str] = None, language: Optional[str] = None, speech_segment_config: Optional[SpeechSegmentConfig] = None) -> StreamResponse[StartClosedCaptionsResponse]: + response = await self.client.start_closed_captions(type=self.call_type, id=self.id, enable_transcription=enable_transcription, external_storage=external_storage, language=language, speech_segment_config=speech_segment_config) self._sync_from_response(response.data) return response @attach_call_cid_async - async def start_frame_recording( - self, recording_external_storage: Optional[str] = None - ) -> StreamResponse[StartFrameRecordingResponse]: - response = await self.client.start_frame_recording( - type=self.call_type, - id=self.id, - recording_external_storage=recording_external_storage, - ) + async def start_frame_recording(self, recording_external_storage: Optional[str] = None) -> StreamResponse[StartFrameRecordingResponse]: + response = await self.client.start_frame_recording(type=self.call_type, id=self.id, recording_external_storage=recording_external_storage) self._sync_from_response(response.data) return response @attach_call_cid_async - async def start_transcription( - self, - enable_closed_captions: Optional[bool] = None, - language: Optional[str] = None, - transcription_external_storage: Optional[str] = None, - ) -> StreamResponse[StartTranscriptionResponse]: - response = await self.client.start_transcription( - type=self.call_type, - id=self.id, - enable_closed_captions=enable_closed_captions, - language=language, - transcription_external_storage=transcription_external_storage, - ) + async def start_transcription(self, enable_closed_captions: Optional[bool] = None, language: Optional[str] = None, transcription_external_storage: Optional[str] = None) -> StreamResponse[StartTranscriptionResponse]: + response = await self.client.start_transcription(type=self.call_type, id=self.id, enable_closed_captions=enable_closed_captions, language=language, transcription_external_storage=transcription_external_storage) self._sync_from_response(response.data) return response @attach_call_cid_async - async def stop_hls_broadcasting( - self, - ) -> StreamResponse[StopHLSBroadcastingResponse]: - response = await self.client.stop_hls_broadcasting( - type=self.call_type, id=self.id - ) + async def stop_hls_broadcasting(self) -> StreamResponse[StopHLSBroadcastingResponse]: + response = await self.client.stop_hls_broadcasting(type=self.call_type, id=self.id) self._sync_from_response(response.data) return response @attach_call_cid_async - async def stop_closed_captions( - self, stop_transcription: Optional[bool] = None - ) -> StreamResponse[StopClosedCaptionsResponse]: - response = await self.client.stop_closed_captions( - type=self.call_type, id=self.id, stop_transcription=stop_transcription - ) + async def stop_closed_captions(self, stop_transcription: Optional[bool] = None) -> StreamResponse[StopClosedCaptionsResponse]: + response = await self.client.stop_closed_captions(type=self.call_type, id=self.id, stop_transcription=stop_transcription) self._sync_from_response(response.data) return response @attach_call_cid_async async def stop_frame_recording(self) -> StreamResponse[StopFrameRecordingResponse]: - response = await self.client.stop_frame_recording( - type=self.call_type, id=self.id - ) + response = await self.client.stop_frame_recording(type=self.call_type, id=self.id) self._sync_from_response(response.data) return response @attach_call_cid_async - async def stop_live( - self, - continue_closed_caption: Optional[bool] = None, - continue_composite_recording: Optional[bool] = None, - continue_hls: Optional[bool] = None, - continue_individual_recording: Optional[bool] = None, - continue_raw_recording: Optional[bool] = None, - continue_recording: Optional[bool] = None, - continue_rtmp_broadcasts: Optional[bool] = None, - continue_transcription: Optional[bool] = None, - ) -> StreamResponse[StopLiveResponse]: - response = await self.client.stop_live( - type=self.call_type, - id=self.id, - continue_closed_caption=continue_closed_caption, - continue_composite_recording=continue_composite_recording, - continue_hls=continue_hls, - continue_individual_recording=continue_individual_recording, - continue_raw_recording=continue_raw_recording, - continue_recording=continue_recording, - continue_rtmp_broadcasts=continue_rtmp_broadcasts, - continue_transcription=continue_transcription, - ) + async def stop_live(self, continue_closed_caption: Optional[bool] = None, continue_composite_recording: Optional[bool] = None, continue_hls: Optional[bool] = None, continue_individual_recording: Optional[bool] = None, continue_raw_recording: Optional[bool] = None, continue_recording: Optional[bool] = None, continue_rtmp_broadcasts: Optional[bool] = None, continue_transcription: Optional[bool] = None) -> StreamResponse[StopLiveResponse]: + response = await self.client.stop_live(type=self.call_type, id=self.id, continue_closed_caption=continue_closed_caption, continue_composite_recording=continue_composite_recording, continue_hls=continue_hls, continue_individual_recording=continue_individual_recording, continue_raw_recording=continue_raw_recording, continue_recording=continue_recording, continue_rtmp_broadcasts=continue_rtmp_broadcasts, continue_transcription=continue_transcription) self._sync_from_response(response.data) return response @attach_call_cid_async - async def stop_transcription( - self, stop_closed_captions: Optional[bool] = None - ) -> StreamResponse[StopTranscriptionResponse]: - response = await self.client.stop_transcription( - type=self.call_type, id=self.id, stop_closed_captions=stop_closed_captions - ) + async def stop_transcription(self, stop_closed_captions: Optional[bool] = None) -> StreamResponse[StopTranscriptionResponse]: + response = await self.client.stop_transcription(type=self.call_type, id=self.id, stop_closed_captions=stop_closed_captions) self._sync_from_response(response.data) return response @attach_call_cid_async async def list_transcriptions(self) -> StreamResponse[ListTranscriptionsResponse]: - response = await self.client.list_transcriptions( - type=self.call_type, id=self.id - ) + response = await self.client.list_transcriptions(type=self.call_type, id=self.id) self._sync_from_response(response.data) return response @attach_call_cid_async async def unblock_user(self, user_id: str) -> StreamResponse[UnblockUserResponse]: - response = await self.client.unblock_user( - type=self.call_type, id=self.id, user_id=user_id - ) + response = await self.client.unblock_user(type=self.call_type, id=self.id, user_id=user_id) self._sync_from_response(response.data) return response @attach_call_cid_async - async def video_unpin( - self, session_id: str, user_id: str - ) -> StreamResponse[UnpinResponse]: - response = await self.client.video_unpin( - type=self.call_type, id=self.id, session_id=session_id, user_id=user_id - ) + async def video_unpin(self, session_id: str, user_id: str) -> StreamResponse[UnpinResponse]: + response = await self.client.video_unpin(type=self.call_type, id=self.id, session_id=session_id, user_id=user_id) self._sync_from_response(response.data) return response @attach_call_cid_async - async def update_user_permissions( - self, - user_id: str, - grant_permissions: Optional[List[str]] = None, - revoke_permissions: Optional[List[str]] = None, - ) -> StreamResponse[UpdateUserPermissionsResponse]: - response = await self.client.update_user_permissions( - type=self.call_type, - id=self.id, - user_id=user_id, - grant_permissions=grant_permissions, - revoke_permissions=revoke_permissions, - ) + async def update_user_permissions(self, user_id: str, grant_permissions: Optional[List[str]] = None, revoke_permissions: Optional[List[str]] = None) -> StreamResponse[UpdateUserPermissionsResponse]: + response = await self.client.update_user_permissions(type=self.call_type, id=self.id, user_id=user_id, grant_permissions=grant_permissions, revoke_permissions=revoke_permissions) self._sync_from_response(response.data) return response @attach_call_cid_async - async def delete_recording( - self, session: str, filename: str - ) -> StreamResponse[DeleteRecordingResponse]: - response = await self.client.delete_recording( - type=self.call_type, id=self.id, session=session, filename=filename - ) + async def delete_recording(self, session: str, filename: str) -> StreamResponse[DeleteRecordingResponse]: + response = await self.client.delete_recording(type=self.call_type, id=self.id, session=session, filename=filename) self._sync_from_response(response.data) return response @attach_call_cid_async - async def delete_transcription( - self, session: str, filename: str - ) -> StreamResponse[DeleteTranscriptionResponse]: - response = await self.client.delete_transcription( - type=self.call_type, id=self.id, session=session, filename=filename - ) + async def delete_transcription(self, session: str, filename: str) -> StreamResponse[DeleteTranscriptionResponse]: + response = await self.client.delete_transcription(type=self.call_type, id=self.id, session=session, filename=filename) self._sync_from_response(response.data) return response - create = get_or_create + + create = get_or_create \ No newline at end of file diff --git a/getstream/video/async_client.py b/getstream/video/async_client.py index 859d0036..08ace8a0 100644 --- a/getstream/video/async_client.py +++ b/getstream/video/async_client.py @@ -1,5 +1,5 @@ -from getstream.video.async_rest_client import VideoRestClient from getstream.video.async_call import Call +from getstream.video.async_rest_client import VideoRestClient class VideoClient(VideoRestClient): diff --git a/getstream/video/async_rest_client.py b/getstream/video/async_rest_client.py index 1af0b573..50c30ed8 100644 --- a/getstream/video/async_rest_client.py +++ b/getstream/video/async_rest_client.py @@ -1,3 +1,4 @@ + # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import AsyncBaseClient from getstream.common import telemetry @@ -7,14 +8,8 @@ class VideoRestClient(AsyncBaseClient): - def __init__( - self, - api_key: str, - base_url: str, - timeout: float, - token: str, - user_agent: str | None = None, - ): + + def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): """ Initializes VideoClient with BaseClient instance :param api_key: A string representing the client's API key @@ -31,1378 +26,486 @@ def __init__( user_agent=user_agent, ) + @telemetry.operation_name("getstream.api.video.get_active_calls_status") - async def get_active_calls_status( - self, - ) -> StreamResponse[GetActiveCallsStatusResponse]: - return await self.get( - "/api/v2/video/active_calls_status", GetActiveCallsStatusResponse - ) - + async def get_active_calls_status(self) -> StreamResponse[GetActiveCallsStatusResponse]: + return await self.get("/api/v2/video/active_calls_status", GetActiveCallsStatusResponse) + @telemetry.operation_name("getstream.api.video.query_user_feedback") - async def query_user_feedback( - self, - full: Optional[bool] = None, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryUserFeedbackResponse]: + async def query_user_feedback(self, full: Optional[bool] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryUserFeedbackResponse]: query_params = build_query_param(full=full) - json = QueryUserFeedbackRequest( - limit=limit, - next=next, - prev=prev, - sort=sort, - filter_conditions=filter_conditions, - ).to_dict() - return await self.post( - "/api/v2/video/call/feedback", - QueryUserFeedbackResponse, - query_params=query_params, - json=json, - ) - + json = QueryUserFeedbackRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() + return await self.post("/api/v2/video/call/feedback", QueryUserFeedbackResponse, query_params=query_params, json=json) + @telemetry.operation_name("getstream.api.video.query_call_members") - async def query_call_members( - self, - id: str, - type: str, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallMembersResponse]: - json = QueryCallMembersRequest( - id=id, - type=type, - limit=limit, - next=next, - prev=prev, - sort=sort, - filter_conditions=filter_conditions, - ).to_dict() - return await self.post( - "/api/v2/video/call/members", QueryCallMembersResponse, json=json - ) - + async def query_call_members(self, id: str, type: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallMembersResponse]: + json = QueryCallMembersRequest(id=id, type=type, limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() + return await self.post("/api/v2/video/call/members", QueryCallMembersResponse, json=json) + @telemetry.operation_name("getstream.api.video.query_call_stats") - async def query_call_stats( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallStatsResponse]: - json = QueryCallStatsRequest( - limit=limit, - next=next, - prev=prev, - sort=sort, - filter_conditions=filter_conditions, - ).to_dict() - return await self.post( - "/api/v2/video/call/stats", QueryCallStatsResponse, json=json - ) - + async def query_call_stats(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallStatsResponse]: + json = QueryCallStatsRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() + return await self.post("/api/v2/video/call/stats", QueryCallStatsResponse, json=json) + @telemetry.operation_name("getstream.api.video.get_call") - async def get_call( - self, - type: str, - id: str, - members_limit: Optional[int] = None, - ring: Optional[bool] = None, - notify: Optional[bool] = None, - video: Optional[bool] = None, - ) -> StreamResponse[GetCallResponse]: - query_params = build_query_param( - members_limit=members_limit, ring=ring, notify=notify, video=video - ) + async def get_call(self, type: str, id: str, members_limit: Optional[int] = None, ring: Optional[bool] = None, notify: Optional[bool] = None, video: Optional[bool] = None) -> StreamResponse[GetCallResponse]: + query_params = build_query_param(members_limit=members_limit, ring=ring, notify=notify, video=video) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return await self.get( - "/api/v2/video/call/{type}/{id}", - GetCallResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/video/call/{type}/{id}", GetCallResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.video.update_call") - async def update_call( - self, - type: str, - id: str, - starts_at: Optional[datetime] = None, - custom: Optional[Dict[str, object]] = None, - settings_override: Optional[CallSettingsRequest] = None, - ) -> StreamResponse[UpdateCallResponse]: + async def update_call(self, type: str, id: str, starts_at: Optional[datetime] = None, custom: Optional[Dict[str, object]] = None, settings_override: Optional[CallSettingsRequest] = None) -> StreamResponse[UpdateCallResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = UpdateCallRequest( - starts_at=starts_at, custom=custom, settings_override=settings_override - ).to_dict() - return await self.patch( - "/api/v2/video/call/{type}/{id}", - UpdateCallResponse, - path_params=path_params, - json=json, - ) - + json = UpdateCallRequest(starts_at=starts_at, custom=custom, settings_override=settings_override).to_dict() + return await self.patch("/api/v2/video/call/{type}/{id}", UpdateCallResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.get_or_create_call") - async def get_or_create_call( - self, - type: str, - id: str, - members_limit: Optional[int] = None, - notify: Optional[bool] = None, - ring: Optional[bool] = None, - video: Optional[bool] = None, - data: Optional[CallRequest] = None, - ) -> StreamResponse[GetOrCreateCallResponse]: + async def get_or_create_call(self, type: str, id: str, members_limit: Optional[int] = None, notify: Optional[bool] = None, ring: Optional[bool] = None, video: Optional[bool] = None, data: Optional[CallRequest] = None) -> StreamResponse[GetOrCreateCallResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = GetOrCreateCallRequest( - members_limit=members_limit, - notify=notify, - ring=ring, - video=video, - data=data, - ).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}", - GetOrCreateCallResponse, - path_params=path_params, - json=json, - ) - + json = GetOrCreateCallRequest(members_limit=members_limit, notify=notify, ring=ring, video=video, data=data).to_dict() + return await self.post("/api/v2/video/call/{type}/{id}", GetOrCreateCallResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.block_user") - async def block_user( - self, type: str, id: str, user_id: str - ) -> StreamResponse[BlockUserResponse]: + async def block_user(self, type: str, id: str, user_id: str) -> StreamResponse[BlockUserResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = BlockUserRequest(user_id=user_id).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/block", - BlockUserResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/video/call/{type}/{id}/block", BlockUserResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.send_closed_caption") - async def send_closed_caption( - self, - type: str, - id: str, - speaker_id: str, - text: str, - end_time: Optional[datetime] = None, - language: Optional[str] = None, - service: Optional[str] = None, - start_time: Optional[datetime] = None, - translated: Optional[bool] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[SendClosedCaptionResponse]: + async def send_closed_caption(self, type: str, id: str, speaker_id: str, text: str, end_time: Optional[datetime] = None, language: Optional[str] = None, service: Optional[str] = None, start_time: Optional[datetime] = None, translated: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[SendClosedCaptionResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = SendClosedCaptionRequest( - speaker_id=speaker_id, - text=text, - end_time=end_time, - language=language, - service=service, - start_time=start_time, - translated=translated, - user_id=user_id, - user=user, - ).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/closed_captions", - SendClosedCaptionResponse, - path_params=path_params, - json=json, - ) - + json = SendClosedCaptionRequest(speaker_id=speaker_id, text=text, end_time=end_time, language=language, service=service, start_time=start_time, translated=translated, user_id=user_id, user=user).to_dict() + return await self.post("/api/v2/video/call/{type}/{id}/closed_captions", SendClosedCaptionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.delete_call") - async def delete_call( - self, type: str, id: str, hard: Optional[bool] = None - ) -> StreamResponse[DeleteCallResponse]: + async def delete_call(self, type: str, id: str, hard: Optional[bool] = None) -> StreamResponse[DeleteCallResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = DeleteCallRequest(hard=hard).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/delete", - DeleteCallResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/video/call/{type}/{id}/delete", DeleteCallResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.send_call_event") - async def send_call_event( - self, - type: str, - id: str, - user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[SendCallEventResponse]: + async def send_call_event(self, type: str, id: str, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[SendCallEventResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = SendCallEventRequest(user_id=user_id, custom=custom, user=user).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/event", - SendCallEventResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/video/call/{type}/{id}/event", SendCallEventResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.collect_user_feedback") - async def collect_user_feedback( - self, - type: str, - id: str, - rating: int, - sdk: str, - sdk_version: str, - reason: Optional[str] = None, - user_session_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - ) -> StreamResponse[CollectUserFeedbackResponse]: + async def collect_user_feedback(self, type: str, id: str, rating: int, sdk: str, sdk_version: str, reason: Optional[str] = None, user_session_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[CollectUserFeedbackResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = CollectUserFeedbackRequest( - rating=rating, - sdk=sdk, - sdk_version=sdk_version, - reason=reason, - user_session_id=user_session_id, - custom=custom, - ).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/feedback", - CollectUserFeedbackResponse, - path_params=path_params, - json=json, - ) - + json = CollectUserFeedbackRequest(rating=rating, sdk=sdk, sdk_version=sdk_version, reason=reason, user_session_id=user_session_id, custom=custom).to_dict() + return await self.post("/api/v2/video/call/{type}/{id}/feedback", CollectUserFeedbackResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.go_live") - async def go_live( - self, - type: str, - id: str, - recording_storage_name: Optional[str] = None, - start_closed_caption: Optional[bool] = None, - start_composite_recording: Optional[bool] = None, - start_hls: Optional[bool] = None, - start_individual_recording: Optional[bool] = None, - start_raw_recording: Optional[bool] = None, - start_recording: Optional[bool] = None, - start_transcription: Optional[bool] = None, - transcription_storage_name: Optional[str] = None, - ) -> StreamResponse[GoLiveResponse]: + async def go_live(self, type: str, id: str, recording_storage_name: Optional[str] = None, start_closed_caption: Optional[bool] = None, start_composite_recording: Optional[bool] = None, start_hls: Optional[bool] = None, start_individual_recording: Optional[bool] = None, start_raw_recording: Optional[bool] = None, start_recording: Optional[bool] = None, start_transcription: Optional[bool] = None, transcription_storage_name: Optional[str] = None) -> StreamResponse[GoLiveResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = GoLiveRequest( - recording_storage_name=recording_storage_name, - start_closed_caption=start_closed_caption, - start_composite_recording=start_composite_recording, - start_hls=start_hls, - start_individual_recording=start_individual_recording, - start_raw_recording=start_raw_recording, - start_recording=start_recording, - start_transcription=start_transcription, - transcription_storage_name=transcription_storage_name, - ).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/go_live", - GoLiveResponse, - path_params=path_params, - json=json, - ) - + json = GoLiveRequest(recording_storage_name=recording_storage_name, start_closed_caption=start_closed_caption, start_composite_recording=start_composite_recording, start_hls=start_hls, start_individual_recording=start_individual_recording, start_raw_recording=start_raw_recording, start_recording=start_recording, start_transcription=start_transcription, transcription_storage_name=transcription_storage_name).to_dict() + return await self.post("/api/v2/video/call/{type}/{id}/go_live", GoLiveResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.kick_user") - async def kick_user( - self, - type: str, - id: str, - user_id: str, - block: Optional[bool] = None, - kicked_by_id: Optional[str] = None, - kicked_by: Optional[UserRequest] = None, - ) -> StreamResponse[KickUserResponse]: + async def kick_user(self, type: str, id: str, user_id: str, block: Optional[bool] = None, kicked_by_id: Optional[str] = None, kicked_by: Optional[UserRequest] = None) -> StreamResponse[KickUserResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = KickUserRequest( - user_id=user_id, block=block, kicked_by_id=kicked_by_id, kicked_by=kicked_by - ).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/kick", - KickUserResponse, - path_params=path_params, - json=json, - ) - + json = KickUserRequest(user_id=user_id, block=block, kicked_by_id=kicked_by_id, kicked_by=kicked_by).to_dict() + return await self.post("/api/v2/video/call/{type}/{id}/kick", KickUserResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.end_call") async def end_call(self, type: str, id: str) -> StreamResponse[EndCallResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return await self.post( - "/api/v2/video/call/{type}/{id}/mark_ended", - EndCallResponse, - path_params=path_params, - ) - + return await self.post("/api/v2/video/call/{type}/{id}/mark_ended", EndCallResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.update_call_members") - async def update_call_members( - self, - type: str, - id: str, - remove_members: Optional[List[str]] = None, - update_members: Optional[List[MemberRequest]] = None, - ) -> StreamResponse[UpdateCallMembersResponse]: + async def update_call_members(self, type: str, id: str, remove_members: Optional[List[str]] = None, update_members: Optional[List[MemberRequest]] = None) -> StreamResponse[UpdateCallMembersResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = UpdateCallMembersRequest( - remove_members=remove_members, update_members=update_members - ).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/members", - UpdateCallMembersResponse, - path_params=path_params, - json=json, - ) - + json = UpdateCallMembersRequest(remove_members=remove_members, update_members=update_members).to_dict() + return await self.post("/api/v2/video/call/{type}/{id}/members", UpdateCallMembersResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.mute_users") - async def mute_users( - self, - type: str, - id: str, - audio: Optional[bool] = None, - mute_all_users: Optional[bool] = None, - muted_by_id: Optional[str] = None, - screenshare: Optional[bool] = None, - screenshare_audio: Optional[bool] = None, - video: Optional[bool] = None, - user_ids: Optional[List[str]] = None, - muted_by: Optional[UserRequest] = None, - ) -> StreamResponse[MuteUsersResponse]: + async def mute_users(self, type: str, id: str, audio: Optional[bool] = None, mute_all_users: Optional[bool] = None, muted_by_id: Optional[str] = None, screenshare: Optional[bool] = None, screenshare_audio: Optional[bool] = None, video: Optional[bool] = None, user_ids: Optional[List[str]] = None, muted_by: Optional[UserRequest] = None) -> StreamResponse[MuteUsersResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = MuteUsersRequest( - audio=audio, - mute_all_users=mute_all_users, - muted_by_id=muted_by_id, - screenshare=screenshare, - screenshare_audio=screenshare_audio, - video=video, - user_ids=user_ids, - muted_by=muted_by, - ).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/mute_users", - MuteUsersResponse, - path_params=path_params, - json=json, - ) - + json = MuteUsersRequest(audio=audio, mute_all_users=mute_all_users, muted_by_id=muted_by_id, screenshare=screenshare, screenshare_audio=screenshare_audio, video=video, user_ids=user_ids, muted_by=muted_by).to_dict() + return await self.post("/api/v2/video/call/{type}/{id}/mute_users", MuteUsersResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.query_call_participants") - async def query_call_participants( - self, - id: str, - type: str, - limit: Optional[int] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallParticipantsResponse]: + async def query_call_participants(self, id: str, type: str, limit: Optional[int] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallParticipantsResponse]: query_params = build_query_param(limit=limit) path_params = { - "id": id, - "type": type, + "id": id, "type": type, } - json = QueryCallParticipantsRequest( - filter_conditions=filter_conditions - ).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/participants", - QueryCallParticipantsResponse, - query_params=query_params, - path_params=path_params, - json=json, - ) - + json = QueryCallParticipantsRequest(filter_conditions=filter_conditions).to_dict() + return await self.post("/api/v2/video/call/{type}/{id}/participants", QueryCallParticipantsResponse, query_params=query_params, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.video_pin") - async def video_pin( - self, type: str, id: str, session_id: str, user_id: str - ) -> StreamResponse[PinResponse]: + async def video_pin(self, type: str, id: str, session_id: str, user_id: str) -> StreamResponse[PinResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = PinRequest(session_id=session_id, user_id=user_id).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/pin", - PinResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/video/call/{type}/{id}/pin", PinResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.list_recordings") - async def list_recordings( - self, type: str, id: str - ) -> StreamResponse[ListRecordingsResponse]: + async def list_recordings(self, type: str, id: str) -> StreamResponse[ListRecordingsResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return await self.get( - "/api/v2/video/call/{type}/{id}/recordings", - ListRecordingsResponse, - path_params=path_params, - ) - + return await self.get("/api/v2/video/call/{type}/{id}/recordings", ListRecordingsResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.start_recording") - async def start_recording( - self, - type: str, - id: str, - recording_type: str, - recording_external_storage: Optional[str] = None, - ) -> StreamResponse[StartRecordingResponse]: + async def start_recording(self, type: str, id: str, recording_type: str, recording_external_storage: Optional[str] = None) -> StreamResponse[StartRecordingResponse]: path_params = { - "type": type, - "id": id, - "recording_type": recording_type, + "type": type, "id": id, "recording_type": recording_type, } - json = StartRecordingRequest( - recording_external_storage=recording_external_storage - ).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/recordings/{recording_type}/start", - StartRecordingResponse, - path_params=path_params, - json=json, - ) - + json = StartRecordingRequest(recording_external_storage=recording_external_storage).to_dict() + return await self.post("/api/v2/video/call/{type}/{id}/recordings/{recording_type}/start", StartRecordingResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.stop_recording") - async def stop_recording( - self, - type: str, - id: str, - recording_type: str, - ) -> StreamResponse[StopRecordingResponse]: + async def stop_recording(self, type: str, id: str, recording_type: str, ) -> StreamResponse[StopRecordingResponse]: path_params = { - "type": type, - "id": id, - "recording_type": recording_type, + "type": type, "id": id, "recording_type": recording_type, } json = StopRecordingRequest().to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/recordings/{recording_type}/stop", - StopRecordingResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/video/call/{type}/{id}/recordings/{recording_type}/stop", StopRecordingResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.get_call_report") - async def get_call_report( - self, type: str, id: str, session_id: Optional[str] = None - ) -> StreamResponse[GetCallReportResponse]: + async def get_call_report(self, type: str, id: str, session_id: Optional[str] = None) -> StreamResponse[GetCallReportResponse]: query_params = build_query_param(session_id=session_id) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return await self.get( - "/api/v2/video/call/{type}/{id}/report", - GetCallReportResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/video/call/{type}/{id}/report", GetCallReportResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.video.ring_call") - async def ring_call( - self, - type: str, - id: str, - video: Optional[bool] = None, - members_ids: Optional[List[str]] = None, - ) -> StreamResponse[RingCallResponse]: + async def ring_call(self, type: str, id: str, video: Optional[bool] = None, members_ids: Optional[List[str]] = None) -> StreamResponse[RingCallResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = RingCallRequest(video=video, members_ids=members_ids).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/ring", - RingCallResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/video/call/{type}/{id}/ring", RingCallResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.start_rtmp_broadcasts") - async def start_rtmp_broadcasts( - self, type: str, id: str, broadcasts: List[RTMPBroadcastRequest] - ) -> StreamResponse[StartRTMPBroadcastsResponse]: + async def start_rtmp_broadcasts(self, type: str, id: str, broadcasts: List[RTMPBroadcastRequest]) -> StreamResponse[StartRTMPBroadcastsResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = StartRTMPBroadcastsRequest(broadcasts=broadcasts).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/rtmp_broadcasts", - StartRTMPBroadcastsResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/video/call/{type}/{id}/rtmp_broadcasts", StartRTMPBroadcastsResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.stop_all_rtmp_broadcasts") - async def stop_all_rtmp_broadcasts( - self, type: str, id: str - ) -> StreamResponse[StopAllRTMPBroadcastsResponse]: + async def stop_all_rtmp_broadcasts(self, type: str, id: str) -> StreamResponse[StopAllRTMPBroadcastsResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return await self.post( - "/api/v2/video/call/{type}/{id}/rtmp_broadcasts/stop", - StopAllRTMPBroadcastsResponse, - path_params=path_params, - ) - + return await self.post("/api/v2/video/call/{type}/{id}/rtmp_broadcasts/stop", StopAllRTMPBroadcastsResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.stop_rtmp_broadcast") - async def stop_rtmp_broadcast( - self, - type: str, - id: str, - name: str, - ) -> StreamResponse[StopRTMPBroadcastsResponse]: + async def stop_rtmp_broadcast(self, type: str, id: str, name: str, ) -> StreamResponse[StopRTMPBroadcastsResponse]: path_params = { - "type": type, - "id": id, - "name": name, + "type": type, "id": id, "name": name, } json = StopRTMPBroadcastsRequest().to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/rtmp_broadcasts/{name}/stop", - StopRTMPBroadcastsResponse, - path_params=path_params, - json=json, - ) - - @telemetry.operation_name( - "getstream.api.video.get_call_participant_session_metrics" - ) - async def get_call_participant_session_metrics( - self, - type: str, - id: str, - session: str, - user: str, - user_session: str, - since: Optional[datetime] = None, - until: Optional[datetime] = None, - ) -> StreamResponse[GetCallParticipantSessionMetricsResponse]: + return await self.post("/api/v2/video/call/{type}/{id}/rtmp_broadcasts/{name}/stop", StopRTMPBroadcastsResponse, path_params=path_params, json=json) + + @telemetry.operation_name("getstream.api.video.get_call_participant_session_metrics") + async def get_call_participant_session_metrics(self, type: str, id: str, session: str, user: str, user_session: str, since: Optional[datetime] = None, until: Optional[datetime] = None) -> StreamResponse[GetCallParticipantSessionMetricsResponse]: query_params = build_query_param(since=since, until=until) path_params = { - "type": type, - "id": id, - "session": session, - "user": user, - "user_session": user_session, + "type": type, "id": id, "session": session, "user": user, "user_session": user_session, } - return await self.get( - "/api/v2/video/call/{type}/{id}/session/{session}/participant/{user}/{user_session}/details/track", - GetCallParticipantSessionMetricsResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/video/call/{type}/{id}/session/{session}/participant/{user}/{user_session}/details/track", GetCallParticipantSessionMetricsResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.video.query_call_participant_sessions") - async def query_call_participant_sessions( - self, - type: str, - id: str, - session: str, - limit: Optional[int] = None, - prev: Optional[str] = None, - next: Optional[str] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallParticipantSessionsResponse]: - query_params = build_query_param( - limit=limit, prev=prev, next=next, filter_conditions=filter_conditions - ) + async def query_call_participant_sessions(self, type: str, id: str, session: str, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallParticipantSessionsResponse]: + query_params = build_query_param(limit=limit, prev=prev, next=next, filter_conditions=filter_conditions) path_params = { - "type": type, - "id": id, - "session": session, + "type": type, "id": id, "session": session, } - return await self.get( - "/api/v2/video/call/{type}/{id}/session/{session}/participant_sessions", - QueryCallParticipantSessionsResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/video/call/{type}/{id}/session/{session}/participant_sessions", QueryCallParticipantSessionsResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.video.start_hls_broadcasting") - async def start_hls_broadcasting( - self, type: str, id: str - ) -> StreamResponse[StartHLSBroadcastingResponse]: + async def start_hls_broadcasting(self, type: str, id: str) -> StreamResponse[StartHLSBroadcastingResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return await self.post( - "/api/v2/video/call/{type}/{id}/start_broadcasting", - StartHLSBroadcastingResponse, - path_params=path_params, - ) - + return await self.post("/api/v2/video/call/{type}/{id}/start_broadcasting", StartHLSBroadcastingResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.start_closed_captions") - async def start_closed_captions( - self, - type: str, - id: str, - enable_transcription: Optional[bool] = None, - external_storage: Optional[str] = None, - language: Optional[str] = None, - speech_segment_config: Optional[SpeechSegmentConfig] = None, - ) -> StreamResponse[StartClosedCaptionsResponse]: + async def start_closed_captions(self, type: str, id: str, enable_transcription: Optional[bool] = None, external_storage: Optional[str] = None, language: Optional[str] = None, speech_segment_config: Optional[SpeechSegmentConfig] = None) -> StreamResponse[StartClosedCaptionsResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = StartClosedCaptionsRequest( - enable_transcription=enable_transcription, - external_storage=external_storage, - language=language, - speech_segment_config=speech_segment_config, - ).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/start_closed_captions", - StartClosedCaptionsResponse, - path_params=path_params, - json=json, - ) - + json = StartClosedCaptionsRequest(enable_transcription=enable_transcription, external_storage=external_storage, language=language, speech_segment_config=speech_segment_config).to_dict() + return await self.post("/api/v2/video/call/{type}/{id}/start_closed_captions", StartClosedCaptionsResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.start_frame_recording") - async def start_frame_recording( - self, type: str, id: str, recording_external_storage: Optional[str] = None - ) -> StreamResponse[StartFrameRecordingResponse]: + async def start_frame_recording(self, type: str, id: str, recording_external_storage: Optional[str] = None) -> StreamResponse[StartFrameRecordingResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = StartFrameRecordingRequest( - recording_external_storage=recording_external_storage - ).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/start_frame_recording", - StartFrameRecordingResponse, - path_params=path_params, - json=json, - ) - + json = StartFrameRecordingRequest(recording_external_storage=recording_external_storage).to_dict() + return await self.post("/api/v2/video/call/{type}/{id}/start_frame_recording", StartFrameRecordingResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.start_transcription") - async def start_transcription( - self, - type: str, - id: str, - enable_closed_captions: Optional[bool] = None, - language: Optional[str] = None, - transcription_external_storage: Optional[str] = None, - ) -> StreamResponse[StartTranscriptionResponse]: + async def start_transcription(self, type: str, id: str, enable_closed_captions: Optional[bool] = None, language: Optional[str] = None, transcription_external_storage: Optional[str] = None) -> StreamResponse[StartTranscriptionResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = StartTranscriptionRequest( - enable_closed_captions=enable_closed_captions, - language=language, - transcription_external_storage=transcription_external_storage, - ).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/start_transcription", - StartTranscriptionResponse, - path_params=path_params, - json=json, - ) - + json = StartTranscriptionRequest(enable_closed_captions=enable_closed_captions, language=language, transcription_external_storage=transcription_external_storage).to_dict() + return await self.post("/api/v2/video/call/{type}/{id}/start_transcription", StartTranscriptionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.stop_hls_broadcasting") - async def stop_hls_broadcasting( - self, type: str, id: str - ) -> StreamResponse[StopHLSBroadcastingResponse]: + async def stop_hls_broadcasting(self, type: str, id: str) -> StreamResponse[StopHLSBroadcastingResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return await self.post( - "/api/v2/video/call/{type}/{id}/stop_broadcasting", - StopHLSBroadcastingResponse, - path_params=path_params, - ) - + return await self.post("/api/v2/video/call/{type}/{id}/stop_broadcasting", StopHLSBroadcastingResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.stop_closed_captions") - async def stop_closed_captions( - self, type: str, id: str, stop_transcription: Optional[bool] = None - ) -> StreamResponse[StopClosedCaptionsResponse]: + async def stop_closed_captions(self, type: str, id: str, stop_transcription: Optional[bool] = None) -> StreamResponse[StopClosedCaptionsResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = StopClosedCaptionsRequest( - stop_transcription=stop_transcription - ).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/stop_closed_captions", - StopClosedCaptionsResponse, - path_params=path_params, - json=json, - ) - + json = StopClosedCaptionsRequest(stop_transcription=stop_transcription).to_dict() + return await self.post("/api/v2/video/call/{type}/{id}/stop_closed_captions", StopClosedCaptionsResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.stop_frame_recording") - async def stop_frame_recording( - self, type: str, id: str - ) -> StreamResponse[StopFrameRecordingResponse]: + async def stop_frame_recording(self, type: str, id: str) -> StreamResponse[StopFrameRecordingResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return await self.post( - "/api/v2/video/call/{type}/{id}/stop_frame_recording", - StopFrameRecordingResponse, - path_params=path_params, - ) - + return await self.post("/api/v2/video/call/{type}/{id}/stop_frame_recording", StopFrameRecordingResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.stop_live") - async def stop_live( - self, - type: str, - id: str, - continue_closed_caption: Optional[bool] = None, - continue_composite_recording: Optional[bool] = None, - continue_hls: Optional[bool] = None, - continue_individual_recording: Optional[bool] = None, - continue_raw_recording: Optional[bool] = None, - continue_recording: Optional[bool] = None, - continue_rtmp_broadcasts: Optional[bool] = None, - continue_transcription: Optional[bool] = None, - ) -> StreamResponse[StopLiveResponse]: + async def stop_live(self, type: str, id: str, continue_closed_caption: Optional[bool] = None, continue_composite_recording: Optional[bool] = None, continue_hls: Optional[bool] = None, continue_individual_recording: Optional[bool] = None, continue_raw_recording: Optional[bool] = None, continue_recording: Optional[bool] = None, continue_rtmp_broadcasts: Optional[bool] = None, continue_transcription: Optional[bool] = None) -> StreamResponse[StopLiveResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = StopLiveRequest( - continue_closed_caption=continue_closed_caption, - continue_composite_recording=continue_composite_recording, - continue_hls=continue_hls, - continue_individual_recording=continue_individual_recording, - continue_raw_recording=continue_raw_recording, - continue_recording=continue_recording, - continue_rtmp_broadcasts=continue_rtmp_broadcasts, - continue_transcription=continue_transcription, - ).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/stop_live", - StopLiveResponse, - path_params=path_params, - json=json, - ) - + json = StopLiveRequest(continue_closed_caption=continue_closed_caption, continue_composite_recording=continue_composite_recording, continue_hls=continue_hls, continue_individual_recording=continue_individual_recording, continue_raw_recording=continue_raw_recording, continue_recording=continue_recording, continue_rtmp_broadcasts=continue_rtmp_broadcasts, continue_transcription=continue_transcription).to_dict() + return await self.post("/api/v2/video/call/{type}/{id}/stop_live", StopLiveResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.stop_transcription") - async def stop_transcription( - self, type: str, id: str, stop_closed_captions: Optional[bool] = None - ) -> StreamResponse[StopTranscriptionResponse]: + async def stop_transcription(self, type: str, id: str, stop_closed_captions: Optional[bool] = None) -> StreamResponse[StopTranscriptionResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = StopTranscriptionRequest( - stop_closed_captions=stop_closed_captions - ).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/stop_transcription", - StopTranscriptionResponse, - path_params=path_params, - json=json, - ) - + json = StopTranscriptionRequest(stop_closed_captions=stop_closed_captions).to_dict() + return await self.post("/api/v2/video/call/{type}/{id}/stop_transcription", StopTranscriptionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.list_transcriptions") - async def list_transcriptions( - self, type: str, id: str - ) -> StreamResponse[ListTranscriptionsResponse]: + async def list_transcriptions(self, type: str, id: str) -> StreamResponse[ListTranscriptionsResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return await self.get( - "/api/v2/video/call/{type}/{id}/transcriptions", - ListTranscriptionsResponse, - path_params=path_params, - ) - + return await self.get("/api/v2/video/call/{type}/{id}/transcriptions", ListTranscriptionsResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.unblock_user") - async def unblock_user( - self, type: str, id: str, user_id: str - ) -> StreamResponse[UnblockUserResponse]: + async def unblock_user(self, type: str, id: str, user_id: str) -> StreamResponse[UnblockUserResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = UnblockUserRequest(user_id=user_id).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/unblock", - UnblockUserResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/video/call/{type}/{id}/unblock", UnblockUserResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.video_unpin") - async def video_unpin( - self, type: str, id: str, session_id: str, user_id: str - ) -> StreamResponse[UnpinResponse]: + async def video_unpin(self, type: str, id: str, session_id: str, user_id: str) -> StreamResponse[UnpinResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = UnpinRequest(session_id=session_id, user_id=user_id).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/unpin", - UnpinResponse, - path_params=path_params, - json=json, - ) - + return await self.post("/api/v2/video/call/{type}/{id}/unpin", UnpinResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.update_user_permissions") - async def update_user_permissions( - self, - type: str, - id: str, - user_id: str, - grant_permissions: Optional[List[str]] = None, - revoke_permissions: Optional[List[str]] = None, - ) -> StreamResponse[UpdateUserPermissionsResponse]: + async def update_user_permissions(self, type: str, id: str, user_id: str, grant_permissions: Optional[List[str]] = None, revoke_permissions: Optional[List[str]] = None) -> StreamResponse[UpdateUserPermissionsResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = UpdateUserPermissionsRequest( - user_id=user_id, - grant_permissions=grant_permissions, - revoke_permissions=revoke_permissions, - ).to_dict() - return await self.post( - "/api/v2/video/call/{type}/{id}/user_permissions", - UpdateUserPermissionsResponse, - path_params=path_params, - json=json, - ) - + json = UpdateUserPermissionsRequest(user_id=user_id, grant_permissions=grant_permissions, revoke_permissions=revoke_permissions).to_dict() + return await self.post("/api/v2/video/call/{type}/{id}/user_permissions", UpdateUserPermissionsResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.delete_recording") - async def delete_recording( - self, type: str, id: str, session: str, filename: str - ) -> StreamResponse[DeleteRecordingResponse]: + async def delete_recording(self, type: str, id: str, session: str, filename: str) -> StreamResponse[DeleteRecordingResponse]: path_params = { - "type": type, - "id": id, - "session": session, - "filename": filename, + "type": type, "id": id, "session": session, "filename": filename, } - return await self.delete( - "/api/v2/video/call/{type}/{id}/{session}/recordings/{filename}", - DeleteRecordingResponse, - path_params=path_params, - ) - + return await self.delete("/api/v2/video/call/{type}/{id}/{session}/recordings/{filename}", DeleteRecordingResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.delete_transcription") - async def delete_transcription( - self, type: str, id: str, session: str, filename: str - ) -> StreamResponse[DeleteTranscriptionResponse]: + async def delete_transcription(self, type: str, id: str, session: str, filename: str) -> StreamResponse[DeleteTranscriptionResponse]: path_params = { - "type": type, - "id": id, - "session": session, - "filename": filename, + "type": type, "id": id, "session": session, "filename": filename, } - return await self.delete( - "/api/v2/video/call/{type}/{id}/{session}/transcriptions/{filename}", - DeleteTranscriptionResponse, - path_params=path_params, - ) - + return await self.delete("/api/v2/video/call/{type}/{id}/{session}/transcriptions/{filename}", DeleteTranscriptionResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.report_client_call_event") - async def report_client_call_event( - self, events: List[ClientEvent] - ) -> StreamResponse[ReportClientEventResponse]: + async def report_client_call_event(self, events: List[ClientEvent]) -> StreamResponse[ReportClientEventResponse]: json = ReportClientEventRequest(events=events).to_dict() - return await self.post( - "/api/v2/video/call_client_event", ReportClientEventResponse, json=json - ) - + return await self.post("/api/v2/video/call_client_event", ReportClientEventResponse, json=json) + @telemetry.operation_name("getstream.api.video.query_call_session_stats") - async def query_call_session_stats( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallSessionStatsResponse]: - json = QueryCallSessionStatsRequest( - limit=limit, - next=next, - prev=prev, - sort=sort, - filter_conditions=filter_conditions, - ).to_dict() - return await self.post( - "/api/v2/video/call_stats", QueryCallSessionStatsResponse, json=json - ) - + async def query_call_session_stats(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallSessionStatsResponse]: + json = QueryCallSessionStatsRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() + return await self.post("/api/v2/video/call_stats", QueryCallSessionStatsResponse, json=json) + @telemetry.operation_name("getstream.api.video.get_call_stats_map") - async def get_call_stats_map( - self, - call_type: str, - call_id: str, - session: str, - start_time: Optional[datetime] = None, - end_time: Optional[datetime] = None, - exclude_publishers: Optional[bool] = None, - exclude_subscribers: Optional[bool] = None, - exclude_sfus: Optional[bool] = None, - ) -> StreamResponse[QueryCallStatsMapResponse]: - query_params = build_query_param( - start_time=start_time, - end_time=end_time, - exclude_publishers=exclude_publishers, - exclude_subscribers=exclude_subscribers, - exclude_sfus=exclude_sfus, - ) + async def get_call_stats_map(self, call_type: str, call_id: str, session: str, start_time: Optional[datetime] = None, end_time: Optional[datetime] = None, exclude_publishers: Optional[bool] = None, exclude_subscribers: Optional[bool] = None, exclude_sfus: Optional[bool] = None) -> StreamResponse[QueryCallStatsMapResponse]: + query_params = build_query_param(start_time=start_time, end_time=end_time, exclude_publishers=exclude_publishers, exclude_subscribers=exclude_subscribers, exclude_sfus=exclude_sfus) path_params = { - "call_type": call_type, - "call_id": call_id, - "session": session, + "call_type": call_type, "call_id": call_id, "session": session, } - return await self.get( - "/api/v2/video/call_stats/{call_type}/{call_id}/{session}/map", - QueryCallStatsMapResponse, - query_params=query_params, - path_params=path_params, - ) - - @telemetry.operation_name( - "getstream.api.video.get_call_session_participant_stats_details" - ) - async def get_call_session_participant_stats_details( - self, - call_type: str, - call_id: str, - session: str, - user: str, - user_session: str, - since: Optional[str] = None, - until: Optional[str] = None, - max_points: Optional[int] = None, - ) -> StreamResponse[GetCallSessionParticipantStatsDetailsResponse]: - query_params = build_query_param( - since=since, until=until, max_points=max_points - ) + return await self.get("/api/v2/video/call_stats/{call_type}/{call_id}/{session}/map", QueryCallStatsMapResponse, query_params=query_params, path_params=path_params) + + @telemetry.operation_name("getstream.api.video.get_call_session_participant_stats_details") + async def get_call_session_participant_stats_details(self, call_type: str, call_id: str, session: str, user: str, user_session: str, since: Optional[str] = None, until: Optional[str] = None, max_points: Optional[int] = None) -> StreamResponse[GetCallSessionParticipantStatsDetailsResponse]: + query_params = build_query_param(since=since, until=until, max_points=max_points) path_params = { - "call_type": call_type, - "call_id": call_id, - "session": session, - "user": user, - "user_session": user_session, + "call_type": call_type, "call_id": call_id, "session": session, "user": user, "user_session": user_session, } - return await self.get( - "/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participant/{user}/{user_session}/details", - GetCallSessionParticipantStatsDetailsResponse, - query_params=query_params, - path_params=path_params, - ) - - @telemetry.operation_name( - "getstream.api.video.query_call_session_participant_stats" - ) - async def query_call_session_participant_stats( - self, - call_type: str, - call_id: str, - session: str, - limit: Optional[int] = None, - prev: Optional[str] = None, - next: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallSessionParticipantStatsResponse]: - query_params = build_query_param( - limit=limit, - prev=prev, - next=next, - sort=sort, - filter_conditions=filter_conditions, - ) + return await self.get("/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participant/{user}/{user_session}/details", GetCallSessionParticipantStatsDetailsResponse, query_params=query_params, path_params=path_params) + + @telemetry.operation_name("getstream.api.video.query_call_session_participant_stats") + async def query_call_session_participant_stats(self, call_type: str, call_id: str, session: str, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallSessionParticipantStatsResponse]: + query_params = build_query_param(limit=limit, prev=prev, next=next, sort=sort, filter_conditions=filter_conditions) path_params = { - "call_type": call_type, - "call_id": call_id, - "session": session, + "call_type": call_type, "call_id": call_id, "session": session, } - return await self.get( - "/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participants", - QueryCallSessionParticipantStatsResponse, - query_params=query_params, - path_params=path_params, - ) - - @telemetry.operation_name( - "getstream.api.video.get_call_session_participant_stats_timeline" - ) - async def get_call_session_participant_stats_timeline( - self, - call_type: str, - call_id: str, - session: str, - user: str, - user_session: str, - start_time: Optional[str] = None, - end_time: Optional[str] = None, - severity: Optional[List[str]] = None, - ) -> StreamResponse[QueryCallSessionParticipantStatsTimelineResponse]: - query_params = build_query_param( - start_time=start_time, end_time=end_time, severity=severity - ) + return await self.get("/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participants", QueryCallSessionParticipantStatsResponse, query_params=query_params, path_params=path_params) + + @telemetry.operation_name("getstream.api.video.get_call_session_participant_stats_timeline") + async def get_call_session_participant_stats_timeline(self, call_type: str, call_id: str, session: str, user: str, user_session: str, start_time: Optional[str] = None, end_time: Optional[str] = None, severity: Optional[List[str]] = None) -> StreamResponse[QueryCallSessionParticipantStatsTimelineResponse]: + query_params = build_query_param(start_time=start_time, end_time=end_time, severity=severity) path_params = { - "call_type": call_type, - "call_id": call_id, - "session": session, - "user": user, - "user_session": user_session, + "call_type": call_type, "call_id": call_id, "session": session, "user": user, "user_session": user_session, } - return await self.get( - "/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participants/{user}/{user_session}/timeline", - QueryCallSessionParticipantStatsTimelineResponse, - query_params=query_params, - path_params=path_params, - ) - + return await self.get("/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participants/{user}/{user_session}/timeline", QueryCallSessionParticipantStatsTimelineResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.video.query_calls") - async def query_calls( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallsResponse]: - json = QueryCallsRequest( - limit=limit, - next=next, - prev=prev, - sort=sort, - filter_conditions=filter_conditions, - ).to_dict() + async def query_calls(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallsResponse]: + json = QueryCallsRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() return await self.post("/api/v2/video/calls", QueryCallsResponse, json=json) - + @telemetry.operation_name("getstream.api.video.list_call_types") async def list_call_types(self) -> StreamResponse[ListCallTypeResponse]: return await self.get("/api/v2/video/calltypes", ListCallTypeResponse) - + @telemetry.operation_name("getstream.api.video.create_call_type") - async def create_call_type( - self, - name: str, - external_storage: Optional[str] = None, - grants: Optional[Dict[str, List[str]]] = None, - notification_settings: Optional[NotificationSettingsRequest] = None, - settings: Optional[CallSettingsRequest] = None, - ) -> StreamResponse[CreateCallTypeResponse]: - json = CreateCallTypeRequest( - name=name, - external_storage=external_storage, - grants=grants, - notification_settings=notification_settings, - settings=settings, - ).to_dict() - return await self.post( - "/api/v2/video/calltypes", CreateCallTypeResponse, json=json - ) - + async def create_call_type(self, name: str, external_storage: Optional[str] = None, grants: Optional[Dict[str, List[str]]] = None, notification_settings: Optional[NotificationSettingsRequest] = None, settings: Optional[CallSettingsRequest] = None) -> StreamResponse[CreateCallTypeResponse]: + json = CreateCallTypeRequest(name=name, external_storage=external_storage, grants=grants, notification_settings=notification_settings, settings=settings).to_dict() + return await self.post("/api/v2/video/calltypes", CreateCallTypeResponse, json=json) + @telemetry.operation_name("getstream.api.video.delete_call_type") async def delete_call_type(self, name: str) -> StreamResponse[Response]: path_params = { - "name": name, + "name": name, } - return await self.delete( - "/api/v2/video/calltypes/{name}", Response, path_params=path_params - ) - + return await self.delete("/api/v2/video/calltypes/{name}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.video.get_call_type") async def get_call_type(self, name: str) -> StreamResponse[GetCallTypeResponse]: path_params = { - "name": name, + "name": name, } - return await self.get( - "/api/v2/video/calltypes/{name}", - GetCallTypeResponse, - path_params=path_params, - ) - + return await self.get("/api/v2/video/calltypes/{name}", GetCallTypeResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.update_call_type") - async def update_call_type( - self, - name: str, - external_storage: Optional[str] = None, - grants: Optional[Dict[str, List[str]]] = None, - notification_settings: Optional[NotificationSettingsRequest] = None, - settings: Optional[CallSettingsRequest] = None, - ) -> StreamResponse[UpdateCallTypeResponse]: + async def update_call_type(self, name: str, external_storage: Optional[str] = None, grants: Optional[Dict[str, List[str]]] = None, notification_settings: Optional[NotificationSettingsRequest] = None, settings: Optional[CallSettingsRequest] = None) -> StreamResponse[UpdateCallTypeResponse]: path_params = { - "name": name, + "name": name, } - json = UpdateCallTypeRequest( - external_storage=external_storage, - grants=grants, - notification_settings=notification_settings, - settings=settings, - ).to_dict() - return await self.put( - "/api/v2/video/calltypes/{name}", - UpdateCallTypeResponse, - path_params=path_params, - json=json, - ) - + json = UpdateCallTypeRequest(external_storage=external_storage, grants=grants, notification_settings=notification_settings, settings=settings).to_dict() + return await self.put("/api/v2/video/calltypes/{name}", UpdateCallTypeResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.get_edges") async def get_edges(self) -> StreamResponse[GetEdgesResponse]: return await self.get("/api/v2/video/edges", GetEdgesResponse) - + @telemetry.operation_name("getstream.api.video.resolve_sip_auth") - async def resolve_sip_auth( - self, - sip_caller_number: str, - sip_trunk_number: str, - from_host: Optional[str] = None, - source_ip: Optional[str] = None, - ) -> StreamResponse[ResolveSipAuthResponse]: - json = ResolveSipAuthRequest( - sip_caller_number=sip_caller_number, - sip_trunk_number=sip_trunk_number, - from_host=from_host, - source_ip=source_ip, - ).to_dict() - return await self.post( - "/api/v2/video/sip/auth", ResolveSipAuthResponse, json=json - ) - + async def resolve_sip_auth(self, sip_caller_number: str, sip_trunk_number: str, from_host: Optional[str] = None, source_ip: Optional[str] = None) -> StreamResponse[ResolveSipAuthResponse]: + json = ResolveSipAuthRequest(sip_caller_number=sip_caller_number, sip_trunk_number=sip_trunk_number, from_host=from_host, source_ip=source_ip).to_dict() + return await self.post("/api/v2/video/sip/auth", ResolveSipAuthResponse, json=json) + @telemetry.operation_name("getstream.api.video.list_sip_inbound_routing_rule") - async def list_sip_inbound_routing_rule( - self, - ) -> StreamResponse[ListSIPInboundRoutingRuleResponse]: - return await self.get( - "/api/v2/video/sip/inbound_routing_rules", ListSIPInboundRoutingRuleResponse - ) - + async def list_sip_inbound_routing_rule(self) -> StreamResponse[ListSIPInboundRoutingRuleResponse]: + return await self.get("/api/v2/video/sip/inbound_routing_rules", ListSIPInboundRoutingRuleResponse) + @telemetry.operation_name("getstream.api.video.create_sip_inbound_routing_rule") - async def create_sip_inbound_routing_rule( - self, - name: str, - trunk_ids: List[str], - caller_configs: SIPCallerConfigsRequest, - called_numbers: Optional[List[str]] = None, - caller_numbers: Optional[List[str]] = None, - call_configs: Optional[SIPCallConfigsRequest] = None, - direct_routing_configs: Optional[SIPDirectRoutingRuleCallConfigsRequest] = None, - pin_protection_configs: Optional[SIPPinProtectionConfigsRequest] = None, - pin_routing_configs: Optional[SIPInboundRoutingRulePinConfigsRequest] = None, - ) -> StreamResponse[SIPInboundRoutingRuleResponse]: - json = SIPInboundRoutingRuleRequest( - name=name, - trunk_ids=trunk_ids, - caller_configs=caller_configs, - called_numbers=called_numbers, - caller_numbers=caller_numbers, - call_configs=call_configs, - direct_routing_configs=direct_routing_configs, - pin_protection_configs=pin_protection_configs, - pin_routing_configs=pin_routing_configs, - ).to_dict() - return await self.post( - "/api/v2/video/sip/inbound_routing_rules", - SIPInboundRoutingRuleResponse, - json=json, - ) - + async def create_sip_inbound_routing_rule(self, name: str, trunk_ids: List[str], caller_configs: SIPCallerConfigsRequest, called_numbers: Optional[List[str]] = None, caller_numbers: Optional[List[str]] = None, call_configs: Optional[SIPCallConfigsRequest] = None, direct_routing_configs: Optional[SIPDirectRoutingRuleCallConfigsRequest] = None, pin_protection_configs: Optional[SIPPinProtectionConfigsRequest] = None, pin_routing_configs: Optional[SIPInboundRoutingRulePinConfigsRequest] = None) -> StreamResponse[SIPInboundRoutingRuleResponse]: + json = SIPInboundRoutingRuleRequest(name=name, trunk_ids=trunk_ids, caller_configs=caller_configs, called_numbers=called_numbers, caller_numbers=caller_numbers, call_configs=call_configs, direct_routing_configs=direct_routing_configs, pin_protection_configs=pin_protection_configs, pin_routing_configs=pin_routing_configs).to_dict() + return await self.post("/api/v2/video/sip/inbound_routing_rules", SIPInboundRoutingRuleResponse, json=json) + @telemetry.operation_name("getstream.api.video.delete_sip_inbound_routing_rule") - async def delete_sip_inbound_routing_rule( - self, id: str - ) -> StreamResponse[DeleteSIPInboundRoutingRuleResponse]: + async def delete_sip_inbound_routing_rule(self, id: str) -> StreamResponse[DeleteSIPInboundRoutingRuleResponse]: path_params = { - "id": id, + "id": id, } - return await self.delete( - "/api/v2/video/sip/inbound_routing_rules/{id}", - DeleteSIPInboundRoutingRuleResponse, - path_params=path_params, - ) - + return await self.delete("/api/v2/video/sip/inbound_routing_rules/{id}", DeleteSIPInboundRoutingRuleResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.update_sip_inbound_routing_rule") - async def update_sip_inbound_routing_rule( - self, - id: str, - name: str, - trunk_ids: List[str], - caller_configs: SIPCallerConfigsRequest, - called_numbers: Optional[List[str]] = None, - caller_numbers: Optional[List[str]] = None, - call_configs: Optional[SIPCallConfigsRequest] = None, - direct_routing_configs: Optional[SIPDirectRoutingRuleCallConfigsRequest] = None, - pin_protection_configs: Optional[SIPPinProtectionConfigsRequest] = None, - pin_routing_configs: Optional[SIPInboundRoutingRulePinConfigsRequest] = None, - ) -> StreamResponse[UpdateSIPInboundRoutingRuleResponse]: + async def update_sip_inbound_routing_rule(self, id: str, name: str, trunk_ids: List[str], caller_configs: SIPCallerConfigsRequest, called_numbers: Optional[List[str]] = None, caller_numbers: Optional[List[str]] = None, call_configs: Optional[SIPCallConfigsRequest] = None, direct_routing_configs: Optional[SIPDirectRoutingRuleCallConfigsRequest] = None, pin_protection_configs: Optional[SIPPinProtectionConfigsRequest] = None, pin_routing_configs: Optional[SIPInboundRoutingRulePinConfigsRequest] = None) -> StreamResponse[UpdateSIPInboundRoutingRuleResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateSIPInboundRoutingRuleRequest( - name=name, - trunk_ids=trunk_ids, - caller_configs=caller_configs, - called_numbers=called_numbers, - caller_numbers=caller_numbers, - call_configs=call_configs, - direct_routing_configs=direct_routing_configs, - pin_protection_configs=pin_protection_configs, - pin_routing_configs=pin_routing_configs, - ).to_dict() - return await self.put( - "/api/v2/video/sip/inbound_routing_rules/{id}", - UpdateSIPInboundRoutingRuleResponse, - path_params=path_params, - json=json, - ) - + json = UpdateSIPInboundRoutingRuleRequest(name=name, trunk_ids=trunk_ids, caller_configs=caller_configs, called_numbers=called_numbers, caller_numbers=caller_numbers, call_configs=call_configs, direct_routing_configs=direct_routing_configs, pin_protection_configs=pin_protection_configs, pin_routing_configs=pin_routing_configs).to_dict() + return await self.put("/api/v2/video/sip/inbound_routing_rules/{id}", UpdateSIPInboundRoutingRuleResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.list_sip_trunks") async def list_sip_trunks(self) -> StreamResponse[ListSIPTrunksResponse]: return await self.get("/api/v2/video/sip/inbound_trunks", ListSIPTrunksResponse) - + @telemetry.operation_name("getstream.api.video.create_sip_trunk") - async def create_sip_trunk( - self, - name: str, - numbers: List[str], - password: Optional[str] = None, - allowed_ips: Optional[List[str]] = None, - ) -> StreamResponse[CreateSIPTrunkResponse]: - json = CreateSIPTrunkRequest( - name=name, numbers=numbers, password=password, allowed_ips=allowed_ips - ).to_dict() - return await self.post( - "/api/v2/video/sip/inbound_trunks", CreateSIPTrunkResponse, json=json - ) - + async def create_sip_trunk(self, name: str, numbers: List[str], password: Optional[str] = None, allowed_ips: Optional[List[str]] = None) -> StreamResponse[CreateSIPTrunkResponse]: + json = CreateSIPTrunkRequest(name=name, numbers=numbers, password=password, allowed_ips=allowed_ips).to_dict() + return await self.post("/api/v2/video/sip/inbound_trunks", CreateSIPTrunkResponse, json=json) + @telemetry.operation_name("getstream.api.video.delete_sip_trunk") async def delete_sip_trunk(self, id: str) -> StreamResponse[DeleteSIPTrunkResponse]: path_params = { - "id": id, + "id": id, } - return await self.delete( - "/api/v2/video/sip/inbound_trunks/{id}", - DeleteSIPTrunkResponse, - path_params=path_params, - ) - + return await self.delete("/api/v2/video/sip/inbound_trunks/{id}", DeleteSIPTrunkResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.update_sip_trunk") - async def update_sip_trunk( - self, - id: str, - name: str, - numbers: List[str], - password: Optional[str] = None, - allowed_ips: Optional[List[str]] = None, - ) -> StreamResponse[UpdateSIPTrunkResponse]: + async def update_sip_trunk(self, id: str, name: str, numbers: List[str], password: Optional[str] = None, allowed_ips: Optional[List[str]] = None) -> StreamResponse[UpdateSIPTrunkResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateSIPTrunkRequest( - name=name, numbers=numbers, password=password, allowed_ips=allowed_ips - ).to_dict() - return await self.put( - "/api/v2/video/sip/inbound_trunks/{id}", - UpdateSIPTrunkResponse, - path_params=path_params, - json=json, - ) - + json = UpdateSIPTrunkRequest(name=name, numbers=numbers, password=password, allowed_ips=allowed_ips).to_dict() + return await self.put("/api/v2/video/sip/inbound_trunks/{id}", UpdateSIPTrunkResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.resolve_sip_inbound") - async def resolve_sip_inbound( - self, - sip_caller_number: str, - sip_trunk_number: str, - routing_number: Optional[str] = None, - trunk_id: Optional[str] = None, - challenge: Optional[SIPChallengeRequest] = None, - sip_headers: Optional[Dict[str, str]] = None, - ) -> StreamResponse[ResolveSipInboundResponse]: - json = ResolveSipInboundRequest( - sip_caller_number=sip_caller_number, - sip_trunk_number=sip_trunk_number, - routing_number=routing_number, - trunk_id=trunk_id, - challenge=challenge, - sip_headers=sip_headers, - ).to_dict() - return await self.post( - "/api/v2/video/sip/resolve", ResolveSipInboundResponse, json=json - ) - + async def resolve_sip_inbound(self, sip_caller_number: str, sip_trunk_number: str, routing_number: Optional[str] = None, trunk_id: Optional[str] = None, challenge: Optional[SIPChallengeRequest] = None, sip_headers: Optional[Dict[str, str]] = None) -> StreamResponse[ResolveSipInboundResponse]: + json = ResolveSipInboundRequest(sip_caller_number=sip_caller_number, sip_trunk_number=sip_trunk_number, routing_number=routing_number, trunk_id=trunk_id, challenge=challenge, sip_headers=sip_headers).to_dict() + return await self.post("/api/v2/video/sip/resolve", ResolveSipInboundResponse, json=json) + @telemetry.operation_name("getstream.api.video.query_aggregate_call_stats") - async def query_aggregate_call_stats( - self, - _from: Optional[str] = None, - to: Optional[str] = None, - report_types: Optional[List[str]] = None, - ) -> StreamResponse[QueryAggregateCallStatsResponse]: - json = QueryAggregateCallStatsRequest( - _from=_from, to=to, report_types=report_types - ).to_dict() - return await self.post( - "/api/v2/video/stats", QueryAggregateCallStatsResponse, json=json - ) - + async def query_aggregate_call_stats(self, _from: Optional[str] = None, to: Optional[str] = None, report_types: Optional[List[str]] = None) -> StreamResponse[QueryAggregateCallStatsResponse]: + json = QueryAggregateCallStatsRequest(_from=_from, to=to, report_types=report_types).to_dict() + return await self.post("/api/v2/video/stats", QueryAggregateCallStatsResponse, json=json) + @telemetry.operation_name("getstream.api.video.get_daily_digest") - async def get_daily_digest( - self, date: Optional[str] = None, app_id: Optional[str] = None - ) -> StreamResponse[GetDailyDigestResponse]: - query_params = build_query_param(date=date, app_id=app_id) - return await self.get( - "/api/v2/video/stats/daily_digest", - GetDailyDigestResponse, - query_params=query_params, - ) + async def get_daily_digest(self, date: Optional[str] = None, target_app_id: Optional[str] = None) -> StreamResponse[GetDailyDigestResponse]: + query_params = build_query_param(date=date, target_app_id=target_app_id) + return await self.get("/api/v2/video/stats/daily_digest", GetDailyDigestResponse, query_params=query_params) + \ No newline at end of file diff --git a/getstream/video/call.py b/getstream/video/call.py index 197f5d0e..0f2d68b2 100644 --- a/getstream/video/call.py +++ b/getstream/video/call.py @@ -6,97 +6,35 @@ class Call(BaseCall): + + + @attach_call_cid + def get(self, members_limit: Optional[int] = None, ring: Optional[bool] = None, notify: Optional[bool] = None, video: Optional[bool] = None) -> StreamResponse[GetCallResponse]: + response = self.client.get_call(type=self.call_type, id=self.id, members_limit=members_limit, ring=ring, notify=notify, video=video) + self._sync_from_response(response.data) + return response + + @attach_call_cid + def update(self, starts_at: Optional[datetime] = None, custom: Optional[Dict[str, object]] = None, settings_override: Optional[CallSettingsRequest] = None) -> StreamResponse[UpdateCallResponse]: + response = self.client.update_call(type=self.call_type, id=self.id, starts_at=starts_at, custom=custom, settings_override=settings_override) + self._sync_from_response(response.data) + return response + @attach_call_cid - def get( - self, - members_limit: Optional[int] = None, - ring: Optional[bool] = None, - notify: Optional[bool] = None, - video: Optional[bool] = None, - ) -> StreamResponse[GetCallResponse]: - response = self.client.get_call( - type=self.call_type, - id=self.id, - members_limit=members_limit, - ring=ring, - notify=notify, - video=video, - ) - self._sync_from_response(response.data) - return response - - @attach_call_cid - def update( - self, - starts_at: Optional[datetime] = None, - custom: Optional[Dict[str, object]] = None, - settings_override: Optional[CallSettingsRequest] = None, - ) -> StreamResponse[UpdateCallResponse]: - response = self.client.update_call( - type=self.call_type, - id=self.id, - starts_at=starts_at, - custom=custom, - settings_override=settings_override, - ) - self._sync_from_response(response.data) - return response - - @attach_call_cid - def get_or_create( - self, - members_limit: Optional[int] = None, - notify: Optional[bool] = None, - ring: Optional[bool] = None, - video: Optional[bool] = None, - data: Optional[CallRequest] = None, - ) -> StreamResponse[GetOrCreateCallResponse]: - response = self.client.get_or_create_call( - type=self.call_type, - id=self.id, - members_limit=members_limit, - notify=notify, - ring=ring, - video=video, - data=data, - ) + def get_or_create(self, members_limit: Optional[int] = None, notify: Optional[bool] = None, ring: Optional[bool] = None, video: Optional[bool] = None, data: Optional[CallRequest] = None) -> StreamResponse[GetOrCreateCallResponse]: + response = self.client.get_or_create_call(type=self.call_type, id=self.id, members_limit=members_limit, notify=notify, ring=ring, video=video, data=data) self._sync_from_response(response.data) return response @attach_call_cid def block_user(self, user_id: str) -> StreamResponse[BlockUserResponse]: - response = self.client.block_user( - type=self.call_type, id=self.id, user_id=user_id - ) - self._sync_from_response(response.data) - return response - - @attach_call_cid - def send_closed_caption( - self, - speaker_id: str, - text: str, - end_time: Optional[datetime] = None, - language: Optional[str] = None, - service: Optional[str] = None, - start_time: Optional[datetime] = None, - translated: Optional[bool] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[SendClosedCaptionResponse]: - response = self.client.send_closed_caption( - type=self.call_type, - id=self.id, - speaker_id=speaker_id, - text=text, - end_time=end_time, - language=language, - service=service, - start_time=start_time, - translated=translated, - user_id=user_id, - user=user, - ) + response = self.client.block_user(type=self.call_type, id=self.id, user_id=user_id) + self._sync_from_response(response.data) + return response + + @attach_call_cid + def send_closed_caption(self, speaker_id: str, text: str, end_time: Optional[datetime] = None, language: Optional[str] = None, service: Optional[str] = None, start_time: Optional[datetime] = None, translated: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[SendClosedCaptionResponse]: + response = self.client.send_closed_caption(type=self.call_type, id=self.id, speaker_id=speaker_id, text=text, end_time=end_time, language=language, service=service, start_time=start_time, translated=translated, user_id=user_id, user=user) self._sync_from_response(response.data) return response @@ -107,86 +45,26 @@ def delete(self, hard: Optional[bool] = None) -> StreamResponse[DeleteCallRespon return response @attach_call_cid - def send_call_event( - self, - user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[SendCallEventResponse]: - response = self.client.send_call_event( - type=self.call_type, id=self.id, user_id=user_id, custom=custom, user=user - ) - self._sync_from_response(response.data) - return response - - @attach_call_cid - def collect_user_feedback( - self, - rating: int, - sdk: str, - sdk_version: str, - reason: Optional[str] = None, - user_session_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - ) -> StreamResponse[CollectUserFeedbackResponse]: - response = self.client.collect_user_feedback( - type=self.call_type, - id=self.id, - rating=rating, - sdk=sdk, - sdk_version=sdk_version, - reason=reason, - user_session_id=user_session_id, - custom=custom, - ) - self._sync_from_response(response.data) - return response - - @attach_call_cid - def go_live( - self, - recording_storage_name: Optional[str] = None, - start_closed_caption: Optional[bool] = None, - start_composite_recording: Optional[bool] = None, - start_hls: Optional[bool] = None, - start_individual_recording: Optional[bool] = None, - start_raw_recording: Optional[bool] = None, - start_recording: Optional[bool] = None, - start_transcription: Optional[bool] = None, - transcription_storage_name: Optional[str] = None, - ) -> StreamResponse[GoLiveResponse]: - response = self.client.go_live( - type=self.call_type, - id=self.id, - recording_storage_name=recording_storage_name, - start_closed_caption=start_closed_caption, - start_composite_recording=start_composite_recording, - start_hls=start_hls, - start_individual_recording=start_individual_recording, - start_raw_recording=start_raw_recording, - start_recording=start_recording, - start_transcription=start_transcription, - transcription_storage_name=transcription_storage_name, - ) - self._sync_from_response(response.data) - return response - - @attach_call_cid - def kick_user( - self, - user_id: str, - block: Optional[bool] = None, - kicked_by_id: Optional[str] = None, - kicked_by: Optional[UserRequest] = None, - ) -> StreamResponse[KickUserResponse]: - response = self.client.kick_user( - type=self.call_type, - id=self.id, - user_id=user_id, - block=block, - kicked_by_id=kicked_by_id, - kicked_by=kicked_by, - ) + def send_call_event(self, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[SendCallEventResponse]: + response = self.client.send_call_event(type=self.call_type, id=self.id, user_id=user_id, custom=custom, user=user) + self._sync_from_response(response.data) + return response + + @attach_call_cid + def collect_user_feedback(self, rating: int, sdk: str, sdk_version: str, reason: Optional[str] = None, user_session_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[CollectUserFeedbackResponse]: + response = self.client.collect_user_feedback(type=self.call_type, id=self.id, rating=rating, sdk=sdk, sdk_version=sdk_version, reason=reason, user_session_id=user_session_id, custom=custom) + self._sync_from_response(response.data) + return response + + @attach_call_cid + def go_live(self, recording_storage_name: Optional[str] = None, start_closed_caption: Optional[bool] = None, start_composite_recording: Optional[bool] = None, start_hls: Optional[bool] = None, start_individual_recording: Optional[bool] = None, start_raw_recording: Optional[bool] = None, start_recording: Optional[bool] = None, start_transcription: Optional[bool] = None, transcription_storage_name: Optional[str] = None) -> StreamResponse[GoLiveResponse]: + response = self.client.go_live(type=self.call_type, id=self.id, recording_storage_name=recording_storage_name, start_closed_caption=start_closed_caption, start_composite_recording=start_composite_recording, start_hls=start_hls, start_individual_recording=start_individual_recording, start_raw_recording=start_raw_recording, start_recording=start_recording, start_transcription=start_transcription, transcription_storage_name=transcription_storage_name) + self._sync_from_response(response.data) + return response + + @attach_call_cid + def kick_user(self, user_id: str, block: Optional[bool] = None, kicked_by_id: Optional[str] = None, kicked_by: Optional[UserRequest] = None) -> StreamResponse[KickUserResponse]: + response = self.client.kick_user(type=self.call_type, id=self.id, user_id=user_id, block=block, kicked_by_id=kicked_by_id, kicked_by=kicked_by) self._sync_from_response(response.data) return response @@ -197,67 +75,26 @@ def end(self) -> StreamResponse[EndCallResponse]: return response @attach_call_cid - def update_call_members( - self, - remove_members: Optional[List[str]] = None, - update_members: Optional[List[MemberRequest]] = None, - ) -> StreamResponse[UpdateCallMembersResponse]: - response = self.client.update_call_members( - type=self.call_type, - id=self.id, - remove_members=remove_members, - update_members=update_members, - ) + def update_call_members(self, remove_members: Optional[List[str]] = None, update_members: Optional[List[MemberRequest]] = None) -> StreamResponse[UpdateCallMembersResponse]: + response = self.client.update_call_members(type=self.call_type, id=self.id, remove_members=remove_members, update_members=update_members) self._sync_from_response(response.data) return response @attach_call_cid - def mute_users( - self, - audio: Optional[bool] = None, - mute_all_users: Optional[bool] = None, - muted_by_id: Optional[str] = None, - screenshare: Optional[bool] = None, - screenshare_audio: Optional[bool] = None, - video: Optional[bool] = None, - user_ids: Optional[List[str]] = None, - muted_by: Optional[UserRequest] = None, - ) -> StreamResponse[MuteUsersResponse]: - response = self.client.mute_users( - type=self.call_type, - id=self.id, - audio=audio, - mute_all_users=mute_all_users, - muted_by_id=muted_by_id, - screenshare=screenshare, - screenshare_audio=screenshare_audio, - video=video, - user_ids=user_ids, - muted_by=muted_by, - ) + def mute_users(self, audio: Optional[bool] = None, mute_all_users: Optional[bool] = None, muted_by_id: Optional[str] = None, screenshare: Optional[bool] = None, screenshare_audio: Optional[bool] = None, video: Optional[bool] = None, user_ids: Optional[List[str]] = None, muted_by: Optional[UserRequest] = None) -> StreamResponse[MuteUsersResponse]: + response = self.client.mute_users(type=self.call_type, id=self.id, audio=audio, mute_all_users=mute_all_users, muted_by_id=muted_by_id, screenshare=screenshare, screenshare_audio=screenshare_audio, video=video, user_ids=user_ids, muted_by=muted_by) self._sync_from_response(response.data) return response @attach_call_cid - def query_call_participants( - self, - limit: Optional[int] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallParticipantsResponse]: - response = self.client.query_call_participants( - type=self.call_type, - id=self.id, - limit=limit, - filter_conditions=filter_conditions, - ) + def query_call_participants(self, limit: Optional[int] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallParticipantsResponse]: + response = self.client.query_call_participants(type=self.call_type, id=self.id, limit=limit, filter_conditions=filter_conditions) self._sync_from_response(response.data) return response @attach_call_cid def video_pin(self, session_id: str, user_id: str) -> StreamResponse[PinResponse]: - response = self.client.video_pin( - type=self.call_type, id=self.id, session_id=session_id, user_id=user_id - ) + response = self.client.video_pin(type=self.call_type, id=self.id, session_id=session_id, user_id=user_id) self._sync_from_response(response.data) return response @@ -268,58 +105,32 @@ def list_recordings(self) -> StreamResponse[ListRecordingsResponse]: return response @attach_call_cid - def start_recording( - self, recording_type: str, recording_external_storage: Optional[str] = None - ) -> StreamResponse[StartRecordingResponse]: - response = self.client.start_recording( - type=self.call_type, - id=self.id, - recording_type=recording_type, - recording_external_storage=recording_external_storage, - ) + def start_recording(self, recording_type: str, recording_external_storage: Optional[str] = None) -> StreamResponse[StartRecordingResponse]: + response = self.client.start_recording(type=self.call_type, id=self.id, recording_type=recording_type, recording_external_storage=recording_external_storage) self._sync_from_response(response.data) return response @attach_call_cid - def stop_recording( - self, - recording_type: str, - ) -> StreamResponse[StopRecordingResponse]: - response = self.client.stop_recording( - type=self.call_type, - id=self.id, - recording_type=recording_type, - ) + def stop_recording(self, recording_type: str, ) -> StreamResponse[StopRecordingResponse]: + response = self.client.stop_recording(type=self.call_type, id=self.id, recording_type=recording_type, ) self._sync_from_response(response.data) return response @attach_call_cid - def get_call_report( - self, session_id: Optional[str] = None - ) -> StreamResponse[GetCallReportResponse]: - response = self.client.get_call_report( - type=self.call_type, id=self.id, session_id=session_id - ) + def get_call_report(self, session_id: Optional[str] = None) -> StreamResponse[GetCallReportResponse]: + response = self.client.get_call_report(type=self.call_type, id=self.id, session_id=session_id) self._sync_from_response(response.data) return response @attach_call_cid - def ring( - self, video: Optional[bool] = None, members_ids: Optional[List[str]] = None - ) -> StreamResponse[RingCallResponse]: - response = self.client.ring_call( - type=self.call_type, id=self.id, video=video, members_ids=members_ids - ) + def ring(self, video: Optional[bool] = None, members_ids: Optional[List[str]] = None) -> StreamResponse[RingCallResponse]: + response = self.client.ring_call(type=self.call_type, id=self.id, video=video, members_ids=members_ids) self._sync_from_response(response.data) return response @attach_call_cid - def start_rtmp_broadcasts( - self, broadcasts: List[RTMPBroadcastRequest] - ) -> StreamResponse[StartRTMPBroadcastsResponse]: - response = self.client.start_rtmp_broadcasts( - type=self.call_type, id=self.id, broadcasts=broadcasts - ) + def start_rtmp_broadcasts(self, broadcasts: List[RTMPBroadcastRequest]) -> StreamResponse[StartRTMPBroadcastsResponse]: + response = self.client.start_rtmp_broadcasts(type=self.call_type, id=self.id, broadcasts=broadcasts) self._sync_from_response(response.data) return response @@ -330,57 +141,20 @@ def stop_all_rtmp_broadcasts(self) -> StreamResponse[StopAllRTMPBroadcastsRespon return response @attach_call_cid - def stop_rtmp_broadcast( - self, - name: str, - ) -> StreamResponse[StopRTMPBroadcastsResponse]: - response = self.client.stop_rtmp_broadcast( - type=self.call_type, - id=self.id, - name=name, - ) + def stop_rtmp_broadcast(self, name: str, ) -> StreamResponse[StopRTMPBroadcastsResponse]: + response = self.client.stop_rtmp_broadcast(type=self.call_type, id=self.id, name=name, ) self._sync_from_response(response.data) return response @attach_call_cid - def get_call_participant_session_metrics( - self, - session: str, - user: str, - user_session: str, - since: Optional[datetime] = None, - until: Optional[datetime] = None, - ) -> StreamResponse[GetCallParticipantSessionMetricsResponse]: - response = self.client.get_call_participant_session_metrics( - type=self.call_type, - id=self.id, - session=session, - user=user, - user_session=user_session, - since=since, - until=until, - ) + def get_call_participant_session_metrics(self, session: str, user: str, user_session: str, since: Optional[datetime] = None, until: Optional[datetime] = None) -> StreamResponse[GetCallParticipantSessionMetricsResponse]: + response = self.client.get_call_participant_session_metrics(type=self.call_type, id=self.id, session=session, user=user, user_session=user_session, since=since, until=until) self._sync_from_response(response.data) return response @attach_call_cid - def query_call_participant_sessions( - self, - session: str, - limit: Optional[int] = None, - prev: Optional[str] = None, - next: Optional[str] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallParticipantSessionsResponse]: - response = self.client.query_call_participant_sessions( - type=self.call_type, - id=self.id, - session=session, - limit=limit, - prev=prev, - next=next, - filter_conditions=filter_conditions, - ) + def query_call_participant_sessions(self, session: str, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallParticipantSessionsResponse]: + response = self.client.query_call_participant_sessions(type=self.call_type, id=self.id, session=session, limit=limit, prev=prev, next=next, filter_conditions=filter_conditions) self._sync_from_response(response.data) return response @@ -391,50 +165,20 @@ def start_hls_broadcasting(self) -> StreamResponse[StartHLSBroadcastingResponse] return response @attach_call_cid - def start_closed_captions( - self, - enable_transcription: Optional[bool] = None, - external_storage: Optional[str] = None, - language: Optional[str] = None, - speech_segment_config: Optional[SpeechSegmentConfig] = None, - ) -> StreamResponse[StartClosedCaptionsResponse]: - response = self.client.start_closed_captions( - type=self.call_type, - id=self.id, - enable_transcription=enable_transcription, - external_storage=external_storage, - language=language, - speech_segment_config=speech_segment_config, - ) + def start_closed_captions(self, enable_transcription: Optional[bool] = None, external_storage: Optional[str] = None, language: Optional[str] = None, speech_segment_config: Optional[SpeechSegmentConfig] = None) -> StreamResponse[StartClosedCaptionsResponse]: + response = self.client.start_closed_captions(type=self.call_type, id=self.id, enable_transcription=enable_transcription, external_storage=external_storage, language=language, speech_segment_config=speech_segment_config) self._sync_from_response(response.data) return response @attach_call_cid - def start_frame_recording( - self, recording_external_storage: Optional[str] = None - ) -> StreamResponse[StartFrameRecordingResponse]: - response = self.client.start_frame_recording( - type=self.call_type, - id=self.id, - recording_external_storage=recording_external_storage, - ) + def start_frame_recording(self, recording_external_storage: Optional[str] = None) -> StreamResponse[StartFrameRecordingResponse]: + response = self.client.start_frame_recording(type=self.call_type, id=self.id, recording_external_storage=recording_external_storage) self._sync_from_response(response.data) return response @attach_call_cid - def start_transcription( - self, - enable_closed_captions: Optional[bool] = None, - language: Optional[str] = None, - transcription_external_storage: Optional[str] = None, - ) -> StreamResponse[StartTranscriptionResponse]: - response = self.client.start_transcription( - type=self.call_type, - id=self.id, - enable_closed_captions=enable_closed_captions, - language=language, - transcription_external_storage=transcription_external_storage, - ) + def start_transcription(self, enable_closed_captions: Optional[bool] = None, language: Optional[str] = None, transcription_external_storage: Optional[str] = None) -> StreamResponse[StartTranscriptionResponse]: + response = self.client.start_transcription(type=self.call_type, id=self.id, enable_closed_captions=enable_closed_captions, language=language, transcription_external_storage=transcription_external_storage) self._sync_from_response(response.data) return response @@ -445,12 +189,8 @@ def stop_hls_broadcasting(self) -> StreamResponse[StopHLSBroadcastingResponse]: return response @attach_call_cid - def stop_closed_captions( - self, stop_transcription: Optional[bool] = None - ) -> StreamResponse[StopClosedCaptionsResponse]: - response = self.client.stop_closed_captions( - type=self.call_type, id=self.id, stop_transcription=stop_transcription - ) + def stop_closed_captions(self, stop_transcription: Optional[bool] = None) -> StreamResponse[StopClosedCaptionsResponse]: + response = self.client.stop_closed_captions(type=self.call_type, id=self.id, stop_transcription=stop_transcription) self._sync_from_response(response.data) return response @@ -461,39 +201,14 @@ def stop_frame_recording(self) -> StreamResponse[StopFrameRecordingResponse]: return response @attach_call_cid - def stop_live( - self, - continue_closed_caption: Optional[bool] = None, - continue_composite_recording: Optional[bool] = None, - continue_hls: Optional[bool] = None, - continue_individual_recording: Optional[bool] = None, - continue_raw_recording: Optional[bool] = None, - continue_recording: Optional[bool] = None, - continue_rtmp_broadcasts: Optional[bool] = None, - continue_transcription: Optional[bool] = None, - ) -> StreamResponse[StopLiveResponse]: - response = self.client.stop_live( - type=self.call_type, - id=self.id, - continue_closed_caption=continue_closed_caption, - continue_composite_recording=continue_composite_recording, - continue_hls=continue_hls, - continue_individual_recording=continue_individual_recording, - continue_raw_recording=continue_raw_recording, - continue_recording=continue_recording, - continue_rtmp_broadcasts=continue_rtmp_broadcasts, - continue_transcription=continue_transcription, - ) + def stop_live(self, continue_closed_caption: Optional[bool] = None, continue_composite_recording: Optional[bool] = None, continue_hls: Optional[bool] = None, continue_individual_recording: Optional[bool] = None, continue_raw_recording: Optional[bool] = None, continue_recording: Optional[bool] = None, continue_rtmp_broadcasts: Optional[bool] = None, continue_transcription: Optional[bool] = None) -> StreamResponse[StopLiveResponse]: + response = self.client.stop_live(type=self.call_type, id=self.id, continue_closed_caption=continue_closed_caption, continue_composite_recording=continue_composite_recording, continue_hls=continue_hls, continue_individual_recording=continue_individual_recording, continue_raw_recording=continue_raw_recording, continue_recording=continue_recording, continue_rtmp_broadcasts=continue_rtmp_broadcasts, continue_transcription=continue_transcription) self._sync_from_response(response.data) return response @attach_call_cid - def stop_transcription( - self, stop_closed_captions: Optional[bool] = None - ) -> StreamResponse[StopTranscriptionResponse]: - response = self.client.stop_transcription( - type=self.call_type, id=self.id, stop_closed_captions=stop_closed_captions - ) + def stop_transcription(self, stop_closed_captions: Optional[bool] = None) -> StreamResponse[StopTranscriptionResponse]: + response = self.client.stop_transcription(type=self.call_type, id=self.id, stop_closed_captions=stop_closed_captions) self._sync_from_response(response.data) return response @@ -505,57 +220,33 @@ def list_transcriptions(self) -> StreamResponse[ListTranscriptionsResponse]: @attach_call_cid def unblock_user(self, user_id: str) -> StreamResponse[UnblockUserResponse]: - response = self.client.unblock_user( - type=self.call_type, id=self.id, user_id=user_id - ) + response = self.client.unblock_user(type=self.call_type, id=self.id, user_id=user_id) self._sync_from_response(response.data) return response @attach_call_cid - def video_unpin( - self, session_id: str, user_id: str - ) -> StreamResponse[UnpinResponse]: - response = self.client.video_unpin( - type=self.call_type, id=self.id, session_id=session_id, user_id=user_id - ) + def video_unpin(self, session_id: str, user_id: str) -> StreamResponse[UnpinResponse]: + response = self.client.video_unpin(type=self.call_type, id=self.id, session_id=session_id, user_id=user_id) self._sync_from_response(response.data) return response @attach_call_cid - def update_user_permissions( - self, - user_id: str, - grant_permissions: Optional[List[str]] = None, - revoke_permissions: Optional[List[str]] = None, - ) -> StreamResponse[UpdateUserPermissionsResponse]: - response = self.client.update_user_permissions( - type=self.call_type, - id=self.id, - user_id=user_id, - grant_permissions=grant_permissions, - revoke_permissions=revoke_permissions, - ) + def update_user_permissions(self, user_id: str, grant_permissions: Optional[List[str]] = None, revoke_permissions: Optional[List[str]] = None) -> StreamResponse[UpdateUserPermissionsResponse]: + response = self.client.update_user_permissions(type=self.call_type, id=self.id, user_id=user_id, grant_permissions=grant_permissions, revoke_permissions=revoke_permissions) self._sync_from_response(response.data) return response @attach_call_cid - def delete_recording( - self, session: str, filename: str - ) -> StreamResponse[DeleteRecordingResponse]: - response = self.client.delete_recording( - type=self.call_type, id=self.id, session=session, filename=filename - ) + def delete_recording(self, session: str, filename: str) -> StreamResponse[DeleteRecordingResponse]: + response = self.client.delete_recording(type=self.call_type, id=self.id, session=session, filename=filename) self._sync_from_response(response.data) return response @attach_call_cid - def delete_transcription( - self, session: str, filename: str - ) -> StreamResponse[DeleteTranscriptionResponse]: - response = self.client.delete_transcription( - type=self.call_type, id=self.id, session=session, filename=filename - ) + def delete_transcription(self, session: str, filename: str) -> StreamResponse[DeleteTranscriptionResponse]: + response = self.client.delete_transcription(type=self.call_type, id=self.id, session=session, filename=filename) self._sync_from_response(response.data) return response - create = get_or_create + + create = get_or_create \ No newline at end of file diff --git a/getstream/video/client.py b/getstream/video/client.py index 46a5774a..e2bf03a0 100644 --- a/getstream/video/client.py +++ b/getstream/video/client.py @@ -1,5 +1,5 @@ -from getstream.video.rest_client import VideoRestClient from getstream.video.call import Call +from getstream.video.rest_client import VideoRestClient class VideoClient(VideoRestClient): diff --git a/getstream/video/rest_client.py b/getstream/video/rest_client.py index 51a6322e..7ff01cad 100644 --- a/getstream/video/rest_client.py +++ b/getstream/video/rest_client.py @@ -1,3 +1,4 @@ + # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import BaseClient from getstream.common import telemetry @@ -7,14 +8,8 @@ class VideoRestClient(BaseClient): - def __init__( - self, - api_key: str, - base_url: str, - timeout: float, - token: str, - user_agent: str | None = None, - ): + + def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): """ Initializes VideoClient with BaseClient instance :param api_key: A string representing the client's API key @@ -31,1370 +26,486 @@ def __init__( user_agent=user_agent, ) + @telemetry.operation_name("getstream.api.video.get_active_calls_status") def get_active_calls_status(self) -> StreamResponse[GetActiveCallsStatusResponse]: - return self.get( - "/api/v2/video/active_calls_status", GetActiveCallsStatusResponse - ) - + return self.get("/api/v2/video/active_calls_status", GetActiveCallsStatusResponse) + @telemetry.operation_name("getstream.api.video.query_user_feedback") - def query_user_feedback( - self, - full: Optional[bool] = None, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryUserFeedbackResponse]: + def query_user_feedback(self, full: Optional[bool] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryUserFeedbackResponse]: query_params = build_query_param(full=full) - json = QueryUserFeedbackRequest( - limit=limit, - next=next, - prev=prev, - sort=sort, - filter_conditions=filter_conditions, - ).to_dict() - return self.post( - "/api/v2/video/call/feedback", - QueryUserFeedbackResponse, - query_params=query_params, - json=json, - ) - + json = QueryUserFeedbackRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() + return self.post("/api/v2/video/call/feedback", QueryUserFeedbackResponse, query_params=query_params, json=json) + @telemetry.operation_name("getstream.api.video.query_call_members") - def query_call_members( - self, - id: str, - type: str, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallMembersResponse]: - json = QueryCallMembersRequest( - id=id, - type=type, - limit=limit, - next=next, - prev=prev, - sort=sort, - filter_conditions=filter_conditions, - ).to_dict() - return self.post( - "/api/v2/video/call/members", QueryCallMembersResponse, json=json - ) - + def query_call_members(self, id: str, type: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallMembersResponse]: + json = QueryCallMembersRequest(id=id, type=type, limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() + return self.post("/api/v2/video/call/members", QueryCallMembersResponse, json=json) + @telemetry.operation_name("getstream.api.video.query_call_stats") - def query_call_stats( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallStatsResponse]: - json = QueryCallStatsRequest( - limit=limit, - next=next, - prev=prev, - sort=sort, - filter_conditions=filter_conditions, - ).to_dict() + def query_call_stats(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallStatsResponse]: + json = QueryCallStatsRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() return self.post("/api/v2/video/call/stats", QueryCallStatsResponse, json=json) - + @telemetry.operation_name("getstream.api.video.get_call") - def get_call( - self, - type: str, - id: str, - members_limit: Optional[int] = None, - ring: Optional[bool] = None, - notify: Optional[bool] = None, - video: Optional[bool] = None, - ) -> StreamResponse[GetCallResponse]: - query_params = build_query_param( - members_limit=members_limit, ring=ring, notify=notify, video=video - ) + def get_call(self, type: str, id: str, members_limit: Optional[int] = None, ring: Optional[bool] = None, notify: Optional[bool] = None, video: Optional[bool] = None) -> StreamResponse[GetCallResponse]: + query_params = build_query_param(members_limit=members_limit, ring=ring, notify=notify, video=video) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return self.get( - "/api/v2/video/call/{type}/{id}", - GetCallResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/video/call/{type}/{id}", GetCallResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.video.update_call") - def update_call( - self, - type: str, - id: str, - starts_at: Optional[datetime] = None, - custom: Optional[Dict[str, object]] = None, - settings_override: Optional[CallSettingsRequest] = None, - ) -> StreamResponse[UpdateCallResponse]: + def update_call(self, type: str, id: str, starts_at: Optional[datetime] = None, custom: Optional[Dict[str, object]] = None, settings_override: Optional[CallSettingsRequest] = None) -> StreamResponse[UpdateCallResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = UpdateCallRequest( - starts_at=starts_at, custom=custom, settings_override=settings_override - ).to_dict() - return self.patch( - "/api/v2/video/call/{type}/{id}", - UpdateCallResponse, - path_params=path_params, - json=json, - ) - + json = UpdateCallRequest(starts_at=starts_at, custom=custom, settings_override=settings_override).to_dict() + return self.patch("/api/v2/video/call/{type}/{id}", UpdateCallResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.get_or_create_call") - def get_or_create_call( - self, - type: str, - id: str, - members_limit: Optional[int] = None, - notify: Optional[bool] = None, - ring: Optional[bool] = None, - video: Optional[bool] = None, - data: Optional[CallRequest] = None, - ) -> StreamResponse[GetOrCreateCallResponse]: + def get_or_create_call(self, type: str, id: str, members_limit: Optional[int] = None, notify: Optional[bool] = None, ring: Optional[bool] = None, video: Optional[bool] = None, data: Optional[CallRequest] = None) -> StreamResponse[GetOrCreateCallResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = GetOrCreateCallRequest( - members_limit=members_limit, - notify=notify, - ring=ring, - video=video, - data=data, - ).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}", - GetOrCreateCallResponse, - path_params=path_params, - json=json, - ) - + json = GetOrCreateCallRequest(members_limit=members_limit, notify=notify, ring=ring, video=video, data=data).to_dict() + return self.post("/api/v2/video/call/{type}/{id}", GetOrCreateCallResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.block_user") - def block_user( - self, type: str, id: str, user_id: str - ) -> StreamResponse[BlockUserResponse]: + def block_user(self, type: str, id: str, user_id: str) -> StreamResponse[BlockUserResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = BlockUserRequest(user_id=user_id).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/block", - BlockUserResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/video/call/{type}/{id}/block", BlockUserResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.send_closed_caption") - def send_closed_caption( - self, - type: str, - id: str, - speaker_id: str, - text: str, - end_time: Optional[datetime] = None, - language: Optional[str] = None, - service: Optional[str] = None, - start_time: Optional[datetime] = None, - translated: Optional[bool] = None, - user_id: Optional[str] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[SendClosedCaptionResponse]: + def send_closed_caption(self, type: str, id: str, speaker_id: str, text: str, end_time: Optional[datetime] = None, language: Optional[str] = None, service: Optional[str] = None, start_time: Optional[datetime] = None, translated: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[SendClosedCaptionResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = SendClosedCaptionRequest( - speaker_id=speaker_id, - text=text, - end_time=end_time, - language=language, - service=service, - start_time=start_time, - translated=translated, - user_id=user_id, - user=user, - ).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/closed_captions", - SendClosedCaptionResponse, - path_params=path_params, - json=json, - ) - + json = SendClosedCaptionRequest(speaker_id=speaker_id, text=text, end_time=end_time, language=language, service=service, start_time=start_time, translated=translated, user_id=user_id, user=user).to_dict() + return self.post("/api/v2/video/call/{type}/{id}/closed_captions", SendClosedCaptionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.delete_call") - def delete_call( - self, type: str, id: str, hard: Optional[bool] = None - ) -> StreamResponse[DeleteCallResponse]: + def delete_call(self, type: str, id: str, hard: Optional[bool] = None) -> StreamResponse[DeleteCallResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = DeleteCallRequest(hard=hard).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/delete", - DeleteCallResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/video/call/{type}/{id}/delete", DeleteCallResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.send_call_event") - def send_call_event( - self, - type: str, - id: str, - user_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - user: Optional[UserRequest] = None, - ) -> StreamResponse[SendCallEventResponse]: + def send_call_event(self, type: str, id: str, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[SendCallEventResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = SendCallEventRequest(user_id=user_id, custom=custom, user=user).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/event", - SendCallEventResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/video/call/{type}/{id}/event", SendCallEventResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.collect_user_feedback") - def collect_user_feedback( - self, - type: str, - id: str, - rating: int, - sdk: str, - sdk_version: str, - reason: Optional[str] = None, - user_session_id: Optional[str] = None, - custom: Optional[Dict[str, object]] = None, - ) -> StreamResponse[CollectUserFeedbackResponse]: + def collect_user_feedback(self, type: str, id: str, rating: int, sdk: str, sdk_version: str, reason: Optional[str] = None, user_session_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[CollectUserFeedbackResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = CollectUserFeedbackRequest( - rating=rating, - sdk=sdk, - sdk_version=sdk_version, - reason=reason, - user_session_id=user_session_id, - custom=custom, - ).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/feedback", - CollectUserFeedbackResponse, - path_params=path_params, - json=json, - ) - + json = CollectUserFeedbackRequest(rating=rating, sdk=sdk, sdk_version=sdk_version, reason=reason, user_session_id=user_session_id, custom=custom).to_dict() + return self.post("/api/v2/video/call/{type}/{id}/feedback", CollectUserFeedbackResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.go_live") - def go_live( - self, - type: str, - id: str, - recording_storage_name: Optional[str] = None, - start_closed_caption: Optional[bool] = None, - start_composite_recording: Optional[bool] = None, - start_hls: Optional[bool] = None, - start_individual_recording: Optional[bool] = None, - start_raw_recording: Optional[bool] = None, - start_recording: Optional[bool] = None, - start_transcription: Optional[bool] = None, - transcription_storage_name: Optional[str] = None, - ) -> StreamResponse[GoLiveResponse]: + def go_live(self, type: str, id: str, recording_storage_name: Optional[str] = None, start_closed_caption: Optional[bool] = None, start_composite_recording: Optional[bool] = None, start_hls: Optional[bool] = None, start_individual_recording: Optional[bool] = None, start_raw_recording: Optional[bool] = None, start_recording: Optional[bool] = None, start_transcription: Optional[bool] = None, transcription_storage_name: Optional[str] = None) -> StreamResponse[GoLiveResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = GoLiveRequest( - recording_storage_name=recording_storage_name, - start_closed_caption=start_closed_caption, - start_composite_recording=start_composite_recording, - start_hls=start_hls, - start_individual_recording=start_individual_recording, - start_raw_recording=start_raw_recording, - start_recording=start_recording, - start_transcription=start_transcription, - transcription_storage_name=transcription_storage_name, - ).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/go_live", - GoLiveResponse, - path_params=path_params, - json=json, - ) - + json = GoLiveRequest(recording_storage_name=recording_storage_name, start_closed_caption=start_closed_caption, start_composite_recording=start_composite_recording, start_hls=start_hls, start_individual_recording=start_individual_recording, start_raw_recording=start_raw_recording, start_recording=start_recording, start_transcription=start_transcription, transcription_storage_name=transcription_storage_name).to_dict() + return self.post("/api/v2/video/call/{type}/{id}/go_live", GoLiveResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.kick_user") - def kick_user( - self, - type: str, - id: str, - user_id: str, - block: Optional[bool] = None, - kicked_by_id: Optional[str] = None, - kicked_by: Optional[UserRequest] = None, - ) -> StreamResponse[KickUserResponse]: + def kick_user(self, type: str, id: str, user_id: str, block: Optional[bool] = None, kicked_by_id: Optional[str] = None, kicked_by: Optional[UserRequest] = None) -> StreamResponse[KickUserResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = KickUserRequest( - user_id=user_id, block=block, kicked_by_id=kicked_by_id, kicked_by=kicked_by - ).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/kick", - KickUserResponse, - path_params=path_params, - json=json, - ) - + json = KickUserRequest(user_id=user_id, block=block, kicked_by_id=kicked_by_id, kicked_by=kicked_by).to_dict() + return self.post("/api/v2/video/call/{type}/{id}/kick", KickUserResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.end_call") def end_call(self, type: str, id: str) -> StreamResponse[EndCallResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return self.post( - "/api/v2/video/call/{type}/{id}/mark_ended", - EndCallResponse, - path_params=path_params, - ) - + return self.post("/api/v2/video/call/{type}/{id}/mark_ended", EndCallResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.update_call_members") - def update_call_members( - self, - type: str, - id: str, - remove_members: Optional[List[str]] = None, - update_members: Optional[List[MemberRequest]] = None, - ) -> StreamResponse[UpdateCallMembersResponse]: + def update_call_members(self, type: str, id: str, remove_members: Optional[List[str]] = None, update_members: Optional[List[MemberRequest]] = None) -> StreamResponse[UpdateCallMembersResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = UpdateCallMembersRequest( - remove_members=remove_members, update_members=update_members - ).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/members", - UpdateCallMembersResponse, - path_params=path_params, - json=json, - ) - + json = UpdateCallMembersRequest(remove_members=remove_members, update_members=update_members).to_dict() + return self.post("/api/v2/video/call/{type}/{id}/members", UpdateCallMembersResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.mute_users") - def mute_users( - self, - type: str, - id: str, - audio: Optional[bool] = None, - mute_all_users: Optional[bool] = None, - muted_by_id: Optional[str] = None, - screenshare: Optional[bool] = None, - screenshare_audio: Optional[bool] = None, - video: Optional[bool] = None, - user_ids: Optional[List[str]] = None, - muted_by: Optional[UserRequest] = None, - ) -> StreamResponse[MuteUsersResponse]: + def mute_users(self, type: str, id: str, audio: Optional[bool] = None, mute_all_users: Optional[bool] = None, muted_by_id: Optional[str] = None, screenshare: Optional[bool] = None, screenshare_audio: Optional[bool] = None, video: Optional[bool] = None, user_ids: Optional[List[str]] = None, muted_by: Optional[UserRequest] = None) -> StreamResponse[MuteUsersResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = MuteUsersRequest( - audio=audio, - mute_all_users=mute_all_users, - muted_by_id=muted_by_id, - screenshare=screenshare, - screenshare_audio=screenshare_audio, - video=video, - user_ids=user_ids, - muted_by=muted_by, - ).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/mute_users", - MuteUsersResponse, - path_params=path_params, - json=json, - ) - + json = MuteUsersRequest(audio=audio, mute_all_users=mute_all_users, muted_by_id=muted_by_id, screenshare=screenshare, screenshare_audio=screenshare_audio, video=video, user_ids=user_ids, muted_by=muted_by).to_dict() + return self.post("/api/v2/video/call/{type}/{id}/mute_users", MuteUsersResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.query_call_participants") - def query_call_participants( - self, - id: str, - type: str, - limit: Optional[int] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallParticipantsResponse]: + def query_call_participants(self, id: str, type: str, limit: Optional[int] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallParticipantsResponse]: query_params = build_query_param(limit=limit) path_params = { - "id": id, - "type": type, + "id": id, "type": type, } - json = QueryCallParticipantsRequest( - filter_conditions=filter_conditions - ).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/participants", - QueryCallParticipantsResponse, - query_params=query_params, - path_params=path_params, - json=json, - ) - + json = QueryCallParticipantsRequest(filter_conditions=filter_conditions).to_dict() + return self.post("/api/v2/video/call/{type}/{id}/participants", QueryCallParticipantsResponse, query_params=query_params, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.video_pin") - def video_pin( - self, type: str, id: str, session_id: str, user_id: str - ) -> StreamResponse[PinResponse]: + def video_pin(self, type: str, id: str, session_id: str, user_id: str) -> StreamResponse[PinResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = PinRequest(session_id=session_id, user_id=user_id).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/pin", - PinResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/video/call/{type}/{id}/pin", PinResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.list_recordings") - def list_recordings( - self, type: str, id: str - ) -> StreamResponse[ListRecordingsResponse]: + def list_recordings(self, type: str, id: str) -> StreamResponse[ListRecordingsResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return self.get( - "/api/v2/video/call/{type}/{id}/recordings", - ListRecordingsResponse, - path_params=path_params, - ) - + return self.get("/api/v2/video/call/{type}/{id}/recordings", ListRecordingsResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.start_recording") - def start_recording( - self, - type: str, - id: str, - recording_type: str, - recording_external_storage: Optional[str] = None, - ) -> StreamResponse[StartRecordingResponse]: + def start_recording(self, type: str, id: str, recording_type: str, recording_external_storage: Optional[str] = None) -> StreamResponse[StartRecordingResponse]: path_params = { - "type": type, - "id": id, - "recording_type": recording_type, + "type": type, "id": id, "recording_type": recording_type, } - json = StartRecordingRequest( - recording_external_storage=recording_external_storage - ).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/recordings/{recording_type}/start", - StartRecordingResponse, - path_params=path_params, - json=json, - ) - + json = StartRecordingRequest(recording_external_storage=recording_external_storage).to_dict() + return self.post("/api/v2/video/call/{type}/{id}/recordings/{recording_type}/start", StartRecordingResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.stop_recording") - def stop_recording( - self, - type: str, - id: str, - recording_type: str, - ) -> StreamResponse[StopRecordingResponse]: + def stop_recording(self, type: str, id: str, recording_type: str, ) -> StreamResponse[StopRecordingResponse]: path_params = { - "type": type, - "id": id, - "recording_type": recording_type, + "type": type, "id": id, "recording_type": recording_type, } json = StopRecordingRequest().to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/recordings/{recording_type}/stop", - StopRecordingResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/video/call/{type}/{id}/recordings/{recording_type}/stop", StopRecordingResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.get_call_report") - def get_call_report( - self, type: str, id: str, session_id: Optional[str] = None - ) -> StreamResponse[GetCallReportResponse]: + def get_call_report(self, type: str, id: str, session_id: Optional[str] = None) -> StreamResponse[GetCallReportResponse]: query_params = build_query_param(session_id=session_id) path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return self.get( - "/api/v2/video/call/{type}/{id}/report", - GetCallReportResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/video/call/{type}/{id}/report", GetCallReportResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.video.ring_call") - def ring_call( - self, - type: str, - id: str, - video: Optional[bool] = None, - members_ids: Optional[List[str]] = None, - ) -> StreamResponse[RingCallResponse]: + def ring_call(self, type: str, id: str, video: Optional[bool] = None, members_ids: Optional[List[str]] = None) -> StreamResponse[RingCallResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = RingCallRequest(video=video, members_ids=members_ids).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/ring", - RingCallResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/video/call/{type}/{id}/ring", RingCallResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.start_rtmp_broadcasts") - def start_rtmp_broadcasts( - self, type: str, id: str, broadcasts: List[RTMPBroadcastRequest] - ) -> StreamResponse[StartRTMPBroadcastsResponse]: + def start_rtmp_broadcasts(self, type: str, id: str, broadcasts: List[RTMPBroadcastRequest]) -> StreamResponse[StartRTMPBroadcastsResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = StartRTMPBroadcastsRequest(broadcasts=broadcasts).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/rtmp_broadcasts", - StartRTMPBroadcastsResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/video/call/{type}/{id}/rtmp_broadcasts", StartRTMPBroadcastsResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.stop_all_rtmp_broadcasts") - def stop_all_rtmp_broadcasts( - self, type: str, id: str - ) -> StreamResponse[StopAllRTMPBroadcastsResponse]: + def stop_all_rtmp_broadcasts(self, type: str, id: str) -> StreamResponse[StopAllRTMPBroadcastsResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return self.post( - "/api/v2/video/call/{type}/{id}/rtmp_broadcasts/stop", - StopAllRTMPBroadcastsResponse, - path_params=path_params, - ) - + return self.post("/api/v2/video/call/{type}/{id}/rtmp_broadcasts/stop", StopAllRTMPBroadcastsResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.stop_rtmp_broadcast") - def stop_rtmp_broadcast( - self, - type: str, - id: str, - name: str, - ) -> StreamResponse[StopRTMPBroadcastsResponse]: + def stop_rtmp_broadcast(self, type: str, id: str, name: str, ) -> StreamResponse[StopRTMPBroadcastsResponse]: path_params = { - "type": type, - "id": id, - "name": name, + "type": type, "id": id, "name": name, } json = StopRTMPBroadcastsRequest().to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/rtmp_broadcasts/{name}/stop", - StopRTMPBroadcastsResponse, - path_params=path_params, - json=json, - ) - - @telemetry.operation_name( - "getstream.api.video.get_call_participant_session_metrics" - ) - def get_call_participant_session_metrics( - self, - type: str, - id: str, - session: str, - user: str, - user_session: str, - since: Optional[datetime] = None, - until: Optional[datetime] = None, - ) -> StreamResponse[GetCallParticipantSessionMetricsResponse]: + return self.post("/api/v2/video/call/{type}/{id}/rtmp_broadcasts/{name}/stop", StopRTMPBroadcastsResponse, path_params=path_params, json=json) + + @telemetry.operation_name("getstream.api.video.get_call_participant_session_metrics") + def get_call_participant_session_metrics(self, type: str, id: str, session: str, user: str, user_session: str, since: Optional[datetime] = None, until: Optional[datetime] = None) -> StreamResponse[GetCallParticipantSessionMetricsResponse]: query_params = build_query_param(since=since, until=until) path_params = { - "type": type, - "id": id, - "session": session, - "user": user, - "user_session": user_session, + "type": type, "id": id, "session": session, "user": user, "user_session": user_session, } - return self.get( - "/api/v2/video/call/{type}/{id}/session/{session}/participant/{user}/{user_session}/details/track", - GetCallParticipantSessionMetricsResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/video/call/{type}/{id}/session/{session}/participant/{user}/{user_session}/details/track", GetCallParticipantSessionMetricsResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.video.query_call_participant_sessions") - def query_call_participant_sessions( - self, - type: str, - id: str, - session: str, - limit: Optional[int] = None, - prev: Optional[str] = None, - next: Optional[str] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallParticipantSessionsResponse]: - query_params = build_query_param( - limit=limit, prev=prev, next=next, filter_conditions=filter_conditions - ) + def query_call_participant_sessions(self, type: str, id: str, session: str, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallParticipantSessionsResponse]: + query_params = build_query_param(limit=limit, prev=prev, next=next, filter_conditions=filter_conditions) path_params = { - "type": type, - "id": id, - "session": session, + "type": type, "id": id, "session": session, } - return self.get( - "/api/v2/video/call/{type}/{id}/session/{session}/participant_sessions", - QueryCallParticipantSessionsResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/video/call/{type}/{id}/session/{session}/participant_sessions", QueryCallParticipantSessionsResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.video.start_hls_broadcasting") - def start_hls_broadcasting( - self, type: str, id: str - ) -> StreamResponse[StartHLSBroadcastingResponse]: + def start_hls_broadcasting(self, type: str, id: str) -> StreamResponse[StartHLSBroadcastingResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return self.post( - "/api/v2/video/call/{type}/{id}/start_broadcasting", - StartHLSBroadcastingResponse, - path_params=path_params, - ) - + return self.post("/api/v2/video/call/{type}/{id}/start_broadcasting", StartHLSBroadcastingResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.start_closed_captions") - def start_closed_captions( - self, - type: str, - id: str, - enable_transcription: Optional[bool] = None, - external_storage: Optional[str] = None, - language: Optional[str] = None, - speech_segment_config: Optional[SpeechSegmentConfig] = None, - ) -> StreamResponse[StartClosedCaptionsResponse]: + def start_closed_captions(self, type: str, id: str, enable_transcription: Optional[bool] = None, external_storage: Optional[str] = None, language: Optional[str] = None, speech_segment_config: Optional[SpeechSegmentConfig] = None) -> StreamResponse[StartClosedCaptionsResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = StartClosedCaptionsRequest( - enable_transcription=enable_transcription, - external_storage=external_storage, - language=language, - speech_segment_config=speech_segment_config, - ).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/start_closed_captions", - StartClosedCaptionsResponse, - path_params=path_params, - json=json, - ) - + json = StartClosedCaptionsRequest(enable_transcription=enable_transcription, external_storage=external_storage, language=language, speech_segment_config=speech_segment_config).to_dict() + return self.post("/api/v2/video/call/{type}/{id}/start_closed_captions", StartClosedCaptionsResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.start_frame_recording") - def start_frame_recording( - self, type: str, id: str, recording_external_storage: Optional[str] = None - ) -> StreamResponse[StartFrameRecordingResponse]: + def start_frame_recording(self, type: str, id: str, recording_external_storage: Optional[str] = None) -> StreamResponse[StartFrameRecordingResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = StartFrameRecordingRequest( - recording_external_storage=recording_external_storage - ).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/start_frame_recording", - StartFrameRecordingResponse, - path_params=path_params, - json=json, - ) - + json = StartFrameRecordingRequest(recording_external_storage=recording_external_storage).to_dict() + return self.post("/api/v2/video/call/{type}/{id}/start_frame_recording", StartFrameRecordingResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.start_transcription") - def start_transcription( - self, - type: str, - id: str, - enable_closed_captions: Optional[bool] = None, - language: Optional[str] = None, - transcription_external_storage: Optional[str] = None, - ) -> StreamResponse[StartTranscriptionResponse]: + def start_transcription(self, type: str, id: str, enable_closed_captions: Optional[bool] = None, language: Optional[str] = None, transcription_external_storage: Optional[str] = None) -> StreamResponse[StartTranscriptionResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = StartTranscriptionRequest( - enable_closed_captions=enable_closed_captions, - language=language, - transcription_external_storage=transcription_external_storage, - ).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/start_transcription", - StartTranscriptionResponse, - path_params=path_params, - json=json, - ) - + json = StartTranscriptionRequest(enable_closed_captions=enable_closed_captions, language=language, transcription_external_storage=transcription_external_storage).to_dict() + return self.post("/api/v2/video/call/{type}/{id}/start_transcription", StartTranscriptionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.stop_hls_broadcasting") - def stop_hls_broadcasting( - self, type: str, id: str - ) -> StreamResponse[StopHLSBroadcastingResponse]: + def stop_hls_broadcasting(self, type: str, id: str) -> StreamResponse[StopHLSBroadcastingResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return self.post( - "/api/v2/video/call/{type}/{id}/stop_broadcasting", - StopHLSBroadcastingResponse, - path_params=path_params, - ) - + return self.post("/api/v2/video/call/{type}/{id}/stop_broadcasting", StopHLSBroadcastingResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.stop_closed_captions") - def stop_closed_captions( - self, type: str, id: str, stop_transcription: Optional[bool] = None - ) -> StreamResponse[StopClosedCaptionsResponse]: + def stop_closed_captions(self, type: str, id: str, stop_transcription: Optional[bool] = None) -> StreamResponse[StopClosedCaptionsResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = StopClosedCaptionsRequest( - stop_transcription=stop_transcription - ).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/stop_closed_captions", - StopClosedCaptionsResponse, - path_params=path_params, - json=json, - ) - + json = StopClosedCaptionsRequest(stop_transcription=stop_transcription).to_dict() + return self.post("/api/v2/video/call/{type}/{id}/stop_closed_captions", StopClosedCaptionsResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.stop_frame_recording") - def stop_frame_recording( - self, type: str, id: str - ) -> StreamResponse[StopFrameRecordingResponse]: + def stop_frame_recording(self, type: str, id: str) -> StreamResponse[StopFrameRecordingResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return self.post( - "/api/v2/video/call/{type}/{id}/stop_frame_recording", - StopFrameRecordingResponse, - path_params=path_params, - ) - + return self.post("/api/v2/video/call/{type}/{id}/stop_frame_recording", StopFrameRecordingResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.stop_live") - def stop_live( - self, - type: str, - id: str, - continue_closed_caption: Optional[bool] = None, - continue_composite_recording: Optional[bool] = None, - continue_hls: Optional[bool] = None, - continue_individual_recording: Optional[bool] = None, - continue_raw_recording: Optional[bool] = None, - continue_recording: Optional[bool] = None, - continue_rtmp_broadcasts: Optional[bool] = None, - continue_transcription: Optional[bool] = None, - ) -> StreamResponse[StopLiveResponse]: + def stop_live(self, type: str, id: str, continue_closed_caption: Optional[bool] = None, continue_composite_recording: Optional[bool] = None, continue_hls: Optional[bool] = None, continue_individual_recording: Optional[bool] = None, continue_raw_recording: Optional[bool] = None, continue_recording: Optional[bool] = None, continue_rtmp_broadcasts: Optional[bool] = None, continue_transcription: Optional[bool] = None) -> StreamResponse[StopLiveResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = StopLiveRequest( - continue_closed_caption=continue_closed_caption, - continue_composite_recording=continue_composite_recording, - continue_hls=continue_hls, - continue_individual_recording=continue_individual_recording, - continue_raw_recording=continue_raw_recording, - continue_recording=continue_recording, - continue_rtmp_broadcasts=continue_rtmp_broadcasts, - continue_transcription=continue_transcription, - ).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/stop_live", - StopLiveResponse, - path_params=path_params, - json=json, - ) - + json = StopLiveRequest(continue_closed_caption=continue_closed_caption, continue_composite_recording=continue_composite_recording, continue_hls=continue_hls, continue_individual_recording=continue_individual_recording, continue_raw_recording=continue_raw_recording, continue_recording=continue_recording, continue_rtmp_broadcasts=continue_rtmp_broadcasts, continue_transcription=continue_transcription).to_dict() + return self.post("/api/v2/video/call/{type}/{id}/stop_live", StopLiveResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.stop_transcription") - def stop_transcription( - self, type: str, id: str, stop_closed_captions: Optional[bool] = None - ) -> StreamResponse[StopTranscriptionResponse]: + def stop_transcription(self, type: str, id: str, stop_closed_captions: Optional[bool] = None) -> StreamResponse[StopTranscriptionResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = StopTranscriptionRequest( - stop_closed_captions=stop_closed_captions - ).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/stop_transcription", - StopTranscriptionResponse, - path_params=path_params, - json=json, - ) - + json = StopTranscriptionRequest(stop_closed_captions=stop_closed_captions).to_dict() + return self.post("/api/v2/video/call/{type}/{id}/stop_transcription", StopTranscriptionResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.list_transcriptions") - def list_transcriptions( - self, type: str, id: str - ) -> StreamResponse[ListTranscriptionsResponse]: + def list_transcriptions(self, type: str, id: str) -> StreamResponse[ListTranscriptionsResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - return self.get( - "/api/v2/video/call/{type}/{id}/transcriptions", - ListTranscriptionsResponse, - path_params=path_params, - ) - + return self.get("/api/v2/video/call/{type}/{id}/transcriptions", ListTranscriptionsResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.unblock_user") - def unblock_user( - self, type: str, id: str, user_id: str - ) -> StreamResponse[UnblockUserResponse]: + def unblock_user(self, type: str, id: str, user_id: str) -> StreamResponse[UnblockUserResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = UnblockUserRequest(user_id=user_id).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/unblock", - UnblockUserResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/video/call/{type}/{id}/unblock", UnblockUserResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.video_unpin") - def video_unpin( - self, type: str, id: str, session_id: str, user_id: str - ) -> StreamResponse[UnpinResponse]: + def video_unpin(self, type: str, id: str, session_id: str, user_id: str) -> StreamResponse[UnpinResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } json = UnpinRequest(session_id=session_id, user_id=user_id).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/unpin", - UnpinResponse, - path_params=path_params, - json=json, - ) - + return self.post("/api/v2/video/call/{type}/{id}/unpin", UnpinResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.update_user_permissions") - def update_user_permissions( - self, - type: str, - id: str, - user_id: str, - grant_permissions: Optional[List[str]] = None, - revoke_permissions: Optional[List[str]] = None, - ) -> StreamResponse[UpdateUserPermissionsResponse]: + def update_user_permissions(self, type: str, id: str, user_id: str, grant_permissions: Optional[List[str]] = None, revoke_permissions: Optional[List[str]] = None) -> StreamResponse[UpdateUserPermissionsResponse]: path_params = { - "type": type, - "id": id, + "type": type, "id": id, } - json = UpdateUserPermissionsRequest( - user_id=user_id, - grant_permissions=grant_permissions, - revoke_permissions=revoke_permissions, - ).to_dict() - return self.post( - "/api/v2/video/call/{type}/{id}/user_permissions", - UpdateUserPermissionsResponse, - path_params=path_params, - json=json, - ) - + json = UpdateUserPermissionsRequest(user_id=user_id, grant_permissions=grant_permissions, revoke_permissions=revoke_permissions).to_dict() + return self.post("/api/v2/video/call/{type}/{id}/user_permissions", UpdateUserPermissionsResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.delete_recording") - def delete_recording( - self, type: str, id: str, session: str, filename: str - ) -> StreamResponse[DeleteRecordingResponse]: + def delete_recording(self, type: str, id: str, session: str, filename: str) -> StreamResponse[DeleteRecordingResponse]: path_params = { - "type": type, - "id": id, - "session": session, - "filename": filename, + "type": type, "id": id, "session": session, "filename": filename, } - return self.delete( - "/api/v2/video/call/{type}/{id}/{session}/recordings/{filename}", - DeleteRecordingResponse, - path_params=path_params, - ) - + return self.delete("/api/v2/video/call/{type}/{id}/{session}/recordings/{filename}", DeleteRecordingResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.delete_transcription") - def delete_transcription( - self, type: str, id: str, session: str, filename: str - ) -> StreamResponse[DeleteTranscriptionResponse]: + def delete_transcription(self, type: str, id: str, session: str, filename: str) -> StreamResponse[DeleteTranscriptionResponse]: path_params = { - "type": type, - "id": id, - "session": session, - "filename": filename, + "type": type, "id": id, "session": session, "filename": filename, } - return self.delete( - "/api/v2/video/call/{type}/{id}/{session}/transcriptions/{filename}", - DeleteTranscriptionResponse, - path_params=path_params, - ) - + return self.delete("/api/v2/video/call/{type}/{id}/{session}/transcriptions/{filename}", DeleteTranscriptionResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.report_client_call_event") - def report_client_call_event( - self, events: List[ClientEvent] - ) -> StreamResponse[ReportClientEventResponse]: + def report_client_call_event(self, events: List[ClientEvent]) -> StreamResponse[ReportClientEventResponse]: json = ReportClientEventRequest(events=events).to_dict() - return self.post( - "/api/v2/video/call_client_event", ReportClientEventResponse, json=json - ) - + return self.post("/api/v2/video/call_client_event", ReportClientEventResponse, json=json) + @telemetry.operation_name("getstream.api.video.query_call_session_stats") - def query_call_session_stats( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallSessionStatsResponse]: - json = QueryCallSessionStatsRequest( - limit=limit, - next=next, - prev=prev, - sort=sort, - filter_conditions=filter_conditions, - ).to_dict() - return self.post( - "/api/v2/video/call_stats", QueryCallSessionStatsResponse, json=json - ) - + def query_call_session_stats(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallSessionStatsResponse]: + json = QueryCallSessionStatsRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() + return self.post("/api/v2/video/call_stats", QueryCallSessionStatsResponse, json=json) + @telemetry.operation_name("getstream.api.video.get_call_stats_map") - def get_call_stats_map( - self, - call_type: str, - call_id: str, - session: str, - start_time: Optional[datetime] = None, - end_time: Optional[datetime] = None, - exclude_publishers: Optional[bool] = None, - exclude_subscribers: Optional[bool] = None, - exclude_sfus: Optional[bool] = None, - ) -> StreamResponse[QueryCallStatsMapResponse]: - query_params = build_query_param( - start_time=start_time, - end_time=end_time, - exclude_publishers=exclude_publishers, - exclude_subscribers=exclude_subscribers, - exclude_sfus=exclude_sfus, - ) + def get_call_stats_map(self, call_type: str, call_id: str, session: str, start_time: Optional[datetime] = None, end_time: Optional[datetime] = None, exclude_publishers: Optional[bool] = None, exclude_subscribers: Optional[bool] = None, exclude_sfus: Optional[bool] = None) -> StreamResponse[QueryCallStatsMapResponse]: + query_params = build_query_param(start_time=start_time, end_time=end_time, exclude_publishers=exclude_publishers, exclude_subscribers=exclude_subscribers, exclude_sfus=exclude_sfus) path_params = { - "call_type": call_type, - "call_id": call_id, - "session": session, + "call_type": call_type, "call_id": call_id, "session": session, } - return self.get( - "/api/v2/video/call_stats/{call_type}/{call_id}/{session}/map", - QueryCallStatsMapResponse, - query_params=query_params, - path_params=path_params, - ) - - @telemetry.operation_name( - "getstream.api.video.get_call_session_participant_stats_details" - ) - def get_call_session_participant_stats_details( - self, - call_type: str, - call_id: str, - session: str, - user: str, - user_session: str, - since: Optional[str] = None, - until: Optional[str] = None, - max_points: Optional[int] = None, - ) -> StreamResponse[GetCallSessionParticipantStatsDetailsResponse]: - query_params = build_query_param( - since=since, until=until, max_points=max_points - ) + return self.get("/api/v2/video/call_stats/{call_type}/{call_id}/{session}/map", QueryCallStatsMapResponse, query_params=query_params, path_params=path_params) + + @telemetry.operation_name("getstream.api.video.get_call_session_participant_stats_details") + def get_call_session_participant_stats_details(self, call_type: str, call_id: str, session: str, user: str, user_session: str, since: Optional[str] = None, until: Optional[str] = None, max_points: Optional[int] = None) -> StreamResponse[GetCallSessionParticipantStatsDetailsResponse]: + query_params = build_query_param(since=since, until=until, max_points=max_points) path_params = { - "call_type": call_type, - "call_id": call_id, - "session": session, - "user": user, - "user_session": user_session, + "call_type": call_type, "call_id": call_id, "session": session, "user": user, "user_session": user_session, } - return self.get( - "/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participant/{user}/{user_session}/details", - GetCallSessionParticipantStatsDetailsResponse, - query_params=query_params, - path_params=path_params, - ) - - @telemetry.operation_name( - "getstream.api.video.query_call_session_participant_stats" - ) - def query_call_session_participant_stats( - self, - call_type: str, - call_id: str, - session: str, - limit: Optional[int] = None, - prev: Optional[str] = None, - next: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallSessionParticipantStatsResponse]: - query_params = build_query_param( - limit=limit, - prev=prev, - next=next, - sort=sort, - filter_conditions=filter_conditions, - ) + return self.get("/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participant/{user}/{user_session}/details", GetCallSessionParticipantStatsDetailsResponse, query_params=query_params, path_params=path_params) + + @telemetry.operation_name("getstream.api.video.query_call_session_participant_stats") + def query_call_session_participant_stats(self, call_type: str, call_id: str, session: str, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallSessionParticipantStatsResponse]: + query_params = build_query_param(limit=limit, prev=prev, next=next, sort=sort, filter_conditions=filter_conditions) path_params = { - "call_type": call_type, - "call_id": call_id, - "session": session, + "call_type": call_type, "call_id": call_id, "session": session, } - return self.get( - "/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participants", - QueryCallSessionParticipantStatsResponse, - query_params=query_params, - path_params=path_params, - ) - - @telemetry.operation_name( - "getstream.api.video.get_call_session_participant_stats_timeline" - ) - def get_call_session_participant_stats_timeline( - self, - call_type: str, - call_id: str, - session: str, - user: str, - user_session: str, - start_time: Optional[str] = None, - end_time: Optional[str] = None, - severity: Optional[List[str]] = None, - ) -> StreamResponse[QueryCallSessionParticipantStatsTimelineResponse]: - query_params = build_query_param( - start_time=start_time, end_time=end_time, severity=severity - ) + return self.get("/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participants", QueryCallSessionParticipantStatsResponse, query_params=query_params, path_params=path_params) + + @telemetry.operation_name("getstream.api.video.get_call_session_participant_stats_timeline") + def get_call_session_participant_stats_timeline(self, call_type: str, call_id: str, session: str, user: str, user_session: str, start_time: Optional[str] = None, end_time: Optional[str] = None, severity: Optional[List[str]] = None) -> StreamResponse[QueryCallSessionParticipantStatsTimelineResponse]: + query_params = build_query_param(start_time=start_time, end_time=end_time, severity=severity) path_params = { - "call_type": call_type, - "call_id": call_id, - "session": session, - "user": user, - "user_session": user_session, + "call_type": call_type, "call_id": call_id, "session": session, "user": user, "user_session": user_session, } - return self.get( - "/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participants/{user}/{user_session}/timeline", - QueryCallSessionParticipantStatsTimelineResponse, - query_params=query_params, - path_params=path_params, - ) - + return self.get("/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participants/{user}/{user_session}/timeline", QueryCallSessionParticipantStatsTimelineResponse, query_params=query_params, path_params=path_params) + @telemetry.operation_name("getstream.api.video.query_calls") - def query_calls( - self, - limit: Optional[int] = None, - next: Optional[str] = None, - prev: Optional[str] = None, - sort: Optional[List[SortParamRequest]] = None, - filter_conditions: Optional[Dict[str, object]] = None, - ) -> StreamResponse[QueryCallsResponse]: - json = QueryCallsRequest( - limit=limit, - next=next, - prev=prev, - sort=sort, - filter_conditions=filter_conditions, - ).to_dict() + def query_calls(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallsResponse]: + json = QueryCallsRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() return self.post("/api/v2/video/calls", QueryCallsResponse, json=json) - + @telemetry.operation_name("getstream.api.video.list_call_types") def list_call_types(self) -> StreamResponse[ListCallTypeResponse]: return self.get("/api/v2/video/calltypes", ListCallTypeResponse) - + @telemetry.operation_name("getstream.api.video.create_call_type") - def create_call_type( - self, - name: str, - external_storage: Optional[str] = None, - grants: Optional[Dict[str, List[str]]] = None, - notification_settings: Optional[NotificationSettingsRequest] = None, - settings: Optional[CallSettingsRequest] = None, - ) -> StreamResponse[CreateCallTypeResponse]: - json = CreateCallTypeRequest( - name=name, - external_storage=external_storage, - grants=grants, - notification_settings=notification_settings, - settings=settings, - ).to_dict() + def create_call_type(self, name: str, external_storage: Optional[str] = None, grants: Optional[Dict[str, List[str]]] = None, notification_settings: Optional[NotificationSettingsRequest] = None, settings: Optional[CallSettingsRequest] = None) -> StreamResponse[CreateCallTypeResponse]: + json = CreateCallTypeRequest(name=name, external_storage=external_storage, grants=grants, notification_settings=notification_settings, settings=settings).to_dict() return self.post("/api/v2/video/calltypes", CreateCallTypeResponse, json=json) - + @telemetry.operation_name("getstream.api.video.delete_call_type") def delete_call_type(self, name: str) -> StreamResponse[Response]: path_params = { - "name": name, + "name": name, } - return self.delete( - "/api/v2/video/calltypes/{name}", Response, path_params=path_params - ) - + return self.delete("/api/v2/video/calltypes/{name}", Response, path_params=path_params) + @telemetry.operation_name("getstream.api.video.get_call_type") def get_call_type(self, name: str) -> StreamResponse[GetCallTypeResponse]: path_params = { - "name": name, + "name": name, } - return self.get( - "/api/v2/video/calltypes/{name}", - GetCallTypeResponse, - path_params=path_params, - ) - + return self.get("/api/v2/video/calltypes/{name}", GetCallTypeResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.update_call_type") - def update_call_type( - self, - name: str, - external_storage: Optional[str] = None, - grants: Optional[Dict[str, List[str]]] = None, - notification_settings: Optional[NotificationSettingsRequest] = None, - settings: Optional[CallSettingsRequest] = None, - ) -> StreamResponse[UpdateCallTypeResponse]: + def update_call_type(self, name: str, external_storage: Optional[str] = None, grants: Optional[Dict[str, List[str]]] = None, notification_settings: Optional[NotificationSettingsRequest] = None, settings: Optional[CallSettingsRequest] = None) -> StreamResponse[UpdateCallTypeResponse]: path_params = { - "name": name, + "name": name, } - json = UpdateCallTypeRequest( - external_storage=external_storage, - grants=grants, - notification_settings=notification_settings, - settings=settings, - ).to_dict() - return self.put( - "/api/v2/video/calltypes/{name}", - UpdateCallTypeResponse, - path_params=path_params, - json=json, - ) - + json = UpdateCallTypeRequest(external_storage=external_storage, grants=grants, notification_settings=notification_settings, settings=settings).to_dict() + return self.put("/api/v2/video/calltypes/{name}", UpdateCallTypeResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.get_edges") def get_edges(self) -> StreamResponse[GetEdgesResponse]: return self.get("/api/v2/video/edges", GetEdgesResponse) - + @telemetry.operation_name("getstream.api.video.resolve_sip_auth") - def resolve_sip_auth( - self, - sip_caller_number: str, - sip_trunk_number: str, - from_host: Optional[str] = None, - source_ip: Optional[str] = None, - ) -> StreamResponse[ResolveSipAuthResponse]: - json = ResolveSipAuthRequest( - sip_caller_number=sip_caller_number, - sip_trunk_number=sip_trunk_number, - from_host=from_host, - source_ip=source_ip, - ).to_dict() + def resolve_sip_auth(self, sip_caller_number: str, sip_trunk_number: str, from_host: Optional[str] = None, source_ip: Optional[str] = None) -> StreamResponse[ResolveSipAuthResponse]: + json = ResolveSipAuthRequest(sip_caller_number=sip_caller_number, sip_trunk_number=sip_trunk_number, from_host=from_host, source_ip=source_ip).to_dict() return self.post("/api/v2/video/sip/auth", ResolveSipAuthResponse, json=json) - + @telemetry.operation_name("getstream.api.video.list_sip_inbound_routing_rule") - def list_sip_inbound_routing_rule( - self, - ) -> StreamResponse[ListSIPInboundRoutingRuleResponse]: - return self.get( - "/api/v2/video/sip/inbound_routing_rules", ListSIPInboundRoutingRuleResponse - ) - + def list_sip_inbound_routing_rule(self) -> StreamResponse[ListSIPInboundRoutingRuleResponse]: + return self.get("/api/v2/video/sip/inbound_routing_rules", ListSIPInboundRoutingRuleResponse) + @telemetry.operation_name("getstream.api.video.create_sip_inbound_routing_rule") - def create_sip_inbound_routing_rule( - self, - name: str, - trunk_ids: List[str], - caller_configs: SIPCallerConfigsRequest, - called_numbers: Optional[List[str]] = None, - caller_numbers: Optional[List[str]] = None, - call_configs: Optional[SIPCallConfigsRequest] = None, - direct_routing_configs: Optional[SIPDirectRoutingRuleCallConfigsRequest] = None, - pin_protection_configs: Optional[SIPPinProtectionConfigsRequest] = None, - pin_routing_configs: Optional[SIPInboundRoutingRulePinConfigsRequest] = None, - ) -> StreamResponse[SIPInboundRoutingRuleResponse]: - json = SIPInboundRoutingRuleRequest( - name=name, - trunk_ids=trunk_ids, - caller_configs=caller_configs, - called_numbers=called_numbers, - caller_numbers=caller_numbers, - call_configs=call_configs, - direct_routing_configs=direct_routing_configs, - pin_protection_configs=pin_protection_configs, - pin_routing_configs=pin_routing_configs, - ).to_dict() - return self.post( - "/api/v2/video/sip/inbound_routing_rules", - SIPInboundRoutingRuleResponse, - json=json, - ) - + def create_sip_inbound_routing_rule(self, name: str, trunk_ids: List[str], caller_configs: SIPCallerConfigsRequest, called_numbers: Optional[List[str]] = None, caller_numbers: Optional[List[str]] = None, call_configs: Optional[SIPCallConfigsRequest] = None, direct_routing_configs: Optional[SIPDirectRoutingRuleCallConfigsRequest] = None, pin_protection_configs: Optional[SIPPinProtectionConfigsRequest] = None, pin_routing_configs: Optional[SIPInboundRoutingRulePinConfigsRequest] = None) -> StreamResponse[SIPInboundRoutingRuleResponse]: + json = SIPInboundRoutingRuleRequest(name=name, trunk_ids=trunk_ids, caller_configs=caller_configs, called_numbers=called_numbers, caller_numbers=caller_numbers, call_configs=call_configs, direct_routing_configs=direct_routing_configs, pin_protection_configs=pin_protection_configs, pin_routing_configs=pin_routing_configs).to_dict() + return self.post("/api/v2/video/sip/inbound_routing_rules", SIPInboundRoutingRuleResponse, json=json) + @telemetry.operation_name("getstream.api.video.delete_sip_inbound_routing_rule") - def delete_sip_inbound_routing_rule( - self, id: str - ) -> StreamResponse[DeleteSIPInboundRoutingRuleResponse]: + def delete_sip_inbound_routing_rule(self, id: str) -> StreamResponse[DeleteSIPInboundRoutingRuleResponse]: path_params = { - "id": id, + "id": id, } - return self.delete( - "/api/v2/video/sip/inbound_routing_rules/{id}", - DeleteSIPInboundRoutingRuleResponse, - path_params=path_params, - ) - + return self.delete("/api/v2/video/sip/inbound_routing_rules/{id}", DeleteSIPInboundRoutingRuleResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.update_sip_inbound_routing_rule") - def update_sip_inbound_routing_rule( - self, - id: str, - name: str, - trunk_ids: List[str], - caller_configs: SIPCallerConfigsRequest, - called_numbers: Optional[List[str]] = None, - caller_numbers: Optional[List[str]] = None, - call_configs: Optional[SIPCallConfigsRequest] = None, - direct_routing_configs: Optional[SIPDirectRoutingRuleCallConfigsRequest] = None, - pin_protection_configs: Optional[SIPPinProtectionConfigsRequest] = None, - pin_routing_configs: Optional[SIPInboundRoutingRulePinConfigsRequest] = None, - ) -> StreamResponse[UpdateSIPInboundRoutingRuleResponse]: + def update_sip_inbound_routing_rule(self, id: str, name: str, trunk_ids: List[str], caller_configs: SIPCallerConfigsRequest, called_numbers: Optional[List[str]] = None, caller_numbers: Optional[List[str]] = None, call_configs: Optional[SIPCallConfigsRequest] = None, direct_routing_configs: Optional[SIPDirectRoutingRuleCallConfigsRequest] = None, pin_protection_configs: Optional[SIPPinProtectionConfigsRequest] = None, pin_routing_configs: Optional[SIPInboundRoutingRulePinConfigsRequest] = None) -> StreamResponse[UpdateSIPInboundRoutingRuleResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateSIPInboundRoutingRuleRequest( - name=name, - trunk_ids=trunk_ids, - caller_configs=caller_configs, - called_numbers=called_numbers, - caller_numbers=caller_numbers, - call_configs=call_configs, - direct_routing_configs=direct_routing_configs, - pin_protection_configs=pin_protection_configs, - pin_routing_configs=pin_routing_configs, - ).to_dict() - return self.put( - "/api/v2/video/sip/inbound_routing_rules/{id}", - UpdateSIPInboundRoutingRuleResponse, - path_params=path_params, - json=json, - ) - + json = UpdateSIPInboundRoutingRuleRequest(name=name, trunk_ids=trunk_ids, caller_configs=caller_configs, called_numbers=called_numbers, caller_numbers=caller_numbers, call_configs=call_configs, direct_routing_configs=direct_routing_configs, pin_protection_configs=pin_protection_configs, pin_routing_configs=pin_routing_configs).to_dict() + return self.put("/api/v2/video/sip/inbound_routing_rules/{id}", UpdateSIPInboundRoutingRuleResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.list_sip_trunks") def list_sip_trunks(self) -> StreamResponse[ListSIPTrunksResponse]: return self.get("/api/v2/video/sip/inbound_trunks", ListSIPTrunksResponse) - + @telemetry.operation_name("getstream.api.video.create_sip_trunk") - def create_sip_trunk( - self, - name: str, - numbers: List[str], - password: Optional[str] = None, - allowed_ips: Optional[List[str]] = None, - ) -> StreamResponse[CreateSIPTrunkResponse]: - json = CreateSIPTrunkRequest( - name=name, numbers=numbers, password=password, allowed_ips=allowed_ips - ).to_dict() - return self.post( - "/api/v2/video/sip/inbound_trunks", CreateSIPTrunkResponse, json=json - ) - + def create_sip_trunk(self, name: str, numbers: List[str], password: Optional[str] = None, allowed_ips: Optional[List[str]] = None) -> StreamResponse[CreateSIPTrunkResponse]: + json = CreateSIPTrunkRequest(name=name, numbers=numbers, password=password, allowed_ips=allowed_ips).to_dict() + return self.post("/api/v2/video/sip/inbound_trunks", CreateSIPTrunkResponse, json=json) + @telemetry.operation_name("getstream.api.video.delete_sip_trunk") def delete_sip_trunk(self, id: str) -> StreamResponse[DeleteSIPTrunkResponse]: path_params = { - "id": id, + "id": id, } - return self.delete( - "/api/v2/video/sip/inbound_trunks/{id}", - DeleteSIPTrunkResponse, - path_params=path_params, - ) - + return self.delete("/api/v2/video/sip/inbound_trunks/{id}", DeleteSIPTrunkResponse, path_params=path_params) + @telemetry.operation_name("getstream.api.video.update_sip_trunk") - def update_sip_trunk( - self, - id: str, - name: str, - numbers: List[str], - password: Optional[str] = None, - allowed_ips: Optional[List[str]] = None, - ) -> StreamResponse[UpdateSIPTrunkResponse]: + def update_sip_trunk(self, id: str, name: str, numbers: List[str], password: Optional[str] = None, allowed_ips: Optional[List[str]] = None) -> StreamResponse[UpdateSIPTrunkResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateSIPTrunkRequest( - name=name, numbers=numbers, password=password, allowed_ips=allowed_ips - ).to_dict() - return self.put( - "/api/v2/video/sip/inbound_trunks/{id}", - UpdateSIPTrunkResponse, - path_params=path_params, - json=json, - ) - + json = UpdateSIPTrunkRequest(name=name, numbers=numbers, password=password, allowed_ips=allowed_ips).to_dict() + return self.put("/api/v2/video/sip/inbound_trunks/{id}", UpdateSIPTrunkResponse, path_params=path_params, json=json) + @telemetry.operation_name("getstream.api.video.resolve_sip_inbound") - def resolve_sip_inbound( - self, - sip_caller_number: str, - sip_trunk_number: str, - routing_number: Optional[str] = None, - trunk_id: Optional[str] = None, - challenge: Optional[SIPChallengeRequest] = None, - sip_headers: Optional[Dict[str, str]] = None, - ) -> StreamResponse[ResolveSipInboundResponse]: - json = ResolveSipInboundRequest( - sip_caller_number=sip_caller_number, - sip_trunk_number=sip_trunk_number, - routing_number=routing_number, - trunk_id=trunk_id, - challenge=challenge, - sip_headers=sip_headers, - ).to_dict() - return self.post( - "/api/v2/video/sip/resolve", ResolveSipInboundResponse, json=json - ) - + def resolve_sip_inbound(self, sip_caller_number: str, sip_trunk_number: str, routing_number: Optional[str] = None, trunk_id: Optional[str] = None, challenge: Optional[SIPChallengeRequest] = None, sip_headers: Optional[Dict[str, str]] = None) -> StreamResponse[ResolveSipInboundResponse]: + json = ResolveSipInboundRequest(sip_caller_number=sip_caller_number, sip_trunk_number=sip_trunk_number, routing_number=routing_number, trunk_id=trunk_id, challenge=challenge, sip_headers=sip_headers).to_dict() + return self.post("/api/v2/video/sip/resolve", ResolveSipInboundResponse, json=json) + @telemetry.operation_name("getstream.api.video.query_aggregate_call_stats") - def query_aggregate_call_stats( - self, - _from: Optional[str] = None, - to: Optional[str] = None, - report_types: Optional[List[str]] = None, - ) -> StreamResponse[QueryAggregateCallStatsResponse]: - json = QueryAggregateCallStatsRequest( - _from=_from, to=to, report_types=report_types - ).to_dict() - return self.post( - "/api/v2/video/stats", QueryAggregateCallStatsResponse, json=json - ) - + def query_aggregate_call_stats(self, _from: Optional[str] = None, to: Optional[str] = None, report_types: Optional[List[str]] = None) -> StreamResponse[QueryAggregateCallStatsResponse]: + json = QueryAggregateCallStatsRequest(_from=_from, to=to, report_types=report_types).to_dict() + return self.post("/api/v2/video/stats", QueryAggregateCallStatsResponse, json=json) + @telemetry.operation_name("getstream.api.video.get_daily_digest") - def get_daily_digest( - self, date: Optional[str] = None, app_id: Optional[str] = None - ) -> StreamResponse[GetDailyDigestResponse]: - query_params = build_query_param(date=date, app_id=app_id) - return self.get( - "/api/v2/video/stats/daily_digest", - GetDailyDigestResponse, - query_params=query_params, - ) + def get_daily_digest(self, date: Optional[str] = None, target_app_id: Optional[str] = None) -> StreamResponse[GetDailyDigestResponse]: + query_params = build_query_param(date=date, target_app_id=target_app_id) + return self.get("/api/v2/video/stats/daily_digest", GetDailyDigestResponse, query_params=query_params) + \ No newline at end of file diff --git a/getstream/webhook.py b/getstream/webhook.py index b8c39083..409f595d 100644 --- a/getstream/webhook.py +++ b/getstream/webhook.py @@ -226,9 +226,7 @@ EVENT_TYPE_CALL_RTMP_BROADCAST_STARTED = "call.rtmp_broadcast_started" EVENT_TYPE_CALL_RTMP_BROADCAST_STOPPED = "call.rtmp_broadcast_stopped" EVENT_TYPE_CALL_SESSION_ENDED = "call.session_ended" -EVENT_TYPE_CALL_SESSION_PARTICIPANT_COUNT_UPDATED = ( - "call.session_participant_count_updated" -) +EVENT_TYPE_CALL_SESSION_PARTICIPANT_COUNT_UPDATED = "call.session_participant_count_updated" EVENT_TYPE_CALL_SESSION_PARTICIPANT_JOINED = "call.session_participant_joined" EVENT_TYPE_CALL_SESSION_PARTICIPANT_LEFT = "call.session_participant_left" EVENT_TYPE_CALL_SESSION_STARTED = "call.session_started" @@ -401,15 +399,15 @@ def get_event_type(raw_event: bytes | str | dict[str, Any]) -> str: The event type string (e.g., "message.new"), or empty string if parsing fails """ if isinstance(raw_event, dict): - return raw_event.get("type", "") + return raw_event.get('type', '') try: if isinstance(raw_event, bytes): - raw_event = raw_event.decode("utf-8") + raw_event = raw_event.decode('utf-8') data = json.loads(raw_event) - return data.get("type", "") + return data.get('type', '') except (json.JSONDecodeError, UnicodeDecodeError, AttributeError): - return "" + return '' def parse_webhook_event(raw_event: bytes | str | dict[str, Any]) -> Any: @@ -429,13 +427,13 @@ def parse_webhook_event(raw_event: bytes | str | dict[str, Any]) -> Any: if isinstance(raw_event, dict): data = raw_event elif isinstance(raw_event, bytes): - data = json.loads(raw_event.decode("utf-8")) + data = json.loads(raw_event.decode('utf-8')) else: data = json.loads(raw_event) except (json.JSONDecodeError, UnicodeDecodeError) as e: raise ValueError(f"Failed to parse webhook payload: {e}") from e - event_type = data.get("type") + event_type = data.get('type') if not event_type: raise ValueError("Webhook payload missing 'type' field") @@ -641,9 +639,9 @@ def verify_webhook_signature(body: bytes | str, signature: str, secret: str) -> True if the signature is valid, False otherwise """ if isinstance(body, str): - body = body.encode("utf-8") + body = body.encode('utf-8') - h = hmac.new(secret.encode("utf-8"), body, hashlib.sha256) + h = hmac.new(secret.encode('utf-8'), body, hashlib.sha256) expected = h.hexdigest() return hmac.compare_digest(signature, expected) @@ -667,9 +665,7 @@ def gunzip_payload(body: bytes) -> bytes: every "looks like gzip but isn't" failure mode surfaces as InvalidWebhookError. """ if not isinstance(body, (bytes, bytearray)): - raise InvalidWebhookError( - InvalidWebhookError.INVALID_JSON + ": body must be bytes" - ) + raise InvalidWebhookError(InvalidWebhookError.INVALID_JSON + ": body must be bytes") if len(body) < 2 or bytes(body[:2]) != _GZIP_MAGIC: return bytes(body) try: @@ -692,9 +688,7 @@ def decode_sqs_payload(message_body: str) -> bytes: formats: no caller code change, no flag, no header. """ if not isinstance(message_body, str): - raise InvalidWebhookError( - InvalidWebhookError.INVALID_JSON + ": message_body must be str" - ) + raise InvalidWebhookError(InvalidWebhookError.INVALID_JSON + ": message_body must be str") try: decoded = base64.b64decode(message_body, validate=True) except ValueError: @@ -736,9 +730,7 @@ def decode_sns_payload(notification_body: str) -> bytes: :func:`decode_sqs_payload`. """ if not isinstance(notification_body, str): - raise InvalidWebhookError( - InvalidWebhookError.INVALID_JSON + ": notification_body must be str" - ) + raise InvalidWebhookError(InvalidWebhookError.INVALID_JSON + ": notification_body must be str") inner = _unwrap_sns_notification_body(notification_body) return decode_sqs_payload(inner) @@ -759,27 +751,18 @@ def parse_event(payload: bytes) -> Any: or any deserialization failure on a known type. """ if not isinstance(payload, (bytes, bytearray)): - raise InvalidWebhookError( - InvalidWebhookError.INVALID_JSON + ": payload must be bytes" - ) + raise InvalidWebhookError(InvalidWebhookError.INVALID_JSON + ": payload must be bytes") try: data = json.loads(payload) except json.JSONDecodeError as e: # json.loads handles bytes natively since Python 3.6; no UnicodeDecodeError path. - raise InvalidWebhookError( - f"{InvalidWebhookError.INVALID_JSON}: failed to parse webhook payload: {e}" - ) from e + raise InvalidWebhookError(f"{InvalidWebhookError.INVALID_JSON}: failed to parse webhook payload: {e}") from e if not isinstance(data, dict): - raise InvalidWebhookError( - InvalidWebhookError.INVALID_JSON + ": webhook payload must be a JSON object" - ) + raise InvalidWebhookError(InvalidWebhookError.INVALID_JSON + ": webhook payload must be a JSON object") event_type = data.get("type") if not isinstance(event_type, str) or event_type == "": - raise InvalidWebhookError( - InvalidWebhookError.INVALID_JSON - + ": webhook payload missing 'type' string field" - ) + raise InvalidWebhookError(InvalidWebhookError.INVALID_JSON + ": webhook payload missing 'type' string field") event_class = _get_event_class(event_type) if event_class is None: @@ -788,9 +771,7 @@ def parse_event(payload: bytes) -> Any: try: return event_class.from_dict(data, infer_missing=True) except Exception as e: - raise InvalidWebhookError( - f"{InvalidWebhookError.INVALID_JSON}: failed to deserialize event: {e}" - ) from e + raise InvalidWebhookError(f"{InvalidWebhookError.INVALID_JSON}: failed to deserialize event: {e}") from e def _build_unknown_event(event_type: str, data: dict[str, Any]) -> UnknownEvent: From 5276518060e32404b574523921b03a00cab47dfa Mon Sep 17 00:00:00 2001 From: Aditya Agarwal Date: Wed, 2 Sep 2026 15:48:30 +0200 Subject: [PATCH 2/8] chore: [FEEDS-1830] drop ruff-only edits to handwritten Python files --- getstream/__init__.py | 6 ++-- getstream/chat/async_client.py | 13 +++---- getstream/chat/client.py | 13 +++---- getstream/common/async_client.py | 7 ++-- getstream/common/client.py | 7 ++-- getstream/feeds/client.py | 6 ++-- getstream/stream.py | 62 ++++++++++++++++---------------- getstream/stream_response.py | 8 ++--- getstream/video/__init__.py | 15 ++++---- getstream/video/async_client.py | 2 +- getstream/video/client.py | 2 +- 11 files changed, 73 insertions(+), 68 deletions(-) diff --git a/getstream/__init__.py b/getstream/__init__.py index 0d93ca61..2378c84e 100644 --- a/getstream/__init__.py +++ b/getstream/__init__.py @@ -8,10 +8,8 @@ StreamTaskException, StreamTransportException, ) -from getstream.stream import ( - AsyncStream, # noqa: F401 - Stream, # noqa: F401 -) +from getstream.stream import Stream # noqa: F401 +from getstream.stream import AsyncStream # noqa: F401 # No-op until the caller attaches a handler: the SDK never configures the # logger's level or output, it only emits at each event's documented level. diff --git a/getstream/chat/async_client.py b/getstream/chat/async_client.py index bd0c6316..25277dc8 100644 --- a/getstream/chat/async_client.py +++ b/getstream/chat/async_client.py @@ -1,4 +1,5 @@ import json +from typing import List, Optional from getstream.chat.async_channel import Channel from getstream.chat.async_rest_client import ChatRestClient @@ -32,7 +33,7 @@ async def upload_channel_file( type: str, id: str, file: str, - user: OnlyUserID | None = None, + user: Optional[OnlyUserID] = None, ) -> StreamResponse[UploadChannelFileResponse]: form_fields = [] if user is not None: @@ -48,11 +49,11 @@ async def upload_channel_file( @telemetry.operation_name("getstream.api.chat.upload_channel_image") async def upload_channel_image( self, - channel_type: str | None = None, - id: str | None = None, - file: str | None = None, - upload_sizes: list[ImageSize] | None = None, - user: OnlyUserID | None = None, + channel_type: Optional[str] = None, + id: Optional[str] = None, + file: Optional[str] = None, + upload_sizes: Optional[List[ImageSize]] = None, + user: Optional[OnlyUserID] = None, **kwargs, ) -> StreamResponse[UploadChannelResponse]: # Backward compatibility for generated wrappers passing `type=...`. diff --git a/getstream/chat/client.py b/getstream/chat/client.py index ebc305dd..7fb451b0 100644 --- a/getstream/chat/client.py +++ b/getstream/chat/client.py @@ -1,4 +1,5 @@ import json +from typing import List, Optional from getstream.chat.channel import Channel from getstream.chat.rest_client import ChatRestClient @@ -32,7 +33,7 @@ def upload_channel_file( type: str, id: str, file: str, - user: OnlyUserID | None = None, + user: Optional[OnlyUserID] = None, ) -> StreamResponse[UploadChannelFileResponse]: form_fields = [] if user is not None: @@ -48,11 +49,11 @@ def upload_channel_file( @telemetry.operation_name("getstream.api.chat.upload_channel_image") def upload_channel_image( self, - channel_type: str | None = None, - id: str | None = None, - file: str | None = None, - upload_sizes: list[ImageSize] | None = None, - user: OnlyUserID | None = None, + channel_type: Optional[str] = None, + id: Optional[str] = None, + file: Optional[str] = None, + upload_sizes: Optional[List[ImageSize]] = None, + user: Optional[OnlyUserID] = None, **kwargs, ) -> StreamResponse[UploadChannelResponse]: # Backward compatibility for generated wrappers passing `type=...`. diff --git a/getstream/common/async_client.py b/getstream/common/async_client.py index 93ab8a7f..ef9294f4 100644 --- a/getstream/common/async_client.py +++ b/getstream/common/async_client.py @@ -1,4 +1,5 @@ import json +from typing import List, Optional from getstream.common import telemetry from getstream.common.async_rest_client import CommonRestClient @@ -23,7 +24,7 @@ def __init__(self, api_key: str, base_url, token, timeout, user_agent=None): @telemetry.operation_name("getstream.api.common.upload_file") async def upload_file( - self, file: str, user: OnlyUserID | None = None + self, file: str, user: Optional[OnlyUserID] = None ) -> StreamResponse[FileUploadResponse]: form_fields = [] if user is not None: @@ -39,8 +40,8 @@ async def upload_file( async def upload_image( self, file: str, - upload_sizes: list[ImageSize] | None = None, - user: OnlyUserID | None = None, + upload_sizes: Optional[List[ImageSize]] = None, + user: Optional[OnlyUserID] = None, ) -> StreamResponse[ImageUploadResponse]: form_fields = [] if user is not None: diff --git a/getstream/common/client.py b/getstream/common/client.py index 5d76f675..748b0b17 100644 --- a/getstream/common/client.py +++ b/getstream/common/client.py @@ -1,4 +1,5 @@ import json +from typing import List, Optional from getstream.common import telemetry from getstream.common.rest_client import CommonRestClient @@ -23,7 +24,7 @@ def __init__(self, api_key: str, base_url, token, timeout, user_agent=None): @telemetry.operation_name("getstream.api.common.upload_file") def upload_file( - self, file: str, user: OnlyUserID | None = None + self, file: str, user: Optional[OnlyUserID] = None ) -> StreamResponse[FileUploadResponse]: form_fields = [] if user is not None: @@ -39,8 +40,8 @@ def upload_file( def upload_image( self, file: str, - upload_sizes: list[ImageSize] | None = None, - user: OnlyUserID | None = None, + upload_sizes: Optional[List[ImageSize]] = None, + user: Optional[OnlyUserID] = None, ) -> StreamResponse[ImageUploadResponse]: form_fields = [] if user is not None: diff --git a/getstream/feeds/client.py b/getstream/feeds/client.py index d70d6f3a..430edcf2 100644 --- a/getstream/feeds/client.py +++ b/getstream/feeds/client.py @@ -1,6 +1,6 @@ - -from getstream.feeds.feeds import Feed from getstream.feeds.rest_client import FeedsRestClient +from getstream.feeds.feeds import Feed +from typing import Optional, Dict class FeedsClient(FeedsRestClient): @@ -15,7 +15,7 @@ def __init__(self, api_key: str, base_url, token, timeout, stream, user_agent=No self.stream = stream def feed( - self, feed_type: str, feed_id: str, custom_data: dict | None = None + self, feed_type: str, feed_id: str, custom_data: Optional[Dict] = None ) -> Feed: """ Create a Feed instance for the given feed type and ID. diff --git a/getstream/stream.py b/getstream/stream.py index 3b987956..d25848ff 100644 --- a/getstream/stream.py +++ b/getstream/stream.py @@ -1,30 +1,32 @@ from __future__ import annotations -import logging -import time from contextlib import AsyncExitStack from functools import cached_property +import logging +import time +from typing import List, Optional from uuid import uuid4 import httpx import jwt from pydantic_settings import BaseSettings, SettingsConfigDict -from typing_extensions import deprecated from getstream.base import _log_client_initialized, _resolve_logger -from getstream.chat.async_client import ChatClient as AsyncChatClient -from getstream.chat.client import ChatClient from getstream.common import telemetry +from getstream.config import RetryConfig +from getstream.chat.client import ChatClient +from getstream.chat.async_client import ChatClient as AsyncChatClient from getstream.common.async_client import CommonClient as AsyncCommonClient from getstream.common.client import CommonClient -from getstream.config import RetryConfig from getstream.feeds.client import FeedsClient from getstream.models import FullUserResponse, UserRequest -from getstream.moderation.async_client import ModerationClient as AsyncModerationClient from getstream.moderation.client import ModerationClient +from getstream.moderation.async_client import ModerationClient as AsyncModerationClient from getstream.utils import validate_and_clean_url -from getstream.video.async_client import VideoClient as AsyncVideoClient from getstream.video.client import VideoClient +from getstream.video.async_client import VideoClient as AsyncVideoClient +from typing_extensions import deprecated + BASE_URL = "https://chat.stream-io-api.com/" @@ -42,11 +44,11 @@ class Settings(BaseSettings): # Env names: STREAM_API_KEY, STREAM_API_SECRET, STREAM_BASE_URL, STREAM_TIMEOUT, STREAM_REQUEST_TIMEOUT, STREAM_MAX_CONNS_PER_HOST, STREAM_IDLE_TIMEOUT, STREAM_CONNECT_TIMEOUT api_key: str - api_secret: str | None = None - base_url: str | None = None + api_secret: Optional[str] = None + base_url: Optional[str] = None # `timeout` kept as alias for `request_timeout` for backward compat. timeout: float = DEFAULT_REQUEST_TIMEOUT - request_timeout: float | None = None + request_timeout: Optional[float] = None max_conns_per_host: int = DEFAULT_MAX_CONNS_PER_HOST idle_timeout: float = DEFAULT_IDLE_TIMEOUT connect_timeout: float = DEFAULT_CONNECT_TIMEOUT @@ -67,7 +69,7 @@ class _PoolSettings(BaseSettings): """ timeout: float = DEFAULT_REQUEST_TIMEOUT - request_timeout: float | None = None + request_timeout: Optional[float] = None max_conns_per_host: int = DEFAULT_MAX_CONNS_PER_HOST idle_timeout: float = DEFAULT_IDLE_TIMEOUT connect_timeout: float = DEFAULT_CONNECT_TIMEOUT @@ -80,21 +82,21 @@ class _PoolSettings(BaseSettings): class BaseStream: def __init__( self, - api_key: str | None = None, - api_secret: str | None = None, - timeout: float | None = None, - base_url: str | None = BASE_URL, - user_agent: str | None = None, + api_key: Optional[str] = None, + api_secret: Optional[str] = None, + timeout: Optional[float] = None, + base_url: Optional[str] = BASE_URL, + user_agent: Optional[str] = None, transport=None, http_client=None, - token: str | None = None, - request_timeout: float | None = None, - max_conns_per_host: int | None = None, - idle_timeout: float | None = None, - connect_timeout: float | None = None, - logger: logging.Logger | None = None, + token: Optional[str] = None, + request_timeout: Optional[float] = None, + max_conns_per_host: Optional[int] = None, + idle_timeout: Optional[float] = None, + connect_timeout: Optional[float] = None, + logger: Optional[logging.Logger] = None, log_bodies: bool = False, - retry: RetryConfig | None = None, + retry: Optional[RetryConfig] = None, ): """Build a Stream client. @@ -145,7 +147,7 @@ def __init__( # _PoolSettings (not Settings) is used here so missing STREAM_API_KEY # in the environment does not crash construction when api_key was # passed explicitly. It reads the same STREAM_* env vars. - s_for_pool: _PoolSettings | None = None + s_for_pool: Optional[_PoolSettings] = None def _settings() -> _PoolSettings: nonlocal s_for_pool @@ -323,7 +325,7 @@ def clone_for_token(self, token: str): def create_call_token( self, user_id: str, - call_cids: list[str] = None, + call_cids: List[str] = None, role: str = None, expiration: int = None, ): @@ -338,8 +340,8 @@ def create_call_token( def _create_token( self, user_id: str = None, - channel_cids: list[str] = None, - call_cids: list[str] = None, + channel_cids: List[str] = None, + call_cids: List[str] = None, role: str = None, expiration=None, iat: int = None, @@ -548,7 +550,7 @@ class Stream(BaseStream, CommonClient): @classmethod @deprecated("from_env is deprecated, use __init__ instead") - def from_env(cls, timeout: float | None = None) -> Stream: + def from_env(cls, timeout: Optional[float] = None) -> Stream: """ Construct a StreamClient by loading its credentials and base_url from environment variables (via our pydantic Settings). @@ -566,7 +568,7 @@ def from_env(cls, timeout: float | None = None) -> Stream: timeout=timeout, ) - def as_async(self) -> AsyncStream: + def as_async(self) -> "AsyncStream": return AsyncStream( api_key=self.api_key, api_secret=self._api_secret, diff --git a/getstream/stream_response.py b/getstream/stream_response.py index 9fdee4cd..fe5ce065 100644 --- a/getstream/stream_response.py +++ b/getstream/stream_response.py @@ -1,5 +1,5 @@ +from typing import Any, Dict, Optional, Generic import typing -from typing import Any, Generic import httpx @@ -16,18 +16,18 @@ def __init__(self, response: httpx.Response, data: T): self.__rate_limit = extract_rate_limit(response) self.__data: T = data - super().__init__() + super(StreamResponse, self).__init__() @property def data(self) -> T: """Returns the encapsulated data of provided type.""" return self.__data - def rate_limit(self) -> RateLimitInfo | None: + def rate_limit(self) -> Optional[RateLimitInfo]: """Returns the ratelimit info of your API operation.""" return self.__rate_limit - def headers(self) -> dict[str, Any]: + def headers(self) -> Dict[str, Any]: """Returns the headers of the response.""" return dict(self.__headers) diff --git a/getstream/video/__init__.py b/getstream/video/__init__.py index e26cce83..cd6fc721 100644 --- a/getstream/video/__init__.py +++ b/getstream/video/__init__.py @@ -1,13 +1,14 @@ from __future__ import annotations +from typing import TYPE_CHECKING from dataclasses import dataclass -from typing import TYPE_CHECKING, Dict, Optional, Union +from typing import Optional, Dict, Union from getstream.models import CallResponse if TYPE_CHECKING: - from getstream.video.async_client import VideoClient as AsyncVideoClient from getstream.video.client import VideoClient + from getstream.video.async_client import VideoClient as AsyncVideoClient @dataclass @@ -18,16 +19,16 @@ class SRTCredentials: class BaseCall: def __init__( self, - client: VideoClient | AsyncVideoClient, + client: Union[VideoClient | AsyncVideoClient], call_type: str, - call_id: str | None = None, - custom_data: dict | None = None, + call_id: Optional[str] = None, + custom_data: Optional[Dict] = None, ): self.id = call_id self.call_type = call_type self.client = client self.custom_data = custom_data or {} - self._data: CallResponse | None = None + self._data: Optional[CallResponse] = None def _sync_from_response(self, data): if hasattr(data, "call") and isinstance(data.call, CallResponse): @@ -37,7 +38,7 @@ def _sync_from_response(self, data): def connect_openai( self, openai_api_key, agent_user_id, model="gpt-4o-realtime-preview" ): - from .openai import ConnectionManagerWrapper, get_openai_realtime_client + from .openai import get_openai_realtime_client, ConnectionManagerWrapper client = get_openai_realtime_client(openai_api_key, self.client.base_url or "") token = self.client.stream.create_token(agent_user_id) diff --git a/getstream/video/async_client.py b/getstream/video/async_client.py index 08ace8a0..859d0036 100644 --- a/getstream/video/async_client.py +++ b/getstream/video/async_client.py @@ -1,5 +1,5 @@ -from getstream.video.async_call import Call from getstream.video.async_rest_client import VideoRestClient +from getstream.video.async_call import Call class VideoClient(VideoRestClient): diff --git a/getstream/video/client.py b/getstream/video/client.py index e2bf03a0..46a5774a 100644 --- a/getstream/video/client.py +++ b/getstream/video/client.py @@ -1,5 +1,5 @@ -from getstream.video.call import Call from getstream.video.rest_client import VideoRestClient +from getstream.video.call import Call class VideoClient(VideoRestClient): From d107294455cd5a2430ec5b2b90b5e78984c12510 Mon Sep 17 00:00:00 2001 From: Aditya Agarwal Date: Thu, 3 Sep 2026 11:19:59 +0200 Subject: [PATCH 3/8] fix: [FEEDS-1830] drop unused typing imports in generated models --- getstream/models/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/getstream/models/__init__.py b/getstream/models/__init__.py index f3b8da95..b530fbf3 100644 --- a/getstream/models/__init__.py +++ b/getstream/models/__init__.py @@ -2,7 +2,7 @@ from dataclasses import dataclass from dataclasses import field as dc_field from datetime import datetime -from typing import Dict, Final, List, NewType, Optional +from typing import Final, NewType from dataclasses_json import DataClassJsonMixin from dataclasses_json import config as dc_config From 6c829852402da784f0201d030151431e08bb5cbe Mon Sep 17 00:00:00 2001 From: Aditya Agarwal Date: Thu, 3 Sep 2026 11:30:33 +0200 Subject: [PATCH 4/8] Revert "fix: [FEEDS-1830] drop unused typing imports in generated models" This reverts commit d107294455cd5a2430ec5b2b90b5e78984c12510. --- getstream/models/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/getstream/models/__init__.py b/getstream/models/__init__.py index b530fbf3..f3b8da95 100644 --- a/getstream/models/__init__.py +++ b/getstream/models/__init__.py @@ -2,7 +2,7 @@ from dataclasses import dataclass from dataclasses import field as dc_field from datetime import datetime -from typing import Final, NewType +from typing import Dict, Final, List, NewType, Optional from dataclasses_json import DataClassJsonMixin from dataclasses_json import config as dc_config From dd568473ee8857bd65db9d1d8d3479faceab138e Mon Sep 17 00:00:00 2001 From: Aditya Agarwal Date: Thu, 3 Sep 2026 11:31:03 +0200 Subject: [PATCH 5/8] fix: [FEEDS-1830] keep typing imports the model annotations resolve at runtime dataclasses_json evaluates the string annotations, so Dict/List/Optional are live names despite ruff reporting them as unused. Co-authored-by: Cursor --- getstream/models/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/getstream/models/__init__.py b/getstream/models/__init__.py index f3b8da95..25b3947b 100644 --- a/getstream/models/__init__.py +++ b/getstream/models/__init__.py @@ -2,7 +2,7 @@ from dataclasses import dataclass from dataclasses import field as dc_field from datetime import datetime -from typing import Dict, Final, List, NewType, Optional +from typing import Dict, Final, List, NewType, Optional # noqa: F401, UP035 from dataclasses_json import DataClassJsonMixin from dataclasses_json import config as dc_config From 36e30b860648731496896df48bad826f2fc27301 Mon Sep 17 00:00:00 2001 From: Aditya Agarwal Date: Thu, 3 Sep 2026 11:32:07 +0200 Subject: [PATCH 6/8] Revert "fix: [FEEDS-1830] keep typing imports the model annotations resolve at runtime" This reverts commit dd568473ee8857bd65db9d1d8d3479faceab138e. --- getstream/models/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/getstream/models/__init__.py b/getstream/models/__init__.py index 25b3947b..f3b8da95 100644 --- a/getstream/models/__init__.py +++ b/getstream/models/__init__.py @@ -2,7 +2,7 @@ from dataclasses import dataclass from dataclasses import field as dc_field from datetime import datetime -from typing import Dict, Final, List, NewType, Optional # noqa: F401, UP035 +from typing import Dict, Final, List, NewType, Optional from dataclasses_json import DataClassJsonMixin from dataclasses_json import config as dc_config From ccb66251a80e468b1709b156809ea69cd59f23f0 Mon Sep 17 00:00:00 2001 From: Aditya Agarwal Date: Thu, 3 Sep 2026 11:33:06 +0200 Subject: [PATCH 7/8] fix: [FEEDS-1830] scope F401/UP035 off the generated models module The generated annotations are strings that dataclasses_json resolves at runtime, so the typing imports are live. Keep the exception in ruff config rather than editing generated output. Co-authored-by: Cursor --- pyproject.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 54b88283..beeac5f9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -130,5 +130,10 @@ exclude = [ [tool.ruff.lint] ignore = ["F405", "F403"] +[tool.ruff.lint.per-file-ignores] +# dataclasses_json resolves the generated string annotations at runtime, so these +# typing names are live even though they read as unused. +"getstream/models/__init__.py" = ["F401", "UP035"] + [tool.hatch.metadata] allow-direct-references = true From 613f58eeb94389c40404522309c4f4066d8f0d8a Mon Sep 17 00:00:00 2001 From: Aditya Agarwal Date: Thu, 3 Sep 2026 12:16:05 +0200 Subject: [PATCH 8/8] style: apply ruff format to generated client code The generator's ruff format step did not land in the regen commit, so CI's `ruff format --check` flagged 17 generated files. Co-authored-by: Cursor --- getstream/chat/async_channel.py | 379 +- getstream/chat/async_rest_client.py | 2340 +- getstream/chat/channel.py | 379 +- getstream/chat/rest_client.py | 2308 +- getstream/common/async_rest_client.py | 1482 +- getstream/common/rest_client.py | 1422 +- getstream/feeds/feeds.py | 244 +- getstream/feeds/rest_client.py | 2604 +- getstream/models/__init__.py | 26484 ++++++++++++++++---- getstream/moderation/async_rest_client.py | 1165 +- getstream/moderation/rest_client.py | 1133 +- getstream/tests/test_webhook.py | 54 +- getstream/video/async_call.py | 547 +- getstream/video/async_rest_client.py | 1481 +- getstream/video/call.py | 487 +- getstream/video/rest_client.py | 1465 +- getstream/webhook.py | 53 +- 17 files changed, 35281 insertions(+), 8746 deletions(-) diff --git a/getstream/chat/async_channel.py b/getstream/chat/async_channel.py index 45ec72a9..c9a24e01 100644 --- a/getstream/chat/async_channel.py +++ b/getstream/chat/async_channel.py @@ -5,144 +5,427 @@ class Channel: - - def __init__(self, client, channel_type: str, channel_id: str = None, custom_data: Dict = None): + def __init__( + self, + client, + channel_type: str, + channel_id: str = None, + custom_data: Dict = None, + ): self.channel_id = channel_id self.channel_type = channel_type self.client = client self.custom_data = custom_data or {} def _sync_from_response(self, data): - if hasattr(data, 'channel') and isinstance(data.channel, ChannelResponse): + if hasattr(data, "channel") and isinstance(data.channel, ChannelResponse): self.custom_data = data.channel.custom - - @attach_channel_cid_async - async def delete(self, hard_delete: Optional[bool] = None) -> StreamResponse[DeleteChannelResponse]: - response = await self.client.delete_channel(type=self.channel_type, id=self.channel_id, hard_delete=hard_delete) + async def delete( + self, hard_delete: Optional[bool] = None + ) -> StreamResponse[DeleteChannelResponse]: + response = await self.client.delete_channel( + type=self.channel_type, id=self.channel_id, hard_delete=hard_delete + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def get(self, state: Optional[bool] = None, messages_limit: Optional[int] = None, members_limit: Optional[int] = None, watchers_limit: Optional[int] = None, messages_id_lt: Optional[str] = None, messages_id_lte: Optional[str] = None, messages_id_gt: Optional[str] = None, messages_id_gte: Optional[str] = None, messages_id_around: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[ChannelStateResponse]: - response = await self.client.get_channel(type=self.channel_type, id=self.channel_id, state=state, messages_limit=messages_limit, members_limit=members_limit, watchers_limit=watchers_limit, messages_id_lt=messages_id_lt, messages_id_lte=messages_id_lte, messages_id_gt=messages_id_gt, messages_id_gte=messages_id_gte, messages_id_around=messages_id_around, user_id=user_id) + async def get( + self, + state: Optional[bool] = None, + messages_limit: Optional[int] = None, + members_limit: Optional[int] = None, + watchers_limit: Optional[int] = None, + messages_id_lt: Optional[str] = None, + messages_id_lte: Optional[str] = None, + messages_id_gt: Optional[str] = None, + messages_id_gte: Optional[str] = None, + messages_id_around: Optional[str] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[ChannelStateResponse]: + response = await self.client.get_channel( + type=self.channel_type, + id=self.channel_id, + state=state, + messages_limit=messages_limit, + members_limit=members_limit, + watchers_limit=watchers_limit, + messages_id_lt=messages_id_lt, + messages_id_lte=messages_id_lte, + messages_id_gt=messages_id_gt, + messages_id_gte=messages_id_gte, + messages_id_around=messages_id_around, + user_id=user_id, + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def update_channel_partial(self, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateChannelPartialResponse]: - response = await self.client.update_channel_partial(type=self.channel_type, id=self.channel_id, user_id=user_id, unset=unset, set=set, user=user) + async def update_channel_partial( + self, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateChannelPartialResponse]: + response = await self.client.update_channel_partial( + type=self.channel_type, + id=self.channel_id, + user_id=user_id, + unset=unset, + set=set, + user=user, + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def update(self, accept_invite: Optional[bool] = None, cooldown: Optional[int] = None, hide_history: Optional[bool] = None, hide_history_before: Optional[datetime] = None, reject_invite: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, add_filter_tags: Optional[List[str]] = None, add_members: Optional[List[ChannelMemberRequest]] = None, add_moderators: Optional[List[str]] = None, assign_roles: Optional[List[ChannelMemberRequest]] = None, demote_moderators: Optional[List[str]] = None, invites: Optional[List[ChannelMemberRequest]] = None, remove_filter_tags: Optional[List[str]] = None, remove_members: Optional[List[str]] = None, data: Optional[ChannelInputRequest] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateChannelResponse]: - response = await self.client.update_channel(type=self.channel_type, id=self.channel_id, accept_invite=accept_invite, cooldown=cooldown, hide_history=hide_history, hide_history_before=hide_history_before, reject_invite=reject_invite, skip_push=skip_push, user_id=user_id, add_filter_tags=add_filter_tags, add_members=add_members, add_moderators=add_moderators, assign_roles=assign_roles, demote_moderators=demote_moderators, invites=invites, remove_filter_tags=remove_filter_tags, remove_members=remove_members, data=data, message=message, user=user) + async def update( + self, + accept_invite: Optional[bool] = None, + cooldown: Optional[int] = None, + hide_history: Optional[bool] = None, + hide_history_before: Optional[datetime] = None, + reject_invite: Optional[bool] = None, + skip_push: Optional[bool] = None, + user_id: Optional[str] = None, + add_filter_tags: Optional[List[str]] = None, + add_members: Optional[List[ChannelMemberRequest]] = None, + add_moderators: Optional[List[str]] = None, + assign_roles: Optional[List[ChannelMemberRequest]] = None, + demote_moderators: Optional[List[str]] = None, + invites: Optional[List[ChannelMemberRequest]] = None, + remove_filter_tags: Optional[List[str]] = None, + remove_members: Optional[List[str]] = None, + data: Optional[ChannelInputRequest] = None, + message: Optional[MessageRequest] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateChannelResponse]: + response = await self.client.update_channel( + type=self.channel_type, + id=self.channel_id, + accept_invite=accept_invite, + cooldown=cooldown, + hide_history=hide_history, + hide_history_before=hide_history_before, + reject_invite=reject_invite, + skip_push=skip_push, + user_id=user_id, + add_filter_tags=add_filter_tags, + add_members=add_members, + add_moderators=add_moderators, + assign_roles=assign_roles, + demote_moderators=demote_moderators, + invites=invites, + remove_filter_tags=remove_filter_tags, + remove_members=remove_members, + data=data, + message=message, + user=user, + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def delete_draft(self, parent_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[Response]: - response = await self.client.delete_draft(type=self.channel_type, id=self.channel_id, parent_id=parent_id, user_id=user_id) + async def delete_draft( + self, parent_id: Optional[str] = None, user_id: Optional[str] = None + ) -> StreamResponse[Response]: + response = await self.client.delete_draft( + type=self.channel_type, + id=self.channel_id, + parent_id=parent_id, + user_id=user_id, + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def get_draft(self, parent_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[GetDraftResponse]: - response = await self.client.get_draft(type=self.channel_type, id=self.channel_id, parent_id=parent_id, user_id=user_id) + async def get_draft( + self, parent_id: Optional[str] = None, user_id: Optional[str] = None + ) -> StreamResponse[GetDraftResponse]: + response = await self.client.get_draft( + type=self.channel_type, + id=self.channel_id, + parent_id=parent_id, + user_id=user_id, + ) self._sync_from_response(response.data) return response @attach_channel_cid_async async def send_event(self, event: EventRequest) -> StreamResponse[EventResponse]: - response = await self.client.send_event(type=self.channel_type, id=self.channel_id, event=event) + response = await self.client.send_event( + type=self.channel_type, id=self.channel_id, event=event + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def delete_channel_file(self, url: Optional[str] = None) -> StreamResponse[Response]: - response = await self.client.delete_channel_file(type=self.channel_type, id=self.channel_id, url=url) + async def delete_channel_file( + self, url: Optional[str] = None + ) -> StreamResponse[Response]: + response = await self.client.delete_channel_file( + type=self.channel_type, id=self.channel_id, url=url + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def upload_channel_file(self, file: Optional[str] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[UploadChannelFileResponse]: - response = await self.client.upload_channel_file(type=self.channel_type, id=self.channel_id, file=file, user=user) + async def upload_channel_file( + self, file: Optional[str] = None, user: Optional[OnlyUserID] = None + ) -> StreamResponse[UploadChannelFileResponse]: + response = await self.client.upload_channel_file( + type=self.channel_type, id=self.channel_id, file=file, user=user + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def hide(self, clear_history: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[HideChannelResponse]: - response = await self.client.hide_channel(type=self.channel_type, id=self.channel_id, clear_history=clear_history, user_id=user_id, user=user) + async def hide( + self, + clear_history: Optional[bool] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[HideChannelResponse]: + response = await self.client.hide_channel( + type=self.channel_type, + id=self.channel_id, + clear_history=clear_history, + user_id=user_id, + user=user, + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def delete_channel_image(self, url: Optional[str] = None) -> StreamResponse[Response]: - response = await self.client.delete_channel_image(type=self.channel_type, id=self.channel_id, url=url) + async def delete_channel_image( + self, url: Optional[str] = None + ) -> StreamResponse[Response]: + response = await self.client.delete_channel_image( + type=self.channel_type, id=self.channel_id, url=url + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def upload_channel_image(self, file: Optional[str] = None, upload_sizes: Optional[List[ImageSize]] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[UploadChannelResponse]: - response = await self.client.upload_channel_image(type=self.channel_type, id=self.channel_id, file=file, upload_sizes=upload_sizes, user=user) + async def upload_channel_image( + self, + file: Optional[str] = None, + upload_sizes: Optional[List[ImageSize]] = None, + user: Optional[OnlyUserID] = None, + ) -> StreamResponse[UploadChannelResponse]: + response = await self.client.upload_channel_image( + type=self.channel_type, + id=self.channel_id, + file=file, + upload_sizes=upload_sizes, + user=user, + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def update_member_partial(self, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None) -> StreamResponse[UpdateMemberPartialResponse]: - response = await self.client.update_member_partial(type=self.channel_type, id=self.channel_id, user_id=user_id, unset=unset, set=set) + async def update_member_partial( + self, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + ) -> StreamResponse[UpdateMemberPartialResponse]: + response = await self.client.update_member_partial( + type=self.channel_type, + id=self.channel_id, + user_id=user_id, + unset=unset, + set=set, + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def send_message(self, message: MessageRequest, force_moderation: Optional[bool] = None, include_channel_context: Optional[bool] = None, include_mentioned_members: Optional[bool] = None, keep_channel_hidden: Optional[bool] = None, pending: Optional[bool] = None, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, pending_message_metadata: Optional[Dict[str, str]] = None) -> StreamResponse[SendMessageResponse]: - response = await self.client.send_message(type=self.channel_type, id=self.channel_id, message=message, force_moderation=force_moderation, include_channel_context=include_channel_context, include_mentioned_members=include_mentioned_members, keep_channel_hidden=keep_channel_hidden, pending=pending, skip_enrich_url=skip_enrich_url, skip_push=skip_push, pending_message_metadata=pending_message_metadata) + async def send_message( + self, + message: MessageRequest, + force_moderation: Optional[bool] = None, + include_channel_context: Optional[bool] = None, + include_mentioned_members: Optional[bool] = None, + keep_channel_hidden: Optional[bool] = None, + pending: Optional[bool] = None, + skip_enrich_url: Optional[bool] = None, + skip_push: Optional[bool] = None, + pending_message_metadata: Optional[Dict[str, str]] = None, + ) -> StreamResponse[SendMessageResponse]: + response = await self.client.send_message( + type=self.channel_type, + id=self.channel_id, + message=message, + force_moderation=force_moderation, + include_channel_context=include_channel_context, + include_mentioned_members=include_mentioned_members, + keep_channel_hidden=keep_channel_hidden, + pending=pending, + skip_enrich_url=skip_enrich_url, + skip_push=skip_push, + pending_message_metadata=pending_message_metadata, + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def get_many_messages(self, ids: List[str], member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetManyMessagesResponse]: - response = await self.client.get_many_messages(type=self.channel_type, id=self.channel_id, ids=ids, member_custom_include=member_custom_include) + async def get_many_messages( + self, ids: List[str], member_custom_include: Optional[List[str]] = None + ) -> StreamResponse[GetManyMessagesResponse]: + response = await self.client.get_many_messages( + type=self.channel_type, + id=self.channel_id, + ids=ids, + member_custom_include=member_custom_include, + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def get_pinned_messages(self, limit: Optional[int] = None, offset: Optional[int] = None, id_gte: Optional[str] = None, id_gt: Optional[str] = None, id_lte: Optional[str] = None, id_lt: Optional[str] = None, pinned_at_after_or_equal: Optional[datetime] = None, pinned_at_after: Optional[datetime] = None, pinned_at_before_or_equal: Optional[datetime] = None, pinned_at_before: Optional[datetime] = None, id_around: Optional[str] = None, pinned_at_around: Optional[datetime] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetPinnedMessagesResponse]: - response = await self.client.get_pinned_messages(type=self.channel_type, id=self.channel_id, limit=limit, offset=offset, id_gte=id_gte, id_gt=id_gt, id_lte=id_lte, id_lt=id_lt, pinned_at_after_or_equal=pinned_at_after_or_equal, pinned_at_after=pinned_at_after, pinned_at_before_or_equal=pinned_at_before_or_equal, pinned_at_before=pinned_at_before, id_around=id_around, pinned_at_around=pinned_at_around, user_id=user_id, sort=sort, member_custom_include=member_custom_include) + async def get_pinned_messages( + self, + limit: Optional[int] = None, + offset: Optional[int] = None, + id_gte: Optional[str] = None, + id_gt: Optional[str] = None, + id_lte: Optional[str] = None, + id_lt: Optional[str] = None, + pinned_at_after_or_equal: Optional[datetime] = None, + pinned_at_after: Optional[datetime] = None, + pinned_at_before_or_equal: Optional[datetime] = None, + pinned_at_before: Optional[datetime] = None, + id_around: Optional[str] = None, + pinned_at_around: Optional[datetime] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + member_custom_include: Optional[List[str]] = None, + ) -> StreamResponse[GetPinnedMessagesResponse]: + response = await self.client.get_pinned_messages( + type=self.channel_type, + id=self.channel_id, + limit=limit, + offset=offset, + id_gte=id_gte, + id_gt=id_gt, + id_lte=id_lte, + id_lt=id_lt, + pinned_at_after_or_equal=pinned_at_after_or_equal, + pinned_at_after=pinned_at_after, + pinned_at_before_or_equal=pinned_at_before_or_equal, + pinned_at_before=pinned_at_before, + id_around=id_around, + pinned_at_around=pinned_at_around, + user_id=user_id, + sort=sort, + member_custom_include=member_custom_include, + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def get_or_create(self, hide_for_creator: Optional[bool] = None, state: Optional[bool] = None, thread_unread_counts: Optional[bool] = None, member_custom_include: Optional[List[str]] = None, data: Optional[ChannelInput] = None, members: Optional[PaginationParams] = None, messages: Optional[MessagePaginationParams] = None, watchers: Optional[PaginationParams] = None) -> StreamResponse[ChannelStateResponse]: - response = await self.client.get_or_create_channel(type=self.channel_type, id=self.channel_id, hide_for_creator=hide_for_creator, state=state, thread_unread_counts=thread_unread_counts, member_custom_include=member_custom_include, data=data, members=members, messages=messages, watchers=watchers) + async def get_or_create( + self, + hide_for_creator: Optional[bool] = None, + state: Optional[bool] = None, + thread_unread_counts: Optional[bool] = None, + member_custom_include: Optional[List[str]] = None, + data: Optional[ChannelInput] = None, + members: Optional[PaginationParams] = None, + messages: Optional[MessagePaginationParams] = None, + watchers: Optional[PaginationParams] = None, + ) -> StreamResponse[ChannelStateResponse]: + response = await self.client.get_or_create_channel( + type=self.channel_type, + id=self.channel_id, + hide_for_creator=hide_for_creator, + state=state, + thread_unread_counts=thread_unread_counts, + member_custom_include=member_custom_include, + data=data, + members=members, + messages=messages, + watchers=watchers, + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def mark_read(self, message_id: Optional[str] = None, thread_id: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[MarkReadResponse]: - response = await self.client.mark_read(type=self.channel_type, id=self.channel_id, message_id=message_id, thread_id=thread_id, user_id=user_id, user=user) + async def mark_read( + self, + message_id: Optional[str] = None, + thread_id: Optional[str] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[MarkReadResponse]: + response = await self.client.mark_read( + type=self.channel_type, + id=self.channel_id, + message_id=message_id, + thread_id=thread_id, + user_id=user_id, + user=user, + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def show(self, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[ShowChannelResponse]: - response = await self.client.show_channel(type=self.channel_type, id=self.channel_id, user_id=user_id, user=user) + async def show( + self, user_id: Optional[str] = None, user: Optional[UserRequest] = None + ) -> StreamResponse[ShowChannelResponse]: + response = await self.client.show_channel( + type=self.channel_type, id=self.channel_id, user_id=user_id, user=user + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def truncate(self, hard_delete: Optional[bool] = None, skip_push: Optional[bool] = None, truncated_at: Optional[datetime] = None, user_id: Optional[str] = None, member_ids: Optional[List[str]] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[TruncateChannelResponse]: - response = await self.client.truncate_channel(type=self.channel_type, id=self.channel_id, hard_delete=hard_delete, skip_push=skip_push, truncated_at=truncated_at, user_id=user_id, member_ids=member_ids, message=message, user=user) + async def truncate( + self, + hard_delete: Optional[bool] = None, + skip_push: Optional[bool] = None, + truncated_at: Optional[datetime] = None, + user_id: Optional[str] = None, + member_ids: Optional[List[str]] = None, + message: Optional[MessageRequest] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[TruncateChannelResponse]: + response = await self.client.truncate_channel( + type=self.channel_type, + id=self.channel_id, + hard_delete=hard_delete, + skip_push=skip_push, + truncated_at=truncated_at, + user_id=user_id, + member_ids=member_ids, + message=message, + user=user, + ) self._sync_from_response(response.data) return response @attach_channel_cid_async - async def mark_unread(self, message_id: Optional[str] = None, message_timestamp: Optional[datetime] = None, thread_id: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[Response]: - response = await self.client.mark_unread(type=self.channel_type, id=self.channel_id, message_id=message_id, message_timestamp=message_timestamp, thread_id=thread_id, user_id=user_id, user=user) + async def mark_unread( + self, + message_id: Optional[str] = None, + message_timestamp: Optional[datetime] = None, + thread_id: Optional[str] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[Response]: + response = await self.client.mark_unread( + type=self.channel_type, + id=self.channel_id, + message_id=message_id, + message_timestamp=message_timestamp, + thread_id=thread_id, + user_id=user_id, + user=user, + ) self._sync_from_response(response.data) return response - - create = get_or_create \ No newline at end of file + create = get_or_create diff --git a/getstream/chat/async_rest_client.py b/getstream/chat/async_rest_client.py index 54784fb7..1162e6a6 100644 --- a/getstream/chat/async_rest_client.py +++ b/getstream/chat/async_rest_client.py @@ -1,4 +1,3 @@ - # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import AsyncBaseClient from getstream.common import telemetry @@ -8,8 +7,14 @@ class ChatRestClient(AsyncBaseClient): - - def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): + def __init__( + self, + api_key: str, + base_url: str, + timeout: float, + token: str, + user_agent: str = None, + ): """ Initializes ChatClient with BaseClient instance :param api_key: A string representing the client's API key @@ -26,688 +31,2097 @@ def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user user_agent=user_agent, ) - @telemetry.operation_name("getstream.api.chat.create_campaign") - async def create_campaign(self, sender_id: str, message_template: CampaignMessageTemplate, create_channels: Optional[bool] = None, description: Optional[str] = None, id: Optional[str] = None, name: Optional[str] = None, sender_mode: Optional[str] = None, sender_visibility: Optional[str] = None, show_channels: Optional[bool] = None, skip_push: Optional[bool] = None, skip_webhook: Optional[bool] = None, segment_ids: Optional[List[str]] = None, user_ids: Optional[List[str]] = None, channel_template: Optional[CampaignChannelTemplate] = None) -> StreamResponse[CreateCampaignResponse]: - json = CreateCampaignRequest(sender_id=sender_id, message_template=message_template, create_channels=create_channels, description=description, id=id, name=name, sender_mode=sender_mode, sender_visibility=sender_visibility, show_channels=show_channels, skip_push=skip_push, skip_webhook=skip_webhook, segment_ids=segment_ids, user_ids=user_ids, channel_template=channel_template).to_dict() - return await self.post("/api/v2/chat/campaigns", CreateCampaignResponse, json=json) - + async def create_campaign( + self, + sender_id: str, + message_template: CampaignMessageTemplate, + create_channels: Optional[bool] = None, + description: Optional[str] = None, + id: Optional[str] = None, + name: Optional[str] = None, + sender_mode: Optional[str] = None, + sender_visibility: Optional[str] = None, + show_channels: Optional[bool] = None, + skip_push: Optional[bool] = None, + skip_webhook: Optional[bool] = None, + segment_ids: Optional[List[str]] = None, + user_ids: Optional[List[str]] = None, + channel_template: Optional[CampaignChannelTemplate] = None, + ) -> StreamResponse[CreateCampaignResponse]: + json = CreateCampaignRequest( + sender_id=sender_id, + message_template=message_template, + create_channels=create_channels, + description=description, + id=id, + name=name, + sender_mode=sender_mode, + sender_visibility=sender_visibility, + show_channels=show_channels, + skip_push=skip_push, + skip_webhook=skip_webhook, + segment_ids=segment_ids, + user_ids=user_ids, + channel_template=channel_template, + ).to_dict() + return await self.post( + "/api/v2/chat/campaigns", CreateCampaignResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.query_campaigns") - async def query_campaigns(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_limit: Optional[int] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCampaignsResponse]: - json = QueryCampaignsRequest(limit=limit, next=next, prev=prev, user_limit=user_limit, sort=sort, filter=filter).to_dict() - return await self.post("/api/v2/chat/campaigns/query", QueryCampaignsResponse, json=json) - + async def query_campaigns( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_limit: Optional[int] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCampaignsResponse]: + json = QueryCampaignsRequest( + limit=limit, + next=next, + prev=prev, + user_limit=user_limit, + sort=sort, + filter=filter, + ).to_dict() + return await self.post( + "/api/v2/chat/campaigns/query", QueryCampaignsResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.delete_campaign") async def delete_campaign(self, id: str) -> StreamResponse[DeleteCampaignResponse]: path_params = { - "id": id, + "id": id, } - return await self.delete("/api/v2/chat/campaigns/{id}", DeleteCampaignResponse, path_params=path_params) - + return await self.delete( + "/api/v2/chat/campaigns/{id}", + DeleteCampaignResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.get_campaign") - async def get_campaign(self, id: str, prev: Optional[str] = None, next: Optional[str] = None, limit: Optional[int] = None) -> StreamResponse[GetCampaignResponse]: + async def get_campaign( + self, + id: str, + prev: Optional[str] = None, + next: Optional[str] = None, + limit: Optional[int] = None, + ) -> StreamResponse[GetCampaignResponse]: query_params = build_query_param(prev=prev, next=next, limit=limit) path_params = { - "id": id, + "id": id, } - return await self.get("/api/v2/chat/campaigns/{id}", GetCampaignResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/chat/campaigns/{id}", + GetCampaignResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.update_campaign") - async def update_campaign(self, id: str, sender_id: str, message_template: CampaignMessageTemplate, create_channels: Optional[bool] = None, description: Optional[str] = None, id_: Optional[str] = None, name: Optional[str] = None, sender_mode: Optional[str] = None, sender_visibility: Optional[str] = None, show_channels: Optional[bool] = None, skip_push: Optional[bool] = None, skip_webhook: Optional[bool] = None, segment_ids: Optional[List[str]] = None, user_ids: Optional[List[str]] = None, channel_template: Optional[CampaignChannelTemplate] = None) -> StreamResponse[CampaignResponse]: - path_params = { - "id": id, - } - json = UpdateCampaignRequest(sender_id=sender_id, message_template=message_template, create_channels=create_channels, description=description, id=id_, name=name, sender_mode=sender_mode, sender_visibility=sender_visibility, show_channels=show_channels, skip_push=skip_push, skip_webhook=skip_webhook, segment_ids=segment_ids, user_ids=user_ids, channel_template=channel_template).to_dict() - return await self.put("/api/v2/chat/campaigns/{id}", CampaignResponse, path_params=path_params, json=json) - + async def update_campaign( + self, + id: str, + sender_id: str, + message_template: CampaignMessageTemplate, + create_channels: Optional[bool] = None, + description: Optional[str] = None, + id_: Optional[str] = None, + name: Optional[str] = None, + sender_mode: Optional[str] = None, + sender_visibility: Optional[str] = None, + show_channels: Optional[bool] = None, + skip_push: Optional[bool] = None, + skip_webhook: Optional[bool] = None, + segment_ids: Optional[List[str]] = None, + user_ids: Optional[List[str]] = None, + channel_template: Optional[CampaignChannelTemplate] = None, + ) -> StreamResponse[CampaignResponse]: + path_params = { + "id": id, + } + json = UpdateCampaignRequest( + sender_id=sender_id, + message_template=message_template, + create_channels=create_channels, + description=description, + id=id_, + name=name, + sender_mode=sender_mode, + sender_visibility=sender_visibility, + show_channels=show_channels, + skip_push=skip_push, + skip_webhook=skip_webhook, + segment_ids=segment_ids, + user_ids=user_ids, + channel_template=channel_template, + ).to_dict() + return await self.put( + "/api/v2/chat/campaigns/{id}", + CampaignResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.start_campaign") - async def start_campaign(self, id: str, scheduled_for: Optional[datetime] = None, stop_at: Optional[datetime] = None) -> StreamResponse[StartCampaignResponse]: - path_params = { - "id": id, - } - json = StartCampaignRequest(scheduled_for=scheduled_for, stop_at=stop_at).to_dict() - return await self.post("/api/v2/chat/campaigns/{id}/start", StartCampaignResponse, path_params=path_params, json=json) - + async def start_campaign( + self, + id: str, + scheduled_for: Optional[datetime] = None, + stop_at: Optional[datetime] = None, + ) -> StreamResponse[StartCampaignResponse]: + path_params = { + "id": id, + } + json = StartCampaignRequest( + scheduled_for=scheduled_for, stop_at=stop_at + ).to_dict() + return await self.post( + "/api/v2/chat/campaigns/{id}/start", + StartCampaignResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.stop_campaign") - async def stop_campaign(self, id: str, ) -> StreamResponse[CampaignResponse]: + async def stop_campaign( + self, + id: str, + ) -> StreamResponse[CampaignResponse]: path_params = { - "id": id, + "id": id, } json = StopCampaignRequest().to_dict() - return await self.post("/api/v2/chat/campaigns/{id}/stop", CampaignResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/chat/campaigns/{id}/stop", + CampaignResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.query_channels") - async def query_channels(self, limit: Optional[int] = None, member_limit: Optional[int] = None, message_limit: Optional[int] = None, offset: Optional[int] = None, predefined_filter: Optional[str] = None, state: Optional[bool] = None, user_id: Optional[str] = None, member_custom_include: Optional[List[str]] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None, filter_values: Optional[Dict[str, object]] = None, sort_values: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryChannelsResponse]: - json = QueryChannelsRequest(limit=limit, member_limit=member_limit, message_limit=message_limit, offset=offset, predefined_filter=predefined_filter, state=state, user_id=user_id, member_custom_include=member_custom_include, sort=sort, filter_conditions=filter_conditions, filter_values=filter_values, sort_values=sort_values, user=user).to_dict() - return await self.post("/api/v2/chat/channels", QueryChannelsResponse, json=json) - + async def query_channels( + self, + limit: Optional[int] = None, + member_limit: Optional[int] = None, + message_limit: Optional[int] = None, + offset: Optional[int] = None, + predefined_filter: Optional[str] = None, + state: Optional[bool] = None, + user_id: Optional[str] = None, + member_custom_include: Optional[List[str]] = None, + sort: Optional[List[SortParamRequest]] = None, + filter_conditions: Optional[Dict[str, object]] = None, + filter_values: Optional[Dict[str, object]] = None, + sort_values: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryChannelsResponse]: + json = QueryChannelsRequest( + limit=limit, + member_limit=member_limit, + message_limit=message_limit, + offset=offset, + predefined_filter=predefined_filter, + state=state, + user_id=user_id, + member_custom_include=member_custom_include, + sort=sort, + filter_conditions=filter_conditions, + filter_values=filter_values, + sort_values=sort_values, + user=user, + ).to_dict() + return await self.post( + "/api/v2/chat/channels", QueryChannelsResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.channel_batch_update") - async def channel_batch_update(self, operation: str, filter: Dict[str, object], custom_unset: Optional[List[str]] = None, members: Optional[List[ChannelBatchMemberRequest]] = None, custom_set: Optional[Dict[str, object]] = None, data: Optional[ChannelDataUpdate] = None) -> StreamResponse[ChannelBatchUpdateResponse]: - json = ChannelBatchUpdateRequest(operation=operation, filter=filter, custom_unset=custom_unset, members=members, custom_set=custom_set, data=data).to_dict() - return await self.put("/api/v2/chat/channels/batch", ChannelBatchUpdateResponse, json=json) - + async def channel_batch_update( + self, + operation: str, + filter: Dict[str, object], + custom_unset: Optional[List[str]] = None, + members: Optional[List[ChannelBatchMemberRequest]] = None, + custom_set: Optional[Dict[str, object]] = None, + data: Optional[ChannelDataUpdate] = None, + ) -> StreamResponse[ChannelBatchUpdateResponse]: + json = ChannelBatchUpdateRequest( + operation=operation, + filter=filter, + custom_unset=custom_unset, + members=members, + custom_set=custom_set, + data=data, + ).to_dict() + return await self.put( + "/api/v2/chat/channels/batch", ChannelBatchUpdateResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.delete_channels") - async def delete_channels(self, cids: List[str], hard_delete: Optional[bool] = None) -> StreamResponse[DeleteChannelsResponse]: + async def delete_channels( + self, cids: List[str], hard_delete: Optional[bool] = None + ) -> StreamResponse[DeleteChannelsResponse]: json = DeleteChannelsRequest(cids=cids, hard_delete=hard_delete).to_dict() - return await self.post("/api/v2/chat/channels/delete", DeleteChannelsResponse, json=json) - + return await self.post( + "/api/v2/chat/channels/delete", DeleteChannelsResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.mark_delivered") - async def mark_delivered(self, user_id: Optional[str] = None, latest_delivered_messages: Optional[List[DeliveredMessagePayload]] = None) -> StreamResponse[MarkDeliveredResponse]: + async def mark_delivered( + self, + user_id: Optional[str] = None, + latest_delivered_messages: Optional[List[DeliveredMessagePayload]] = None, + ) -> StreamResponse[MarkDeliveredResponse]: query_params = build_query_param(user_id=user_id) - json = MarkDeliveredRequest(latest_delivered_messages=latest_delivered_messages).to_dict() - return await self.post("/api/v2/chat/channels/delivered", MarkDeliveredResponse, query_params=query_params, json=json) - + json = MarkDeliveredRequest( + latest_delivered_messages=latest_delivered_messages + ).to_dict() + return await self.post( + "/api/v2/chat/channels/delivered", + MarkDeliveredResponse, + query_params=query_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.grouped_query_channels") - async def grouped_query_channels(self, limit: Optional[int] = None, user_id: Optional[str] = None, groups: Optional[Dict[str, GroupedChannelsGroupRequest]] = None, user: Optional[UserRequest] = None) -> StreamResponse[GroupedQueryChannelsResponse]: - json = GroupedQueryChannelsRequest(limit=limit, user_id=user_id, groups=groups, user=user).to_dict() - return await self.post("/api/v2/chat/channels/grouped", GroupedQueryChannelsResponse, json=json) - + async def grouped_query_channels( + self, + limit: Optional[int] = None, + user_id: Optional[str] = None, + groups: Optional[Dict[str, GroupedChannelsGroupRequest]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[GroupedQueryChannelsResponse]: + json = GroupedQueryChannelsRequest( + limit=limit, user_id=user_id, groups=groups, user=user + ).to_dict() + return await self.post( + "/api/v2/chat/channels/grouped", GroupedQueryChannelsResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.mark_channels_read") - async def mark_channels_read(self, user_id: Optional[str] = None, read_by_channel: Optional[Dict[str, str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[MarkReadResponse]: - json = MarkChannelsReadRequest(user_id=user_id, read_by_channel=read_by_channel, user=user).to_dict() - return await self.post("/api/v2/chat/channels/read", MarkReadResponse, json=json) - + async def mark_channels_read( + self, + user_id: Optional[str] = None, + read_by_channel: Optional[Dict[str, str]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[MarkReadResponse]: + json = MarkChannelsReadRequest( + user_id=user_id, read_by_channel=read_by_channel, user=user + ).to_dict() + return await self.post( + "/api/v2/chat/channels/read", MarkReadResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.get_or_create_distinct_channel") - async def get_or_create_distinct_channel(self, type: str, hide_for_creator: Optional[bool] = None, state: Optional[bool] = None, thread_unread_counts: Optional[bool] = None, member_custom_include: Optional[List[str]] = None, data: Optional[ChannelInput] = None, members: Optional[PaginationParams] = None, messages: Optional[MessagePaginationParams] = None, watchers: Optional[PaginationParams] = None) -> StreamResponse[ChannelStateResponse]: - path_params = { - "type": type, - } - json = ChannelGetOrCreateRequest(hide_for_creator=hide_for_creator, state=state, thread_unread_counts=thread_unread_counts, member_custom_include=member_custom_include, data=data, members=members, messages=messages, watchers=watchers).to_dict() - return await self.post("/api/v2/chat/channels/{type}/query", ChannelStateResponse, path_params=path_params, json=json) - + async def get_or_create_distinct_channel( + self, + type: str, + hide_for_creator: Optional[bool] = None, + state: Optional[bool] = None, + thread_unread_counts: Optional[bool] = None, + member_custom_include: Optional[List[str]] = None, + data: Optional[ChannelInput] = None, + members: Optional[PaginationParams] = None, + messages: Optional[MessagePaginationParams] = None, + watchers: Optional[PaginationParams] = None, + ) -> StreamResponse[ChannelStateResponse]: + path_params = { + "type": type, + } + json = ChannelGetOrCreateRequest( + hide_for_creator=hide_for_creator, + state=state, + thread_unread_counts=thread_unread_counts, + member_custom_include=member_custom_include, + data=data, + members=members, + messages=messages, + watchers=watchers, + ).to_dict() + return await self.post( + "/api/v2/chat/channels/{type}/query", + ChannelStateResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.delete_channel") - async def delete_channel(self, type: str, id: str, hard_delete: Optional[bool] = None) -> StreamResponse[DeleteChannelResponse]: + async def delete_channel( + self, type: str, id: str, hard_delete: Optional[bool] = None + ) -> StreamResponse[DeleteChannelResponse]: query_params = build_query_param(hard_delete=hard_delete) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return await self.delete("/api/v2/chat/channels/{type}/{id}", DeleteChannelResponse, query_params=query_params, path_params=path_params) - + return await self.delete( + "/api/v2/chat/channels/{type}/{id}", + DeleteChannelResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.get_channel") - async def get_channel(self, type: str, id: str, state: Optional[bool] = None, messages_limit: Optional[int] = None, members_limit: Optional[int] = None, watchers_limit: Optional[int] = None, messages_id_lt: Optional[str] = None, messages_id_lte: Optional[str] = None, messages_id_gt: Optional[str] = None, messages_id_gte: Optional[str] = None, messages_id_around: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[ChannelStateResponse]: - query_params = build_query_param(state=state, messages_limit=messages_limit, members_limit=members_limit, watchers_limit=watchers_limit, messages_id_lt=messages_id_lt, messages_id_lte=messages_id_lte, messages_id_gt=messages_id_gt, messages_id_gte=messages_id_gte, messages_id_around=messages_id_around, user_id=user_id) + async def get_channel( + self, + type: str, + id: str, + state: Optional[bool] = None, + messages_limit: Optional[int] = None, + members_limit: Optional[int] = None, + watchers_limit: Optional[int] = None, + messages_id_lt: Optional[str] = None, + messages_id_lte: Optional[str] = None, + messages_id_gt: Optional[str] = None, + messages_id_gte: Optional[str] = None, + messages_id_around: Optional[str] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[ChannelStateResponse]: + query_params = build_query_param( + state=state, + messages_limit=messages_limit, + members_limit=members_limit, + watchers_limit=watchers_limit, + messages_id_lt=messages_id_lt, + messages_id_lte=messages_id_lte, + messages_id_gt=messages_id_gt, + messages_id_gte=messages_id_gte, + messages_id_around=messages_id_around, + user_id=user_id, + ) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return await self.get("/api/v2/chat/channels/{type}/{id}", ChannelStateResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/chat/channels/{type}/{id}", + ChannelStateResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.update_channel_partial") - async def update_channel_partial(self, type: str, id: str, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateChannelPartialResponse]: - path_params = { - "type": type, "id": id, - } - json = UpdateChannelPartialRequest(user_id=user_id, unset=unset, set=set, user=user).to_dict() - return await self.patch("/api/v2/chat/channels/{type}/{id}", UpdateChannelPartialResponse, path_params=path_params, json=json) - + async def update_channel_partial( + self, + type: str, + id: str, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateChannelPartialResponse]: + path_params = { + "type": type, + "id": id, + } + json = UpdateChannelPartialRequest( + user_id=user_id, unset=unset, set=set, user=user + ).to_dict() + return await self.patch( + "/api/v2/chat/channels/{type}/{id}", + UpdateChannelPartialResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.update_channel") - async def update_channel(self, type: str, id: str, accept_invite: Optional[bool] = None, cooldown: Optional[int] = None, hide_history: Optional[bool] = None, hide_history_before: Optional[datetime] = None, reject_invite: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, add_filter_tags: Optional[List[str]] = None, add_members: Optional[List[ChannelMemberRequest]] = None, add_moderators: Optional[List[str]] = None, assign_roles: Optional[List[ChannelMemberRequest]] = None, demote_moderators: Optional[List[str]] = None, invites: Optional[List[ChannelMemberRequest]] = None, remove_filter_tags: Optional[List[str]] = None, remove_members: Optional[List[str]] = None, data: Optional[ChannelInputRequest] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateChannelResponse]: - path_params = { - "type": type, "id": id, - } - json = UpdateChannelRequest(accept_invite=accept_invite, cooldown=cooldown, hide_history=hide_history, hide_history_before=hide_history_before, reject_invite=reject_invite, skip_push=skip_push, user_id=user_id, add_filter_tags=add_filter_tags, add_members=add_members, add_moderators=add_moderators, assign_roles=assign_roles, demote_moderators=demote_moderators, invites=invites, remove_filter_tags=remove_filter_tags, remove_members=remove_members, data=data, message=message, user=user).to_dict() - return await self.post("/api/v2/chat/channels/{type}/{id}", UpdateChannelResponse, path_params=path_params, json=json) - + async def update_channel( + self, + type: str, + id: str, + accept_invite: Optional[bool] = None, + cooldown: Optional[int] = None, + hide_history: Optional[bool] = None, + hide_history_before: Optional[datetime] = None, + reject_invite: Optional[bool] = None, + skip_push: Optional[bool] = None, + user_id: Optional[str] = None, + add_filter_tags: Optional[List[str]] = None, + add_members: Optional[List[ChannelMemberRequest]] = None, + add_moderators: Optional[List[str]] = None, + assign_roles: Optional[List[ChannelMemberRequest]] = None, + demote_moderators: Optional[List[str]] = None, + invites: Optional[List[ChannelMemberRequest]] = None, + remove_filter_tags: Optional[List[str]] = None, + remove_members: Optional[List[str]] = None, + data: Optional[ChannelInputRequest] = None, + message: Optional[MessageRequest] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateChannelResponse]: + path_params = { + "type": type, + "id": id, + } + json = UpdateChannelRequest( + accept_invite=accept_invite, + cooldown=cooldown, + hide_history=hide_history, + hide_history_before=hide_history_before, + reject_invite=reject_invite, + skip_push=skip_push, + user_id=user_id, + add_filter_tags=add_filter_tags, + add_members=add_members, + add_moderators=add_moderators, + assign_roles=assign_roles, + demote_moderators=demote_moderators, + invites=invites, + remove_filter_tags=remove_filter_tags, + remove_members=remove_members, + data=data, + message=message, + user=user, + ).to_dict() + return await self.post( + "/api/v2/chat/channels/{type}/{id}", + UpdateChannelResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.delete_draft") - async def delete_draft(self, type: str, id: str, parent_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[Response]: + async def delete_draft( + self, + type: str, + id: str, + parent_id: Optional[str] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[Response]: query_params = build_query_param(parent_id=parent_id, user_id=user_id) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return await self.delete("/api/v2/chat/channels/{type}/{id}/draft", Response, query_params=query_params, path_params=path_params) - + return await self.delete( + "/api/v2/chat/channels/{type}/{id}/draft", + Response, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.get_draft") - async def get_draft(self, type: str, id: str, parent_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[GetDraftResponse]: + async def get_draft( + self, + type: str, + id: str, + parent_id: Optional[str] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[GetDraftResponse]: query_params = build_query_param(parent_id=parent_id, user_id=user_id) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return await self.get("/api/v2/chat/channels/{type}/{id}/draft", GetDraftResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/chat/channels/{type}/{id}/draft", + GetDraftResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.send_event") - async def send_event(self, type: str, id: str, event: EventRequest) -> StreamResponse[EventResponse]: + async def send_event( + self, type: str, id: str, event: EventRequest + ) -> StreamResponse[EventResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = SendEventRequest(event=event).to_dict() - return await self.post("/api/v2/chat/channels/{type}/{id}/event", EventResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/chat/channels/{type}/{id}/event", + EventResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.delete_channel_file") - async def delete_channel_file(self, type: str, id: str, url: Optional[str] = None) -> StreamResponse[Response]: + async def delete_channel_file( + self, type: str, id: str, url: Optional[str] = None + ) -> StreamResponse[Response]: query_params = build_query_param(url=url) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return await self.delete("/api/v2/chat/channels/{type}/{id}/file", Response, query_params=query_params, path_params=path_params) - + return await self.delete( + "/api/v2/chat/channels/{type}/{id}/file", + Response, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.upload_channel_file") - async def upload_channel_file(self, type: str, id: str, file: Optional[str] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[UploadChannelFileResponse]: + async def upload_channel_file( + self, + type: str, + id: str, + file: Optional[str] = None, + user: Optional[OnlyUserID] = None, + ) -> StreamResponse[UploadChannelFileResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = UploadChannelFileRequest(file=file, user=user).to_dict() - return await self.post("/api/v2/chat/channels/{type}/{id}/file", UploadChannelFileResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/chat/channels/{type}/{id}/file", + UploadChannelFileResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.hide_channel") - async def hide_channel(self, type: str, id: str, clear_history: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[HideChannelResponse]: - path_params = { - "type": type, "id": id, - } - json = HideChannelRequest(clear_history=clear_history, user_id=user_id, user=user).to_dict() - return await self.post("/api/v2/chat/channels/{type}/{id}/hide", HideChannelResponse, path_params=path_params, json=json) - + async def hide_channel( + self, + type: str, + id: str, + clear_history: Optional[bool] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[HideChannelResponse]: + path_params = { + "type": type, + "id": id, + } + json = HideChannelRequest( + clear_history=clear_history, user_id=user_id, user=user + ).to_dict() + return await self.post( + "/api/v2/chat/channels/{type}/{id}/hide", + HideChannelResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.delete_channel_image") - async def delete_channel_image(self, type: str, id: str, url: Optional[str] = None) -> StreamResponse[Response]: + async def delete_channel_image( + self, type: str, id: str, url: Optional[str] = None + ) -> StreamResponse[Response]: query_params = build_query_param(url=url) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return await self.delete("/api/v2/chat/channels/{type}/{id}/image", Response, query_params=query_params, path_params=path_params) - + return await self.delete( + "/api/v2/chat/channels/{type}/{id}/image", + Response, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.upload_channel_image") - async def upload_channel_image(self, type: str, id: str, file: Optional[str] = None, upload_sizes: Optional[List[ImageSize]] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[UploadChannelResponse]: - path_params = { - "type": type, "id": id, - } - json = UploadChannelRequest(file=file, upload_sizes=upload_sizes, user=user).to_dict() - return await self.post("/api/v2/chat/channels/{type}/{id}/image", UploadChannelResponse, path_params=path_params, json=json) - + async def upload_channel_image( + self, + type: str, + id: str, + file: Optional[str] = None, + upload_sizes: Optional[List[ImageSize]] = None, + user: Optional[OnlyUserID] = None, + ) -> StreamResponse[UploadChannelResponse]: + path_params = { + "type": type, + "id": id, + } + json = UploadChannelRequest( + file=file, upload_sizes=upload_sizes, user=user + ).to_dict() + return await self.post( + "/api/v2/chat/channels/{type}/{id}/image", + UploadChannelResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.update_member_partial") - async def update_member_partial(self, type: str, id: str, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None) -> StreamResponse[UpdateMemberPartialResponse]: + async def update_member_partial( + self, + type: str, + id: str, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + ) -> StreamResponse[UpdateMemberPartialResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = UpdateMemberPartialRequest(unset=unset, set=set).to_dict() - return await self.patch("/api/v2/chat/channels/{type}/{id}/member", UpdateMemberPartialResponse, query_params=query_params, path_params=path_params, json=json) - + return await self.patch( + "/api/v2/chat/channels/{type}/{id}/member", + UpdateMemberPartialResponse, + query_params=query_params, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.send_message") - async def send_message(self, type: str, id: str, message: MessageRequest, force_moderation: Optional[bool] = None, include_channel_context: Optional[bool] = None, include_mentioned_members: Optional[bool] = None, keep_channel_hidden: Optional[bool] = None, pending: Optional[bool] = None, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, pending_message_metadata: Optional[Dict[str, str]] = None) -> StreamResponse[SendMessageResponse]: - path_params = { - "type": type, "id": id, - } - json = SendMessageRequest(message=message, force_moderation=force_moderation, include_channel_context=include_channel_context, include_mentioned_members=include_mentioned_members, keep_channel_hidden=keep_channel_hidden, pending=pending, skip_enrich_url=skip_enrich_url, skip_push=skip_push, pending_message_metadata=pending_message_metadata).to_dict() - return await self.post("/api/v2/chat/channels/{type}/{id}/message", SendMessageResponse, path_params=path_params, json=json) - + async def send_message( + self, + type: str, + id: str, + message: MessageRequest, + force_moderation: Optional[bool] = None, + include_channel_context: Optional[bool] = None, + include_mentioned_members: Optional[bool] = None, + keep_channel_hidden: Optional[bool] = None, + pending: Optional[bool] = None, + skip_enrich_url: Optional[bool] = None, + skip_push: Optional[bool] = None, + pending_message_metadata: Optional[Dict[str, str]] = None, + ) -> StreamResponse[SendMessageResponse]: + path_params = { + "type": type, + "id": id, + } + json = SendMessageRequest( + message=message, + force_moderation=force_moderation, + include_channel_context=include_channel_context, + include_mentioned_members=include_mentioned_members, + keep_channel_hidden=keep_channel_hidden, + pending=pending, + skip_enrich_url=skip_enrich_url, + skip_push=skip_push, + pending_message_metadata=pending_message_metadata, + ).to_dict() + return await self.post( + "/api/v2/chat/channels/{type}/{id}/message", + SendMessageResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.get_many_messages") - async def get_many_messages(self, type: str, id: str, ids: List[str], member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetManyMessagesResponse]: - query_params = build_query_param(ids=ids, member_custom_include=member_custom_include) + async def get_many_messages( + self, + type: str, + id: str, + ids: List[str], + member_custom_include: Optional[List[str]] = None, + ) -> StreamResponse[GetManyMessagesResponse]: + query_params = build_query_param( + ids=ids, member_custom_include=member_custom_include + ) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return await self.get("/api/v2/chat/channels/{type}/{id}/messages", GetManyMessagesResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/chat/channels/{type}/{id}/messages", + GetManyMessagesResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.get_pinned_messages") - async def get_pinned_messages(self, type: str, id: str, limit: Optional[int] = None, offset: Optional[int] = None, id_gte: Optional[str] = None, id_gt: Optional[str] = None, id_lte: Optional[str] = None, id_lt: Optional[str] = None, pinned_at_after_or_equal: Optional[datetime] = None, pinned_at_after: Optional[datetime] = None, pinned_at_before_or_equal: Optional[datetime] = None, pinned_at_before: Optional[datetime] = None, id_around: Optional[str] = None, pinned_at_around: Optional[datetime] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetPinnedMessagesResponse]: - query_params = build_query_param(limit=limit, offset=offset, id_gte=id_gte, id_gt=id_gt, id_lte=id_lte, id_lt=id_lt, pinned_at_after_or_equal=pinned_at_after_or_equal, pinned_at_after=pinned_at_after, pinned_at_before_or_equal=pinned_at_before_or_equal, pinned_at_before=pinned_at_before, id_around=id_around, pinned_at_around=pinned_at_around, user_id=user_id, sort=sort, member_custom_include=member_custom_include) + async def get_pinned_messages( + self, + type: str, + id: str, + limit: Optional[int] = None, + offset: Optional[int] = None, + id_gte: Optional[str] = None, + id_gt: Optional[str] = None, + id_lte: Optional[str] = None, + id_lt: Optional[str] = None, + pinned_at_after_or_equal: Optional[datetime] = None, + pinned_at_after: Optional[datetime] = None, + pinned_at_before_or_equal: Optional[datetime] = None, + pinned_at_before: Optional[datetime] = None, + id_around: Optional[str] = None, + pinned_at_around: Optional[datetime] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + member_custom_include: Optional[List[str]] = None, + ) -> StreamResponse[GetPinnedMessagesResponse]: + query_params = build_query_param( + limit=limit, + offset=offset, + id_gte=id_gte, + id_gt=id_gt, + id_lte=id_lte, + id_lt=id_lt, + pinned_at_after_or_equal=pinned_at_after_or_equal, + pinned_at_after=pinned_at_after, + pinned_at_before_or_equal=pinned_at_before_or_equal, + pinned_at_before=pinned_at_before, + id_around=id_around, + pinned_at_around=pinned_at_around, + user_id=user_id, + sort=sort, + member_custom_include=member_custom_include, + ) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return await self.get("/api/v2/chat/channels/{type}/{id}/pinned_messages", GetPinnedMessagesResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/chat/channels/{type}/{id}/pinned_messages", + GetPinnedMessagesResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.get_or_create_channel") - async def get_or_create_channel(self, type: str, id: str, hide_for_creator: Optional[bool] = None, state: Optional[bool] = None, thread_unread_counts: Optional[bool] = None, member_custom_include: Optional[List[str]] = None, data: Optional[ChannelInput] = None, members: Optional[PaginationParams] = None, messages: Optional[MessagePaginationParams] = None, watchers: Optional[PaginationParams] = None) -> StreamResponse[ChannelStateResponse]: - path_params = { - "type": type, "id": id, - } - json = ChannelGetOrCreateRequest(hide_for_creator=hide_for_creator, state=state, thread_unread_counts=thread_unread_counts, member_custom_include=member_custom_include, data=data, members=members, messages=messages, watchers=watchers).to_dict() - return await self.post("/api/v2/chat/channels/{type}/{id}/query", ChannelStateResponse, path_params=path_params, json=json) - + async def get_or_create_channel( + self, + type: str, + id: str, + hide_for_creator: Optional[bool] = None, + state: Optional[bool] = None, + thread_unread_counts: Optional[bool] = None, + member_custom_include: Optional[List[str]] = None, + data: Optional[ChannelInput] = None, + members: Optional[PaginationParams] = None, + messages: Optional[MessagePaginationParams] = None, + watchers: Optional[PaginationParams] = None, + ) -> StreamResponse[ChannelStateResponse]: + path_params = { + "type": type, + "id": id, + } + json = ChannelGetOrCreateRequest( + hide_for_creator=hide_for_creator, + state=state, + thread_unread_counts=thread_unread_counts, + member_custom_include=member_custom_include, + data=data, + members=members, + messages=messages, + watchers=watchers, + ).to_dict() + return await self.post( + "/api/v2/chat/channels/{type}/{id}/query", + ChannelStateResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.mark_read") - async def mark_read(self, type: str, id: str, message_id: Optional[str] = None, thread_id: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[MarkReadResponse]: - path_params = { - "type": type, "id": id, - } - json = MarkReadRequest(message_id=message_id, thread_id=thread_id, user_id=user_id, user=user).to_dict() - return await self.post("/api/v2/chat/channels/{type}/{id}/read", MarkReadResponse, path_params=path_params, json=json) - + async def mark_read( + self, + type: str, + id: str, + message_id: Optional[str] = None, + thread_id: Optional[str] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[MarkReadResponse]: + path_params = { + "type": type, + "id": id, + } + json = MarkReadRequest( + message_id=message_id, thread_id=thread_id, user_id=user_id, user=user + ).to_dict() + return await self.post( + "/api/v2/chat/channels/{type}/{id}/read", + MarkReadResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.show_channel") - async def show_channel(self, type: str, id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[ShowChannelResponse]: + async def show_channel( + self, + type: str, + id: str, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[ShowChannelResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = ShowChannelRequest(user_id=user_id, user=user).to_dict() - return await self.post("/api/v2/chat/channels/{type}/{id}/show", ShowChannelResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/chat/channels/{type}/{id}/show", + ShowChannelResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.truncate_channel") - async def truncate_channel(self, type: str, id: str, hard_delete: Optional[bool] = None, skip_push: Optional[bool] = None, truncated_at: Optional[datetime] = None, user_id: Optional[str] = None, member_ids: Optional[List[str]] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[TruncateChannelResponse]: - path_params = { - "type": type, "id": id, - } - json = TruncateChannelRequest(hard_delete=hard_delete, skip_push=skip_push, truncated_at=truncated_at, user_id=user_id, member_ids=member_ids, message=message, user=user).to_dict() - return await self.post("/api/v2/chat/channels/{type}/{id}/truncate", TruncateChannelResponse, path_params=path_params, json=json) - + async def truncate_channel( + self, + type: str, + id: str, + hard_delete: Optional[bool] = None, + skip_push: Optional[bool] = None, + truncated_at: Optional[datetime] = None, + user_id: Optional[str] = None, + member_ids: Optional[List[str]] = None, + message: Optional[MessageRequest] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[TruncateChannelResponse]: + path_params = { + "type": type, + "id": id, + } + json = TruncateChannelRequest( + hard_delete=hard_delete, + skip_push=skip_push, + truncated_at=truncated_at, + user_id=user_id, + member_ids=member_ids, + message=message, + user=user, + ).to_dict() + return await self.post( + "/api/v2/chat/channels/{type}/{id}/truncate", + TruncateChannelResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.mark_unread") - async def mark_unread(self, type: str, id: str, message_id: Optional[str] = None, message_timestamp: Optional[datetime] = None, thread_id: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[Response]: - path_params = { - "type": type, "id": id, - } - json = MarkUnreadRequest(message_id=message_id, message_timestamp=message_timestamp, thread_id=thread_id, user_id=user_id, user=user).to_dict() - return await self.post("/api/v2/chat/channels/{type}/{id}/unread", Response, path_params=path_params, json=json) - + async def mark_unread( + self, + type: str, + id: str, + message_id: Optional[str] = None, + message_timestamp: Optional[datetime] = None, + thread_id: Optional[str] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[Response]: + path_params = { + "type": type, + "id": id, + } + json = MarkUnreadRequest( + message_id=message_id, + message_timestamp=message_timestamp, + thread_id=thread_id, + user_id=user_id, + user=user, + ).to_dict() + return await self.post( + "/api/v2/chat/channels/{type}/{id}/unread", + Response, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.list_channel_types") async def list_channel_types(self) -> StreamResponse[ListChannelTypesResponse]: return await self.get("/api/v2/chat/channeltypes", ListChannelTypesResponse) - + @telemetry.operation_name("getstream.api.chat.create_channel_type") - async def create_channel_type(self, automod: str, automod_behavior: str, max_message_length: int, name: str, blocklist: Optional[str] = None, blocklist_behavior: Optional[str] = None, connect_events: Optional[bool] = None, count_messages: Optional[bool] = None, custom_events: Optional[bool] = None, delivery_events: Optional[bool] = None, mark_messages_pending: Optional[bool] = None, message_retention: Optional[str] = None, mutes: Optional[bool] = None, partition_size: Optional[int] = None, partition_ttl: Optional[str] = None, polls: Optional[bool] = None, push_level: Optional[str] = None, push_notifications: Optional[bool] = None, reactions: Optional[bool] = None, read_events: Optional[bool] = None, replies: Optional[bool] = None, search: Optional[bool] = None, shared_locations: Optional[bool] = None, skip_last_msg_update_for_system_msgs: Optional[bool] = None, typing_events: Optional[bool] = None, uploads: Optional[bool] = None, url_enrichment: Optional[bool] = None, user_message_reminders: Optional[bool] = None, blocklists: Optional[List[BlockListOptions]] = None, commands: Optional[List[str]] = None, permissions: Optional[List[PolicyRequest]] = None, chat_preferences: Optional[ChatPreferences] = None, grants: Optional[Dict[str, List[str]]] = None) -> StreamResponse[CreateChannelTypeResponse]: - json = CreateChannelTypeRequest(automod=automod, automod_behavior=automod_behavior, max_message_length=max_message_length, name=name, blocklist=blocklist, blocklist_behavior=blocklist_behavior, connect_events=connect_events, count_messages=count_messages, custom_events=custom_events, delivery_events=delivery_events, mark_messages_pending=mark_messages_pending, message_retention=message_retention, mutes=mutes, partition_size=partition_size, partition_ttl=partition_ttl, polls=polls, push_level=push_level, push_notifications=push_notifications, reactions=reactions, read_events=read_events, replies=replies, search=search, shared_locations=shared_locations, skip_last_msg_update_for_system_msgs=skip_last_msg_update_for_system_msgs, typing_events=typing_events, uploads=uploads, url_enrichment=url_enrichment, user_message_reminders=user_message_reminders, blocklists=blocklists, commands=commands, permissions=permissions, chat_preferences=chat_preferences, grants=grants).to_dict() - return await self.post("/api/v2/chat/channeltypes", CreateChannelTypeResponse, json=json) - + async def create_channel_type( + self, + automod: str, + automod_behavior: str, + max_message_length: int, + name: str, + blocklist: Optional[str] = None, + blocklist_behavior: Optional[str] = None, + connect_events: Optional[bool] = None, + count_messages: Optional[bool] = None, + custom_events: Optional[bool] = None, + delivery_events: Optional[bool] = None, + mark_messages_pending: Optional[bool] = None, + message_retention: Optional[str] = None, + mutes: Optional[bool] = None, + partition_size: Optional[int] = None, + partition_ttl: Optional[str] = None, + polls: Optional[bool] = None, + push_level: Optional[str] = None, + push_notifications: Optional[bool] = None, + reactions: Optional[bool] = None, + read_events: Optional[bool] = None, + replies: Optional[bool] = None, + search: Optional[bool] = None, + shared_locations: Optional[bool] = None, + skip_last_msg_update_for_system_msgs: Optional[bool] = None, + typing_events: Optional[bool] = None, + uploads: Optional[bool] = None, + url_enrichment: Optional[bool] = None, + user_message_reminders: Optional[bool] = None, + blocklists: Optional[List[BlockListOptions]] = None, + commands: Optional[List[str]] = None, + permissions: Optional[List[PolicyRequest]] = None, + chat_preferences: Optional[ChatPreferences] = None, + grants: Optional[Dict[str, List[str]]] = None, + ) -> StreamResponse[CreateChannelTypeResponse]: + json = CreateChannelTypeRequest( + automod=automod, + automod_behavior=automod_behavior, + max_message_length=max_message_length, + name=name, + blocklist=blocklist, + blocklist_behavior=blocklist_behavior, + connect_events=connect_events, + count_messages=count_messages, + custom_events=custom_events, + delivery_events=delivery_events, + mark_messages_pending=mark_messages_pending, + message_retention=message_retention, + mutes=mutes, + partition_size=partition_size, + partition_ttl=partition_ttl, + polls=polls, + push_level=push_level, + push_notifications=push_notifications, + reactions=reactions, + read_events=read_events, + replies=replies, + search=search, + shared_locations=shared_locations, + skip_last_msg_update_for_system_msgs=skip_last_msg_update_for_system_msgs, + typing_events=typing_events, + uploads=uploads, + url_enrichment=url_enrichment, + user_message_reminders=user_message_reminders, + blocklists=blocklists, + commands=commands, + permissions=permissions, + chat_preferences=chat_preferences, + grants=grants, + ).to_dict() + return await self.post( + "/api/v2/chat/channeltypes", CreateChannelTypeResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.delete_channel_type") async def delete_channel_type(self, name: str) -> StreamResponse[Response]: path_params = { - "name": name, + "name": name, } - return await self.delete("/api/v2/chat/channeltypes/{name}", Response, path_params=path_params) - + return await self.delete( + "/api/v2/chat/channeltypes/{name}", Response, path_params=path_params + ) + @telemetry.operation_name("getstream.api.chat.get_channel_type") - async def get_channel_type(self, name: str) -> StreamResponse[GetChannelTypeResponse]: + async def get_channel_type( + self, name: str + ) -> StreamResponse[GetChannelTypeResponse]: path_params = { - "name": name, + "name": name, } - return await self.get("/api/v2/chat/channeltypes/{name}", GetChannelTypeResponse, path_params=path_params) - + return await self.get( + "/api/v2/chat/channeltypes/{name}", + GetChannelTypeResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.update_channel_type") - async def update_channel_type(self, name: str, automod: str, automod_behavior: str, max_message_length: int, blocklist: Optional[str] = None, blocklist_behavior: Optional[str] = None, connect_events: Optional[bool] = None, count_messages: Optional[bool] = None, custom_events: Optional[bool] = None, delivery_events: Optional[bool] = None, mark_messages_pending: Optional[bool] = None, message_retention: Optional[str] = None, mutes: Optional[bool] = None, partition_size: Optional[int] = None, partition_ttl: Optional[str] = None, polls: Optional[bool] = None, push_level: Optional[str] = None, push_notifications: Optional[bool] = None, quotes: Optional[bool] = None, reactions: Optional[bool] = None, read_events: Optional[bool] = None, reminders: Optional[bool] = None, replies: Optional[bool] = None, search: Optional[bool] = None, shared_locations: Optional[bool] = None, skip_last_msg_update_for_system_msgs: Optional[bool] = None, typing_events: Optional[bool] = None, uploads: Optional[bool] = None, url_enrichment: Optional[bool] = None, user_message_reminders: Optional[bool] = None, allowed_flag_reasons: Optional[List[str]] = None, blocklists: Optional[List[BlockListOptions]] = None, commands: Optional[List[str]] = None, permissions: Optional[List[PolicyRequest]] = None, automod_thresholds: Optional[Thresholds] = None, chat_preferences: Optional[ChatPreferences] = None, grants: Optional[Dict[str, List[str]]] = None) -> StreamResponse[UpdateChannelTypeResponse]: - path_params = { - "name": name, - } - json = UpdateChannelTypeRequest(automod=automod, automod_behavior=automod_behavior, max_message_length=max_message_length, blocklist=blocklist, blocklist_behavior=blocklist_behavior, connect_events=connect_events, count_messages=count_messages, custom_events=custom_events, delivery_events=delivery_events, mark_messages_pending=mark_messages_pending, message_retention=message_retention, mutes=mutes, partition_size=partition_size, partition_ttl=partition_ttl, polls=polls, push_level=push_level, push_notifications=push_notifications, quotes=quotes, reactions=reactions, read_events=read_events, reminders=reminders, replies=replies, search=search, shared_locations=shared_locations, skip_last_msg_update_for_system_msgs=skip_last_msg_update_for_system_msgs, typing_events=typing_events, uploads=uploads, url_enrichment=url_enrichment, user_message_reminders=user_message_reminders, allowed_flag_reasons=allowed_flag_reasons, blocklists=blocklists, commands=commands, permissions=permissions, automod_thresholds=automod_thresholds, chat_preferences=chat_preferences, grants=grants).to_dict() - return await self.put("/api/v2/chat/channeltypes/{name}", UpdateChannelTypeResponse, path_params=path_params, json=json) - + async def update_channel_type( + self, + name: str, + automod: str, + automod_behavior: str, + max_message_length: int, + blocklist: Optional[str] = None, + blocklist_behavior: Optional[str] = None, + connect_events: Optional[bool] = None, + count_messages: Optional[bool] = None, + custom_events: Optional[bool] = None, + delivery_events: Optional[bool] = None, + mark_messages_pending: Optional[bool] = None, + message_retention: Optional[str] = None, + mutes: Optional[bool] = None, + partition_size: Optional[int] = None, + partition_ttl: Optional[str] = None, + polls: Optional[bool] = None, + push_level: Optional[str] = None, + push_notifications: Optional[bool] = None, + quotes: Optional[bool] = None, + reactions: Optional[bool] = None, + read_events: Optional[bool] = None, + reminders: Optional[bool] = None, + replies: Optional[bool] = None, + search: Optional[bool] = None, + shared_locations: Optional[bool] = None, + skip_last_msg_update_for_system_msgs: Optional[bool] = None, + typing_events: Optional[bool] = None, + uploads: Optional[bool] = None, + url_enrichment: Optional[bool] = None, + user_message_reminders: Optional[bool] = None, + allowed_flag_reasons: Optional[List[str]] = None, + blocklists: Optional[List[BlockListOptions]] = None, + commands: Optional[List[str]] = None, + permissions: Optional[List[PolicyRequest]] = None, + automod_thresholds: Optional[Thresholds] = None, + chat_preferences: Optional[ChatPreferences] = None, + grants: Optional[Dict[str, List[str]]] = None, + ) -> StreamResponse[UpdateChannelTypeResponse]: + path_params = { + "name": name, + } + json = UpdateChannelTypeRequest( + automod=automod, + automod_behavior=automod_behavior, + max_message_length=max_message_length, + blocklist=blocklist, + blocklist_behavior=blocklist_behavior, + connect_events=connect_events, + count_messages=count_messages, + custom_events=custom_events, + delivery_events=delivery_events, + mark_messages_pending=mark_messages_pending, + message_retention=message_retention, + mutes=mutes, + partition_size=partition_size, + partition_ttl=partition_ttl, + polls=polls, + push_level=push_level, + push_notifications=push_notifications, + quotes=quotes, + reactions=reactions, + read_events=read_events, + reminders=reminders, + replies=replies, + search=search, + shared_locations=shared_locations, + skip_last_msg_update_for_system_msgs=skip_last_msg_update_for_system_msgs, + typing_events=typing_events, + uploads=uploads, + url_enrichment=url_enrichment, + user_message_reminders=user_message_reminders, + allowed_flag_reasons=allowed_flag_reasons, + blocklists=blocklists, + commands=commands, + permissions=permissions, + automod_thresholds=automod_thresholds, + chat_preferences=chat_preferences, + grants=grants, + ).to_dict() + return await self.put( + "/api/v2/chat/channeltypes/{name}", + UpdateChannelTypeResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.list_commands") async def list_commands(self) -> StreamResponse[ListCommandsResponse]: return await self.get("/api/v2/chat/commands", ListCommandsResponse) - + @telemetry.operation_name("getstream.api.chat.create_command") - async def create_command(self, description: str, name: str, args: Optional[str] = None, set: Optional[str] = None) -> StreamResponse[CreateCommandResponse]: - json = CreateCommandRequest(description=description, name=name, args=args, set=set).to_dict() - return await self.post("/api/v2/chat/commands", CreateCommandResponse, json=json) - + async def create_command( + self, + description: str, + name: str, + args: Optional[str] = None, + set: Optional[str] = None, + ) -> StreamResponse[CreateCommandResponse]: + json = CreateCommandRequest( + description=description, name=name, args=args, set=set + ).to_dict() + return await self.post( + "/api/v2/chat/commands", CreateCommandResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.delete_command") async def delete_command(self, name: str) -> StreamResponse[DeleteCommandResponse]: path_params = { - "name": name, + "name": name, } - return await self.delete("/api/v2/chat/commands/{name}", DeleteCommandResponse, path_params=path_params) - + return await self.delete( + "/api/v2/chat/commands/{name}", + DeleteCommandResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.get_command") async def get_command(self, name: str) -> StreamResponse[GetCommandResponse]: path_params = { - "name": name, + "name": name, } - return await self.get("/api/v2/chat/commands/{name}", GetCommandResponse, path_params=path_params) - + return await self.get( + "/api/v2/chat/commands/{name}", GetCommandResponse, path_params=path_params + ) + @telemetry.operation_name("getstream.api.chat.update_command") - async def update_command(self, name: str, description: str, args: Optional[str] = None, set: Optional[str] = None) -> StreamResponse[UpdateCommandResponse]: - path_params = { - "name": name, - } - json = UpdateCommandRequest(description=description, args=args, set=set).to_dict() - return await self.put("/api/v2/chat/commands/{name}", UpdateCommandResponse, path_params=path_params, json=json) - + async def update_command( + self, + name: str, + description: str, + args: Optional[str] = None, + set: Optional[str] = None, + ) -> StreamResponse[UpdateCommandResponse]: + path_params = { + "name": name, + } + json = UpdateCommandRequest( + description=description, args=args, set=set + ).to_dict() + return await self.put( + "/api/v2/chat/commands/{name}", + UpdateCommandResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.query_drafts") - async def query_drafts(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryDraftsResponse]: - json = QueryDraftsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return await self.post("/api/v2/chat/drafts/query", QueryDraftsResponse, json=json) - + async def query_drafts( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryDraftsResponse]: + json = QueryDraftsRequest( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return await self.post( + "/api/v2/chat/drafts/query", QueryDraftsResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.export_channels") - async def export_channels(self, channels: List[ChannelExport], clear_deleted_message_text: Optional[bool] = None, export_users: Optional[bool] = None, format: Optional[str] = None, include_soft_deleted_channels: Optional[bool] = None, include_truncated_messages: Optional[bool] = None, version: Optional[str] = None, include_fields: Optional[List[str]] = None) -> StreamResponse[ExportChannelsResponse]: - json = ExportChannelsRequest(channels=channels, clear_deleted_message_text=clear_deleted_message_text, export_users=export_users, format=format, include_soft_deleted_channels=include_soft_deleted_channels, include_truncated_messages=include_truncated_messages, version=version, include_fields=include_fields).to_dict() - return await self.post("/api/v2/chat/export_channels", ExportChannelsResponse, json=json) - + async def export_channels( + self, + channels: List[ChannelExport], + clear_deleted_message_text: Optional[bool] = None, + export_users: Optional[bool] = None, + format: Optional[str] = None, + include_soft_deleted_channels: Optional[bool] = None, + include_truncated_messages: Optional[bool] = None, + version: Optional[str] = None, + include_fields: Optional[List[str]] = None, + ) -> StreamResponse[ExportChannelsResponse]: + json = ExportChannelsRequest( + channels=channels, + clear_deleted_message_text=clear_deleted_message_text, + export_users=export_users, + format=format, + include_soft_deleted_channels=include_soft_deleted_channels, + include_truncated_messages=include_truncated_messages, + version=version, + include_fields=include_fields, + ).to_dict() + return await self.post( + "/api/v2/chat/export_channels", ExportChannelsResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.query_members") - async def query_members(self, payload: Optional[QueryMembersPayload] = None) -> StreamResponse[MembersResponse]: + async def query_members( + self, payload: Optional[QueryMembersPayload] = None + ) -> StreamResponse[MembersResponse]: query_params = build_query_param(payload=payload) - return await self.get("/api/v2/chat/members", MembersResponse, query_params=query_params) - + return await self.get( + "/api/v2/chat/members", MembersResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.chat.query_message_history") - async def query_message_history(self, filter: Dict[str, object], limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None) -> StreamResponse[QueryMessageHistoryResponse]: - json = QueryMessageHistoryRequest(filter=filter, limit=limit, next=next, prev=prev, sort=sort).to_dict() - return await self.post("/api/v2/chat/messages/history", QueryMessageHistoryResponse, json=json) - + async def query_message_history( + self, + filter: Dict[str, object], + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + ) -> StreamResponse[QueryMessageHistoryResponse]: + json = QueryMessageHistoryRequest( + filter=filter, limit=limit, next=next, prev=prev, sort=sort + ).to_dict() + return await self.post( + "/api/v2/chat/messages/history", QueryMessageHistoryResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.delete_message") - async def delete_message(self, id: str, hard: Optional[bool] = None, deleted_by: Optional[str] = None, delete_for_me: Optional[bool] = None) -> StreamResponse[DeleteMessageResponse]: - query_params = build_query_param(hard=hard, deleted_by=deleted_by, delete_for_me=delete_for_me) + async def delete_message( + self, + id: str, + hard: Optional[bool] = None, + deleted_by: Optional[str] = None, + delete_for_me: Optional[bool] = None, + ) -> StreamResponse[DeleteMessageResponse]: + query_params = build_query_param( + hard=hard, deleted_by=deleted_by, delete_for_me=delete_for_me + ) path_params = { - "id": id, + "id": id, } - return await self.delete("/api/v2/chat/messages/{id}", DeleteMessageResponse, query_params=query_params, path_params=path_params) - + return await self.delete( + "/api/v2/chat/messages/{id}", + DeleteMessageResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.get_message") - async def get_message(self, id: str, show_deleted_message: Optional[bool] = None) -> StreamResponse[GetMessageResponse]: + async def get_message( + self, id: str, show_deleted_message: Optional[bool] = None + ) -> StreamResponse[GetMessageResponse]: query_params = build_query_param(show_deleted_message=show_deleted_message) path_params = { - "id": id, + "id": id, } - return await self.get("/api/v2/chat/messages/{id}", GetMessageResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/chat/messages/{id}", + GetMessageResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.update_message") - async def update_message(self, id: str, message: MessageRequest, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None) -> StreamResponse[UpdateMessageResponse]: - path_params = { - "id": id, - } - json = UpdateMessageRequest(message=message, skip_enrich_url=skip_enrich_url, skip_push=skip_push).to_dict() - return await self.post("/api/v2/chat/messages/{id}", UpdateMessageResponse, path_params=path_params, json=json) - + async def update_message( + self, + id: str, + message: MessageRequest, + skip_enrich_url: Optional[bool] = None, + skip_push: Optional[bool] = None, + ) -> StreamResponse[UpdateMessageResponse]: + path_params = { + "id": id, + } + json = UpdateMessageRequest( + message=message, skip_enrich_url=skip_enrich_url, skip_push=skip_push + ).to_dict() + return await self.post( + "/api/v2/chat/messages/{id}", + UpdateMessageResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.update_message_partial") - async def update_message_partial(self, id: str, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateMessagePartialResponse]: - path_params = { - "id": id, - } - json = UpdateMessagePartialRequest(skip_enrich_url=skip_enrich_url, skip_push=skip_push, user_id=user_id, unset=unset, set=set, user=user).to_dict() - return await self.put("/api/v2/chat/messages/{id}", UpdateMessagePartialResponse, path_params=path_params, json=json) - + async def update_message_partial( + self, + id: str, + skip_enrich_url: Optional[bool] = None, + skip_push: Optional[bool] = None, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateMessagePartialResponse]: + path_params = { + "id": id, + } + json = UpdateMessagePartialRequest( + skip_enrich_url=skip_enrich_url, + skip_push=skip_push, + user_id=user_id, + unset=unset, + set=set, + user=user, + ).to_dict() + return await self.put( + "/api/v2/chat/messages/{id}", + UpdateMessagePartialResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.run_message_action") - async def run_message_action(self, id: str, form_data: Dict[str, str], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[MessageActionResponse]: - path_params = { - "id": id, - } - json = MessageActionRequest(form_data=form_data, user_id=user_id, user=user).to_dict() - return await self.post("/api/v2/chat/messages/{id}/action", MessageActionResponse, path_params=path_params, json=json) - + async def run_message_action( + self, + id: str, + form_data: Dict[str, str], + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[MessageActionResponse]: + path_params = { + "id": id, + } + json = MessageActionRequest( + form_data=form_data, user_id=user_id, user=user + ).to_dict() + return await self.post( + "/api/v2/chat/messages/{id}/action", + MessageActionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.commit_message") - async def commit_message(self, id: str, ) -> StreamResponse[MessageActionResponse]: + async def commit_message( + self, + id: str, + ) -> StreamResponse[MessageActionResponse]: path_params = { - "id": id, + "id": id, } json = CommitMessageRequest().to_dict() - return await self.post("/api/v2/chat/messages/{id}/commit", MessageActionResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/chat/messages/{id}/commit", + MessageActionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.ephemeral_message_update") - async def ephemeral_message_update(self, id: str, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateMessagePartialResponse]: - path_params = { - "id": id, - } - json = UpdateMessagePartialRequest(skip_enrich_url=skip_enrich_url, skip_push=skip_push, user_id=user_id, unset=unset, set=set, user=user).to_dict() - return await self.patch("/api/v2/chat/messages/{id}/ephemeral", UpdateMessagePartialResponse, path_params=path_params, json=json) - + async def ephemeral_message_update( + self, + id: str, + skip_enrich_url: Optional[bool] = None, + skip_push: Optional[bool] = None, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateMessagePartialResponse]: + path_params = { + "id": id, + } + json = UpdateMessagePartialRequest( + skip_enrich_url=skip_enrich_url, + skip_push=skip_push, + user_id=user_id, + unset=unset, + set=set, + user=user, + ).to_dict() + return await self.patch( + "/api/v2/chat/messages/{id}/ephemeral", + UpdateMessagePartialResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.send_reaction") - async def send_reaction(self, id: str, reaction: ReactionRequest, enforce_unique: Optional[bool] = None, skip_push: Optional[bool] = None) -> StreamResponse[SendReactionResponse]: - path_params = { - "id": id, - } - json = SendReactionRequest(reaction=reaction, enforce_unique=enforce_unique, skip_push=skip_push).to_dict() - return await self.post("/api/v2/chat/messages/{id}/reaction", SendReactionResponse, path_params=path_params, json=json) - + async def send_reaction( + self, + id: str, + reaction: ReactionRequest, + enforce_unique: Optional[bool] = None, + skip_push: Optional[bool] = None, + ) -> StreamResponse[SendReactionResponse]: + path_params = { + "id": id, + } + json = SendReactionRequest( + reaction=reaction, enforce_unique=enforce_unique, skip_push=skip_push + ).to_dict() + return await self.post( + "/api/v2/chat/messages/{id}/reaction", + SendReactionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.delete_reaction") - async def delete_reaction(self, id: str, type: str, user_id: Optional[str] = None) -> StreamResponse[DeleteReactionResponse]: + async def delete_reaction( + self, id: str, type: str, user_id: Optional[str] = None + ) -> StreamResponse[DeleteReactionResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "id": id, "type": type, + "id": id, + "type": type, } - return await self.delete("/api/v2/chat/messages/{id}/reaction/{type}", DeleteReactionResponse, query_params=query_params, path_params=path_params) - + return await self.delete( + "/api/v2/chat/messages/{id}/reaction/{type}", + DeleteReactionResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.get_reactions") - async def get_reactions(self, id: str, limit: Optional[int] = None, offset: Optional[int] = None) -> StreamResponse[GetReactionsResponse]: + async def get_reactions( + self, id: str, limit: Optional[int] = None, offset: Optional[int] = None + ) -> StreamResponse[GetReactionsResponse]: query_params = build_query_param(limit=limit, offset=offset) path_params = { - "id": id, + "id": id, } - return await self.get("/api/v2/chat/messages/{id}/reactions", GetReactionsResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/chat/messages/{id}/reactions", + GetReactionsResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.query_reactions") - async def query_reactions(self, id: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryReactionsResponse]: - path_params = { - "id": id, - } - json = QueryReactionsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return await self.post("/api/v2/chat/messages/{id}/reactions", QueryReactionsResponse, path_params=path_params, json=json) - + async def query_reactions( + self, + id: str, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryReactionsResponse]: + path_params = { + "id": id, + } + json = QueryReactionsRequest( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return await self.post( + "/api/v2/chat/messages/{id}/reactions", + QueryReactionsResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.translate_message") - async def translate_message(self, id: str, language: str) -> StreamResponse[TranslateMessageResponse]: + async def translate_message( + self, id: str, language: str + ) -> StreamResponse[TranslateMessageResponse]: path_params = { - "id": id, + "id": id, } json = TranslateMessageRequest(language=language).to_dict() - return await self.post("/api/v2/chat/messages/{id}/translate", TranslateMessageResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/chat/messages/{id}/translate", + TranslateMessageResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.undelete_message") - async def undelete_message(self, id: str, undeleted_by: str) -> StreamResponse[UndeleteMessageResponse]: + async def undelete_message( + self, id: str, undeleted_by: str + ) -> StreamResponse[UndeleteMessageResponse]: path_params = { - "id": id, + "id": id, } json = UndeleteMessageRequest(undeleted_by=undeleted_by).to_dict() - return await self.post("/api/v2/chat/messages/{id}/undelete", UndeleteMessageResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/chat/messages/{id}/undelete", + UndeleteMessageResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.cast_poll_vote") - async def cast_poll_vote(self, message_id: str, poll_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None, vote: Optional[VoteData] = None) -> StreamResponse[PollVoteResponse]: - path_params = { - "message_id": message_id, "poll_id": poll_id, + async def cast_poll_vote( + self, + message_id: str, + poll_id: str, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + vote: Optional[VoteData] = None, + ) -> StreamResponse[PollVoteResponse]: + path_params = { + "message_id": message_id, + "poll_id": poll_id, } json = CastPollVoteRequest(user_id=user_id, user=user, vote=vote).to_dict() - return await self.post("/api/v2/chat/messages/{message_id}/polls/{poll_id}/vote", PollVoteResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/chat/messages/{message_id}/polls/{poll_id}/vote", + PollVoteResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.delete_poll_vote") - async def delete_poll_vote(self, message_id: str, poll_id: str, vote_id: str, user_id: Optional[str] = None) -> StreamResponse[PollVoteResponse]: + async def delete_poll_vote( + self, message_id: str, poll_id: str, vote_id: str, user_id: Optional[str] = None + ) -> StreamResponse[PollVoteResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "message_id": message_id, "poll_id": poll_id, "vote_id": vote_id, + "message_id": message_id, + "poll_id": poll_id, + "vote_id": vote_id, } - return await self.delete("/api/v2/chat/messages/{message_id}/polls/{poll_id}/vote/{vote_id}", PollVoteResponse, query_params=query_params, path_params=path_params) - + return await self.delete( + "/api/v2/chat/messages/{message_id}/polls/{poll_id}/vote/{vote_id}", + PollVoteResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.delete_reminder") - async def delete_reminder(self, message_id: str, user_id: Optional[str] = None) -> StreamResponse[DeleteReminderResponse]: + async def delete_reminder( + self, message_id: str, user_id: Optional[str] = None + ) -> StreamResponse[DeleteReminderResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "message_id": message_id, + "message_id": message_id, } - return await self.delete("/api/v2/chat/messages/{message_id}/reminders", DeleteReminderResponse, query_params=query_params, path_params=path_params) - + return await self.delete( + "/api/v2/chat/messages/{message_id}/reminders", + DeleteReminderResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.update_reminder") - async def update_reminder(self, message_id: str, remind_at: Optional[datetime] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateReminderResponse]: - path_params = { - "message_id": message_id, - } - json = UpdateReminderRequest(remind_at=remind_at, user_id=user_id, user=user).to_dict() - return await self.patch("/api/v2/chat/messages/{message_id}/reminders", UpdateReminderResponse, path_params=path_params, json=json) - + async def update_reminder( + self, + message_id: str, + remind_at: Optional[datetime] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateReminderResponse]: + path_params = { + "message_id": message_id, + } + json = UpdateReminderRequest( + remind_at=remind_at, user_id=user_id, user=user + ).to_dict() + return await self.patch( + "/api/v2/chat/messages/{message_id}/reminders", + UpdateReminderResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.create_reminder") - async def create_reminder(self, message_id: str, remind_at: Optional[datetime] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CreateReminderResponse]: - path_params = { - "message_id": message_id, - } - json = CreateReminderRequest(remind_at=remind_at, user_id=user_id, user=user).to_dict() - return await self.post("/api/v2/chat/messages/{message_id}/reminders", CreateReminderResponse, path_params=path_params, json=json) - + async def create_reminder( + self, + message_id: str, + remind_at: Optional[datetime] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[CreateReminderResponse]: + path_params = { + "message_id": message_id, + } + json = CreateReminderRequest( + remind_at=remind_at, user_id=user_id, user=user + ).to_dict() + return await self.post( + "/api/v2/chat/messages/{message_id}/reminders", + CreateReminderResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.get_replies") - async def get_replies(self, parent_id: str, limit: Optional[int] = None, id_gte: Optional[str] = None, id_gt: Optional[str] = None, id_lte: Optional[str] = None, id_lt: Optional[str] = None, id_around: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetRepliesResponse]: - query_params = build_query_param(limit=limit, id_gte=id_gte, id_gt=id_gt, id_lte=id_lte, id_lt=id_lt, id_around=id_around, sort=sort, member_custom_include=member_custom_include) + async def get_replies( + self, + parent_id: str, + limit: Optional[int] = None, + id_gte: Optional[str] = None, + id_gt: Optional[str] = None, + id_lte: Optional[str] = None, + id_lt: Optional[str] = None, + id_around: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + member_custom_include: Optional[List[str]] = None, + ) -> StreamResponse[GetRepliesResponse]: + query_params = build_query_param( + limit=limit, + id_gte=id_gte, + id_gt=id_gt, + id_lte=id_lte, + id_lt=id_lt, + id_around=id_around, + sort=sort, + member_custom_include=member_custom_include, + ) path_params = { - "parent_id": parent_id, + "parent_id": parent_id, } - return await self.get("/api/v2/chat/messages/{parent_id}/replies", GetRepliesResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/chat/messages/{parent_id}/replies", + GetRepliesResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.query_message_flags") - async def query_message_flags(self, payload: Optional[QueryMessageFlagsPayload] = None) -> StreamResponse[QueryMessageFlagsResponse]: + async def query_message_flags( + self, payload: Optional[QueryMessageFlagsPayload] = None + ) -> StreamResponse[QueryMessageFlagsResponse]: query_params = build_query_param(payload=payload) - return await self.get("/api/v2/chat/moderation/flags/message", QueryMessageFlagsResponse, query_params=query_params) - + return await self.get( + "/api/v2/chat/moderation/flags/message", + QueryMessageFlagsResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.chat.mute_channel") - async def mute_channel(self, expiration: Optional[int] = None, user_id: Optional[str] = None, channel_cids: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[MuteChannelResponse]: - json = MuteChannelRequest(expiration=expiration, user_id=user_id, channel_cids=channel_cids, user=user).to_dict() - return await self.post("/api/v2/chat/moderation/mute/channel", MuteChannelResponse, json=json) - + async def mute_channel( + self, + expiration: Optional[int] = None, + user_id: Optional[str] = None, + channel_cids: Optional[List[str]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[MuteChannelResponse]: + json = MuteChannelRequest( + expiration=expiration, user_id=user_id, channel_cids=channel_cids, user=user + ).to_dict() + return await self.post( + "/api/v2/chat/moderation/mute/channel", MuteChannelResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.unmute_channel") - async def unmute_channel(self, expiration: Optional[int] = None, user_id: Optional[str] = None, channel_cids: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UnmuteResponse]: - json = UnmuteChannelRequest(expiration=expiration, user_id=user_id, channel_cids=channel_cids, user=user).to_dict() - return await self.post("/api/v2/chat/moderation/unmute/channel", UnmuteResponse, json=json) - + async def unmute_channel( + self, + expiration: Optional[int] = None, + user_id: Optional[str] = None, + channel_cids: Optional[List[str]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UnmuteResponse]: + json = UnmuteChannelRequest( + expiration=expiration, user_id=user_id, channel_cids=channel_cids, user=user + ).to_dict() + return await self.post( + "/api/v2/chat/moderation/unmute/channel", UnmuteResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.get_predefined_filters") - async def get_predefined_filters(self, include_stats: Optional[bool] = None, sort: Optional[List[SortParamRequest]] = None) -> StreamResponse[QueryPredefinedFiltersResponse]: + async def get_predefined_filters( + self, + include_stats: Optional[bool] = None, + sort: Optional[List[SortParamRequest]] = None, + ) -> StreamResponse[QueryPredefinedFiltersResponse]: query_params = build_query_param(include_stats=include_stats, sort=sort) - return await self.get("/api/v2/chat/predefined_filters", QueryPredefinedFiltersResponse, query_params=query_params) - + return await self.get( + "/api/v2/chat/predefined_filters", + QueryPredefinedFiltersResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.chat.create_predefined_filter") - async def create_predefined_filter(self, name: str, operation: str, filter: Dict[str, object], description: Optional[str] = None, sort: Optional[List[Dict[str, object]]] = None) -> StreamResponse[CreatePredefinedFilterResponse]: - json = CreatePredefinedFilterRequest(name=name, operation=operation, filter=filter, description=description, sort=sort).to_dict() - return await self.post("/api/v2/chat/predefined_filters", CreatePredefinedFilterResponse, json=json) - + async def create_predefined_filter( + self, + name: str, + operation: str, + filter: Dict[str, object], + description: Optional[str] = None, + sort: Optional[List[Dict[str, object]]] = None, + ) -> StreamResponse[CreatePredefinedFilterResponse]: + json = CreatePredefinedFilterRequest( + name=name, + operation=operation, + filter=filter, + description=description, + sort=sort, + ).to_dict() + return await self.post( + "/api/v2/chat/predefined_filters", CreatePredefinedFilterResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.delete_predefined_filter") async def delete_predefined_filter(self, name: str) -> StreamResponse[Response]: path_params = { - "name": name, + "name": name, } - return await self.delete("/api/v2/chat/predefined_filters/{name}", Response, path_params=path_params) - + return await self.delete( + "/api/v2/chat/predefined_filters/{name}", Response, path_params=path_params + ) + @telemetry.operation_name("getstream.api.chat.get_predefined_filter") - async def get_predefined_filter(self, name: str) -> StreamResponse[GetPredefinedFilterResponse]: + async def get_predefined_filter( + self, name: str + ) -> StreamResponse[GetPredefinedFilterResponse]: path_params = { - "name": name, + "name": name, } - return await self.get("/api/v2/chat/predefined_filters/{name}", GetPredefinedFilterResponse, path_params=path_params) - + return await self.get( + "/api/v2/chat/predefined_filters/{name}", + GetPredefinedFilterResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.update_predefined_filter") - async def update_predefined_filter(self, name: str, operation: str, filter: Dict[str, object], description: Optional[str] = None, sort: Optional[List[Dict[str, object]]] = None) -> StreamResponse[UpdatePredefinedFilterResponse]: - path_params = { - "name": name, - } - json = UpdatePredefinedFilterRequest(operation=operation, filter=filter, description=description, sort=sort).to_dict() - return await self.put("/api/v2/chat/predefined_filters/{name}", UpdatePredefinedFilterResponse, path_params=path_params, json=json) - + async def update_predefined_filter( + self, + name: str, + operation: str, + filter: Dict[str, object], + description: Optional[str] = None, + sort: Optional[List[Dict[str, object]]] = None, + ) -> StreamResponse[UpdatePredefinedFilterResponse]: + path_params = { + "name": name, + } + json = UpdatePredefinedFilterRequest( + operation=operation, filter=filter, description=description, sort=sort + ).to_dict() + return await self.put( + "/api/v2/chat/predefined_filters/{name}", + UpdatePredefinedFilterResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.query_banned_users") - async def query_banned_users(self, payload: Optional[QueryBannedUsersPayload] = None) -> StreamResponse[QueryBannedUsersResponse]: + async def query_banned_users( + self, payload: Optional[QueryBannedUsersPayload] = None + ) -> StreamResponse[QueryBannedUsersResponse]: query_params = build_query_param(payload=payload) - return await self.get("/api/v2/chat/query_banned_users", QueryBannedUsersResponse, query_params=query_params) - + return await self.get( + "/api/v2/chat/query_banned_users", + QueryBannedUsersResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.chat.query_future_channel_bans") - async def query_future_channel_bans(self, payload: Optional[QueryFutureChannelBansPayload] = None) -> StreamResponse[QueryFutureChannelBansResponse]: + async def query_future_channel_bans( + self, payload: Optional[QueryFutureChannelBansPayload] = None + ) -> StreamResponse[QueryFutureChannelBansResponse]: query_params = build_query_param(payload=payload) - return await self.get("/api/v2/chat/query_future_channel_bans", QueryFutureChannelBansResponse, query_params=query_params) - + return await self.get( + "/api/v2/chat/query_future_channel_bans", + QueryFutureChannelBansResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.chat.query_reminders") - async def query_reminders(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryRemindersResponse]: - json = QueryRemindersRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return await self.post("/api/v2/chat/reminders/query", QueryRemindersResponse, json=json) - + async def query_reminders( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryRemindersResponse]: + json = QueryRemindersRequest( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return await self.post( + "/api/v2/chat/reminders/query", QueryRemindersResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.get_retention_policy") async def get_retention_policy(self) -> StreamResponse[GetRetentionPolicyResponse]: - return await self.get("/api/v2/chat/retention_policy", GetRetentionPolicyResponse) - + return await self.get( + "/api/v2/chat/retention_policy", GetRetentionPolicyResponse + ) + @telemetry.operation_name("getstream.api.chat.set_retention_policy") - async def set_retention_policy(self, max_age_hours: int, policy: str) -> StreamResponse[SetRetentionPolicyResponse]: - json = SetRetentionPolicyRequest(max_age_hours=max_age_hours, policy=policy).to_dict() - return await self.post("/api/v2/chat/retention_policy", SetRetentionPolicyResponse, json=json) - + async def set_retention_policy( + self, max_age_hours: int, policy: str + ) -> StreamResponse[SetRetentionPolicyResponse]: + json = SetRetentionPolicyRequest( + max_age_hours=max_age_hours, policy=policy + ).to_dict() + return await self.post( + "/api/v2/chat/retention_policy", SetRetentionPolicyResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.delete_retention_policy") - async def delete_retention_policy(self, policy: str) -> StreamResponse[DeleteRetentionPolicyResponse]: + async def delete_retention_policy( + self, policy: str + ) -> StreamResponse[DeleteRetentionPolicyResponse]: json = DeleteRetentionPolicyRequest(policy=policy).to_dict() - return await self.post("/api/v2/chat/retention_policy/delete", DeleteRetentionPolicyResponse, json=json) - + return await self.post( + "/api/v2/chat/retention_policy/delete", + DeleteRetentionPolicyResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.get_retention_policy_runs") - async def get_retention_policy_runs(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[GetRetentionPolicyRunsResponse]: - json = GetRetentionPolicyRunsRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() - return await self.post("/api/v2/chat/retention_policy/runs", GetRetentionPolicyRunsResponse, json=json) - + async def get_retention_policy_runs( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[GetRetentionPolicyRunsResponse]: + json = GetRetentionPolicyRunsRequest( + limit=limit, + next=next, + prev=prev, + sort=sort, + filter_conditions=filter_conditions, + ).to_dict() + return await self.post( + "/api/v2/chat/retention_policy/runs", + GetRetentionPolicyRunsResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.search") - async def search(self, payload: Optional[SearchPayload] = None) -> StreamResponse[SearchResponse]: + async def search( + self, payload: Optional[SearchPayload] = None + ) -> StreamResponse[SearchResponse]: query_params = build_query_param(payload=payload) - return await self.get("/api/v2/chat/search", SearchResponse, query_params=query_params) - + return await self.get( + "/api/v2/chat/search", SearchResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.chat.create_segment") - async def create_segment(self, type: str, all_sender_channels: Optional[bool] = None, all_users: Optional[bool] = None, description: Optional[str] = None, id: Optional[str] = None, name: Optional[str] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[CreateSegmentResponse]: - json = CreateSegmentRequest(type=type, all_sender_channels=all_sender_channels, all_users=all_users, description=description, id=id, name=name, filter=filter).to_dict() - return await self.post("/api/v2/chat/segments", CreateSegmentResponse, json=json) - + async def create_segment( + self, + type: str, + all_sender_channels: Optional[bool] = None, + all_users: Optional[bool] = None, + description: Optional[str] = None, + id: Optional[str] = None, + name: Optional[str] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[CreateSegmentResponse]: + json = CreateSegmentRequest( + type=type, + all_sender_channels=all_sender_channels, + all_users=all_users, + description=description, + id=id, + name=name, + filter=filter, + ).to_dict() + return await self.post( + "/api/v2/chat/segments", CreateSegmentResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.query_segments") - async def query_segments(self, filter: Dict[str, object], limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None) -> StreamResponse[QuerySegmentsResponse]: - json = QuerySegmentsRequest(filter=filter, limit=limit, next=next, prev=prev, sort=sort).to_dict() - return await self.post("/api/v2/chat/segments/query", QuerySegmentsResponse, json=json) - + async def query_segments( + self, + filter: Dict[str, object], + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + ) -> StreamResponse[QuerySegmentsResponse]: + json = QuerySegmentsRequest( + filter=filter, limit=limit, next=next, prev=prev, sort=sort + ).to_dict() + return await self.post( + "/api/v2/chat/segments/query", QuerySegmentsResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.delete_segment") async def delete_segment(self, id: str) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - return await self.delete("/api/v2/chat/segments/{id}", Response, path_params=path_params) - + return await self.delete( + "/api/v2/chat/segments/{id}", Response, path_params=path_params + ) + @telemetry.operation_name("getstream.api.chat.get_segment") async def get_segment(self, id: str) -> StreamResponse[GetSegmentResponse]: path_params = { - "id": id, + "id": id, } - return await self.get("/api/v2/chat/segments/{id}", GetSegmentResponse, path_params=path_params) - + return await self.get( + "/api/v2/chat/segments/{id}", GetSegmentResponse, path_params=path_params + ) + @telemetry.operation_name("getstream.api.chat.update_segment") - async def update_segment(self, id: str, description: Optional[str] = None, name: Optional[str] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[UpdateSegmentResponse]: - path_params = { - "id": id, - } - json = UpdateSegmentRequest(description=description, name=name, filter=filter).to_dict() - return await self.put("/api/v2/chat/segments/{id}", UpdateSegmentResponse, path_params=path_params, json=json) - + async def update_segment( + self, + id: str, + description: Optional[str] = None, + name: Optional[str] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[UpdateSegmentResponse]: + path_params = { + "id": id, + } + json = UpdateSegmentRequest( + description=description, name=name, filter=filter + ).to_dict() + return await self.put( + "/api/v2/chat/segments/{id}", + UpdateSegmentResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.add_segment_targets") - async def add_segment_targets(self, id: str, target_ids: List[str]) -> StreamResponse[Response]: + async def add_segment_targets( + self, id: str, target_ids: List[str] + ) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } json = AddSegmentTargetsRequest(target_ids=target_ids).to_dict() - return await self.post("/api/v2/chat/segments/{id}/addtargets", Response, path_params=path_params, json=json) - + return await self.post( + "/api/v2/chat/segments/{id}/addtargets", + Response, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.delete_segment_targets") - async def delete_segment_targets(self, id: str, target_ids: List[str]) -> StreamResponse[Response]: + async def delete_segment_targets( + self, id: str, target_ids: List[str] + ) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } json = DeleteSegmentTargetsRequest(target_ids=target_ids).to_dict() - return await self.post("/api/v2/chat/segments/{id}/deletetargets", Response, path_params=path_params, json=json) - + return await self.post( + "/api/v2/chat/segments/{id}/deletetargets", + Response, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.segment_target_exists") - async def segment_target_exists(self, id: str, target_id: str) -> StreamResponse[Response]: + async def segment_target_exists( + self, id: str, target_id: str + ) -> StreamResponse[Response]: path_params = { - "id": id, "target_id": target_id, + "id": id, + "target_id": target_id, } - return await self.get("/api/v2/chat/segments/{id}/target/{target_id}", Response, path_params=path_params) - + return await self.get( + "/api/v2/chat/segments/{id}/target/{target_id}", + Response, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.query_segment_targets") - async def query_segment_targets(self, id: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QuerySegmentTargetsResponse]: - path_params = { - "id": id, - } - json = QuerySegmentTargetsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() - return await self.post("/api/v2/chat/segments/{id}/targets/query", QuerySegmentTargetsResponse, path_params=path_params, json=json) - + async def query_segment_targets( + self, + id: str, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QuerySegmentTargetsResponse]: + path_params = { + "id": id, + } + json = QuerySegmentTargetsRequest( + limit=limit, next=next, prev=prev, sort=sort, filter=filter + ).to_dict() + return await self.post( + "/api/v2/chat/segments/{id}/targets/query", + QuerySegmentTargetsResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.query_team_usage_stats") - async def query_team_usage_stats(self, end_date: Optional[str] = None, limit: Optional[int] = None, month: Optional[str] = None, next: Optional[str] = None, start_date: Optional[str] = None, team: Optional[str] = None) -> StreamResponse[QueryTeamUsageStatsResponse]: - json = QueryTeamUsageStatsRequest(end_date=end_date, limit=limit, month=month, next=next, start_date=start_date, team=team).to_dict() - return await self.post("/api/v2/chat/stats/team_usage", QueryTeamUsageStatsResponse, json=json) - + async def query_team_usage_stats( + self, + end_date: Optional[str] = None, + limit: Optional[int] = None, + month: Optional[str] = None, + next: Optional[str] = None, + start_date: Optional[str] = None, + team: Optional[str] = None, + ) -> StreamResponse[QueryTeamUsageStatsResponse]: + json = QueryTeamUsageStatsRequest( + end_date=end_date, + limit=limit, + month=month, + next=next, + start_date=start_date, + team=team, + ).to_dict() + return await self.post( + "/api/v2/chat/stats/team_usage", QueryTeamUsageStatsResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.query_threads") - async def query_threads(self, limit: Optional[int] = None, member_limit: Optional[int] = None, next: Optional[str] = None, participant_limit: Optional[int] = None, prev: Optional[str] = None, reply_limit: Optional[int] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryThreadsResponse]: - json = QueryThreadsRequest(limit=limit, member_limit=member_limit, next=next, participant_limit=participant_limit, prev=prev, reply_limit=reply_limit, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + async def query_threads( + self, + limit: Optional[int] = None, + member_limit: Optional[int] = None, + next: Optional[str] = None, + participant_limit: Optional[int] = None, + prev: Optional[str] = None, + reply_limit: Optional[int] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryThreadsResponse]: + json = QueryThreadsRequest( + limit=limit, + member_limit=member_limit, + next=next, + participant_limit=participant_limit, + prev=prev, + reply_limit=reply_limit, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() return await self.post("/api/v2/chat/threads", QueryThreadsResponse, json=json) - + @telemetry.operation_name("getstream.api.chat.get_thread") - async def get_thread(self, message_id: str, reply_limit: Optional[int] = None, participant_limit: Optional[int] = None, member_limit: Optional[int] = None) -> StreamResponse[GetThreadResponse]: - query_params = build_query_param(reply_limit=reply_limit, participant_limit=participant_limit, member_limit=member_limit) + async def get_thread( + self, + message_id: str, + reply_limit: Optional[int] = None, + participant_limit: Optional[int] = None, + member_limit: Optional[int] = None, + ) -> StreamResponse[GetThreadResponse]: + query_params = build_query_param( + reply_limit=reply_limit, + participant_limit=participant_limit, + member_limit=member_limit, + ) path_params = { - "message_id": message_id, + "message_id": message_id, } - return await self.get("/api/v2/chat/threads/{message_id}", GetThreadResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/chat/threads/{message_id}", + GetThreadResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.update_thread_partial") - async def update_thread_partial(self, message_id: str, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateThreadPartialResponse]: - path_params = { - "message_id": message_id, - } - json = UpdateThreadPartialRequest(user_id=user_id, unset=unset, set=set, user=user).to_dict() - return await self.patch("/api/v2/chat/threads/{message_id}", UpdateThreadPartialResponse, path_params=path_params, json=json) - + async def update_thread_partial( + self, + message_id: str, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateThreadPartialResponse]: + path_params = { + "message_id": message_id, + } + json = UpdateThreadPartialRequest( + user_id=user_id, unset=unset, set=set, user=user + ).to_dict() + return await self.patch( + "/api/v2/chat/threads/{message_id}", + UpdateThreadPartialResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.unread_counts") - async def unread_counts(self, user_id: Optional[str] = None) -> StreamResponse[WrappedUnreadCountsResponse]: + async def unread_counts( + self, user_id: Optional[str] = None + ) -> StreamResponse[WrappedUnreadCountsResponse]: query_params = build_query_param(user_id=user_id) - return await self.get("/api/v2/chat/unread", WrappedUnreadCountsResponse, query_params=query_params) - + return await self.get( + "/api/v2/chat/unread", + WrappedUnreadCountsResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.chat.unread_counts_batch") - async def unread_counts_batch(self, user_ids: List[str]) -> StreamResponse[UnreadCountsBatchResponse]: + async def unread_counts_batch( + self, user_ids: List[str] + ) -> StreamResponse[UnreadCountsBatchResponse]: json = UnreadCountsBatchRequest(user_ids=user_ids).to_dict() - return await self.post("/api/v2/chat/unread_batch", UnreadCountsBatchResponse, json=json) - + return await self.post( + "/api/v2/chat/unread_batch", UnreadCountsBatchResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.send_user_custom_event") - async def send_user_custom_event(self, user_id: str, event: UserCustomEventRequest) -> StreamResponse[Response]: + async def send_user_custom_event( + self, user_id: str, event: UserCustomEventRequest + ) -> StreamResponse[Response]: path_params = { - "user_id": user_id, + "user_id": user_id, } json = SendUserCustomEventRequest(event=event).to_dict() - return await self.post("/api/v2/chat/users/{user_id}/event", Response, path_params=path_params, json=json) - \ No newline at end of file + return await self.post( + "/api/v2/chat/users/{user_id}/event", + Response, + path_params=path_params, + json=json, + ) diff --git a/getstream/chat/channel.py b/getstream/chat/channel.py index 966ef73e..c3974a28 100644 --- a/getstream/chat/channel.py +++ b/getstream/chat/channel.py @@ -5,144 +5,427 @@ class Channel: - - def __init__(self, client, channel_type: str, channel_id: str = None, custom_data: Dict = None): + def __init__( + self, + client, + channel_type: str, + channel_id: str = None, + custom_data: Dict = None, + ): self.channel_id = channel_id self.channel_type = channel_type self.client = client self.custom_data = custom_data or {} def _sync_from_response(self, data): - if hasattr(data, 'channel') and isinstance(data.channel, ChannelResponse): + if hasattr(data, "channel") and isinstance(data.channel, ChannelResponse): self.custom_data = data.channel.custom - - @attach_channel_cid - def delete(self, hard_delete: Optional[bool] = None) -> StreamResponse[DeleteChannelResponse]: - response = self.client.delete_channel(type=self.channel_type, id=self.channel_id, hard_delete=hard_delete) + def delete( + self, hard_delete: Optional[bool] = None + ) -> StreamResponse[DeleteChannelResponse]: + response = self.client.delete_channel( + type=self.channel_type, id=self.channel_id, hard_delete=hard_delete + ) self._sync_from_response(response.data) return response @attach_channel_cid - def get(self, state: Optional[bool] = None, messages_limit: Optional[int] = None, members_limit: Optional[int] = None, watchers_limit: Optional[int] = None, messages_id_lt: Optional[str] = None, messages_id_lte: Optional[str] = None, messages_id_gt: Optional[str] = None, messages_id_gte: Optional[str] = None, messages_id_around: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[ChannelStateResponse]: - response = self.client.get_channel(type=self.channel_type, id=self.channel_id, state=state, messages_limit=messages_limit, members_limit=members_limit, watchers_limit=watchers_limit, messages_id_lt=messages_id_lt, messages_id_lte=messages_id_lte, messages_id_gt=messages_id_gt, messages_id_gte=messages_id_gte, messages_id_around=messages_id_around, user_id=user_id) + def get( + self, + state: Optional[bool] = None, + messages_limit: Optional[int] = None, + members_limit: Optional[int] = None, + watchers_limit: Optional[int] = None, + messages_id_lt: Optional[str] = None, + messages_id_lte: Optional[str] = None, + messages_id_gt: Optional[str] = None, + messages_id_gte: Optional[str] = None, + messages_id_around: Optional[str] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[ChannelStateResponse]: + response = self.client.get_channel( + type=self.channel_type, + id=self.channel_id, + state=state, + messages_limit=messages_limit, + members_limit=members_limit, + watchers_limit=watchers_limit, + messages_id_lt=messages_id_lt, + messages_id_lte=messages_id_lte, + messages_id_gt=messages_id_gt, + messages_id_gte=messages_id_gte, + messages_id_around=messages_id_around, + user_id=user_id, + ) self._sync_from_response(response.data) return response @attach_channel_cid - def update_channel_partial(self, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateChannelPartialResponse]: - response = self.client.update_channel_partial(type=self.channel_type, id=self.channel_id, user_id=user_id, unset=unset, set=set, user=user) + def update_channel_partial( + self, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateChannelPartialResponse]: + response = self.client.update_channel_partial( + type=self.channel_type, + id=self.channel_id, + user_id=user_id, + unset=unset, + set=set, + user=user, + ) self._sync_from_response(response.data) return response @attach_channel_cid - def update(self, accept_invite: Optional[bool] = None, cooldown: Optional[int] = None, hide_history: Optional[bool] = None, hide_history_before: Optional[datetime] = None, reject_invite: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, add_filter_tags: Optional[List[str]] = None, add_members: Optional[List[ChannelMemberRequest]] = None, add_moderators: Optional[List[str]] = None, assign_roles: Optional[List[ChannelMemberRequest]] = None, demote_moderators: Optional[List[str]] = None, invites: Optional[List[ChannelMemberRequest]] = None, remove_filter_tags: Optional[List[str]] = None, remove_members: Optional[List[str]] = None, data: Optional[ChannelInputRequest] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateChannelResponse]: - response = self.client.update_channel(type=self.channel_type, id=self.channel_id, accept_invite=accept_invite, cooldown=cooldown, hide_history=hide_history, hide_history_before=hide_history_before, reject_invite=reject_invite, skip_push=skip_push, user_id=user_id, add_filter_tags=add_filter_tags, add_members=add_members, add_moderators=add_moderators, assign_roles=assign_roles, demote_moderators=demote_moderators, invites=invites, remove_filter_tags=remove_filter_tags, remove_members=remove_members, data=data, message=message, user=user) + def update( + self, + accept_invite: Optional[bool] = None, + cooldown: Optional[int] = None, + hide_history: Optional[bool] = None, + hide_history_before: Optional[datetime] = None, + reject_invite: Optional[bool] = None, + skip_push: Optional[bool] = None, + user_id: Optional[str] = None, + add_filter_tags: Optional[List[str]] = None, + add_members: Optional[List[ChannelMemberRequest]] = None, + add_moderators: Optional[List[str]] = None, + assign_roles: Optional[List[ChannelMemberRequest]] = None, + demote_moderators: Optional[List[str]] = None, + invites: Optional[List[ChannelMemberRequest]] = None, + remove_filter_tags: Optional[List[str]] = None, + remove_members: Optional[List[str]] = None, + data: Optional[ChannelInputRequest] = None, + message: Optional[MessageRequest] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateChannelResponse]: + response = self.client.update_channel( + type=self.channel_type, + id=self.channel_id, + accept_invite=accept_invite, + cooldown=cooldown, + hide_history=hide_history, + hide_history_before=hide_history_before, + reject_invite=reject_invite, + skip_push=skip_push, + user_id=user_id, + add_filter_tags=add_filter_tags, + add_members=add_members, + add_moderators=add_moderators, + assign_roles=assign_roles, + demote_moderators=demote_moderators, + invites=invites, + remove_filter_tags=remove_filter_tags, + remove_members=remove_members, + data=data, + message=message, + user=user, + ) self._sync_from_response(response.data) return response @attach_channel_cid - def delete_draft(self, parent_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[Response]: - response = self.client.delete_draft(type=self.channel_type, id=self.channel_id, parent_id=parent_id, user_id=user_id) + def delete_draft( + self, parent_id: Optional[str] = None, user_id: Optional[str] = None + ) -> StreamResponse[Response]: + response = self.client.delete_draft( + type=self.channel_type, + id=self.channel_id, + parent_id=parent_id, + user_id=user_id, + ) self._sync_from_response(response.data) return response @attach_channel_cid - def get_draft(self, parent_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[GetDraftResponse]: - response = self.client.get_draft(type=self.channel_type, id=self.channel_id, parent_id=parent_id, user_id=user_id) + def get_draft( + self, parent_id: Optional[str] = None, user_id: Optional[str] = None + ) -> StreamResponse[GetDraftResponse]: + response = self.client.get_draft( + type=self.channel_type, + id=self.channel_id, + parent_id=parent_id, + user_id=user_id, + ) self._sync_from_response(response.data) return response @attach_channel_cid def send_event(self, event: EventRequest) -> StreamResponse[EventResponse]: - response = self.client.send_event(type=self.channel_type, id=self.channel_id, event=event) + response = self.client.send_event( + type=self.channel_type, id=self.channel_id, event=event + ) self._sync_from_response(response.data) return response @attach_channel_cid - def delete_channel_file(self, url: Optional[str] = None) -> StreamResponse[Response]: - response = self.client.delete_channel_file(type=self.channel_type, id=self.channel_id, url=url) + def delete_channel_file( + self, url: Optional[str] = None + ) -> StreamResponse[Response]: + response = self.client.delete_channel_file( + type=self.channel_type, id=self.channel_id, url=url + ) self._sync_from_response(response.data) return response @attach_channel_cid - def upload_channel_file(self, file: Optional[str] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[UploadChannelFileResponse]: - response = self.client.upload_channel_file(type=self.channel_type, id=self.channel_id, file=file, user=user) + def upload_channel_file( + self, file: Optional[str] = None, user: Optional[OnlyUserID] = None + ) -> StreamResponse[UploadChannelFileResponse]: + response = self.client.upload_channel_file( + type=self.channel_type, id=self.channel_id, file=file, user=user + ) self._sync_from_response(response.data) return response @attach_channel_cid - def hide(self, clear_history: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[HideChannelResponse]: - response = self.client.hide_channel(type=self.channel_type, id=self.channel_id, clear_history=clear_history, user_id=user_id, user=user) + def hide( + self, + clear_history: Optional[bool] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[HideChannelResponse]: + response = self.client.hide_channel( + type=self.channel_type, + id=self.channel_id, + clear_history=clear_history, + user_id=user_id, + user=user, + ) self._sync_from_response(response.data) return response @attach_channel_cid - def delete_channel_image(self, url: Optional[str] = None) -> StreamResponse[Response]: - response = self.client.delete_channel_image(type=self.channel_type, id=self.channel_id, url=url) + def delete_channel_image( + self, url: Optional[str] = None + ) -> StreamResponse[Response]: + response = self.client.delete_channel_image( + type=self.channel_type, id=self.channel_id, url=url + ) self._sync_from_response(response.data) return response @attach_channel_cid - def upload_channel_image(self, file: Optional[str] = None, upload_sizes: Optional[List[ImageSize]] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[UploadChannelResponse]: - response = self.client.upload_channel_image(type=self.channel_type, id=self.channel_id, file=file, upload_sizes=upload_sizes, user=user) + def upload_channel_image( + self, + file: Optional[str] = None, + upload_sizes: Optional[List[ImageSize]] = None, + user: Optional[OnlyUserID] = None, + ) -> StreamResponse[UploadChannelResponse]: + response = self.client.upload_channel_image( + type=self.channel_type, + id=self.channel_id, + file=file, + upload_sizes=upload_sizes, + user=user, + ) self._sync_from_response(response.data) return response @attach_channel_cid - def update_member_partial(self, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None) -> StreamResponse[UpdateMemberPartialResponse]: - response = self.client.update_member_partial(type=self.channel_type, id=self.channel_id, user_id=user_id, unset=unset, set=set) + def update_member_partial( + self, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + ) -> StreamResponse[UpdateMemberPartialResponse]: + response = self.client.update_member_partial( + type=self.channel_type, + id=self.channel_id, + user_id=user_id, + unset=unset, + set=set, + ) self._sync_from_response(response.data) return response @attach_channel_cid - def send_message(self, message: MessageRequest, force_moderation: Optional[bool] = None, include_channel_context: Optional[bool] = None, include_mentioned_members: Optional[bool] = None, keep_channel_hidden: Optional[bool] = None, pending: Optional[bool] = None, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, pending_message_metadata: Optional[Dict[str, str]] = None) -> StreamResponse[SendMessageResponse]: - response = self.client.send_message(type=self.channel_type, id=self.channel_id, message=message, force_moderation=force_moderation, include_channel_context=include_channel_context, include_mentioned_members=include_mentioned_members, keep_channel_hidden=keep_channel_hidden, pending=pending, skip_enrich_url=skip_enrich_url, skip_push=skip_push, pending_message_metadata=pending_message_metadata) + def send_message( + self, + message: MessageRequest, + force_moderation: Optional[bool] = None, + include_channel_context: Optional[bool] = None, + include_mentioned_members: Optional[bool] = None, + keep_channel_hidden: Optional[bool] = None, + pending: Optional[bool] = None, + skip_enrich_url: Optional[bool] = None, + skip_push: Optional[bool] = None, + pending_message_metadata: Optional[Dict[str, str]] = None, + ) -> StreamResponse[SendMessageResponse]: + response = self.client.send_message( + type=self.channel_type, + id=self.channel_id, + message=message, + force_moderation=force_moderation, + include_channel_context=include_channel_context, + include_mentioned_members=include_mentioned_members, + keep_channel_hidden=keep_channel_hidden, + pending=pending, + skip_enrich_url=skip_enrich_url, + skip_push=skip_push, + pending_message_metadata=pending_message_metadata, + ) self._sync_from_response(response.data) return response @attach_channel_cid - def get_many_messages(self, ids: List[str], member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetManyMessagesResponse]: - response = self.client.get_many_messages(type=self.channel_type, id=self.channel_id, ids=ids, member_custom_include=member_custom_include) + def get_many_messages( + self, ids: List[str], member_custom_include: Optional[List[str]] = None + ) -> StreamResponse[GetManyMessagesResponse]: + response = self.client.get_many_messages( + type=self.channel_type, + id=self.channel_id, + ids=ids, + member_custom_include=member_custom_include, + ) self._sync_from_response(response.data) return response @attach_channel_cid - def get_pinned_messages(self, limit: Optional[int] = None, offset: Optional[int] = None, id_gte: Optional[str] = None, id_gt: Optional[str] = None, id_lte: Optional[str] = None, id_lt: Optional[str] = None, pinned_at_after_or_equal: Optional[datetime] = None, pinned_at_after: Optional[datetime] = None, pinned_at_before_or_equal: Optional[datetime] = None, pinned_at_before: Optional[datetime] = None, id_around: Optional[str] = None, pinned_at_around: Optional[datetime] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetPinnedMessagesResponse]: - response = self.client.get_pinned_messages(type=self.channel_type, id=self.channel_id, limit=limit, offset=offset, id_gte=id_gte, id_gt=id_gt, id_lte=id_lte, id_lt=id_lt, pinned_at_after_or_equal=pinned_at_after_or_equal, pinned_at_after=pinned_at_after, pinned_at_before_or_equal=pinned_at_before_or_equal, pinned_at_before=pinned_at_before, id_around=id_around, pinned_at_around=pinned_at_around, user_id=user_id, sort=sort, member_custom_include=member_custom_include) + def get_pinned_messages( + self, + limit: Optional[int] = None, + offset: Optional[int] = None, + id_gte: Optional[str] = None, + id_gt: Optional[str] = None, + id_lte: Optional[str] = None, + id_lt: Optional[str] = None, + pinned_at_after_or_equal: Optional[datetime] = None, + pinned_at_after: Optional[datetime] = None, + pinned_at_before_or_equal: Optional[datetime] = None, + pinned_at_before: Optional[datetime] = None, + id_around: Optional[str] = None, + pinned_at_around: Optional[datetime] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + member_custom_include: Optional[List[str]] = None, + ) -> StreamResponse[GetPinnedMessagesResponse]: + response = self.client.get_pinned_messages( + type=self.channel_type, + id=self.channel_id, + limit=limit, + offset=offset, + id_gte=id_gte, + id_gt=id_gt, + id_lte=id_lte, + id_lt=id_lt, + pinned_at_after_or_equal=pinned_at_after_or_equal, + pinned_at_after=pinned_at_after, + pinned_at_before_or_equal=pinned_at_before_or_equal, + pinned_at_before=pinned_at_before, + id_around=id_around, + pinned_at_around=pinned_at_around, + user_id=user_id, + sort=sort, + member_custom_include=member_custom_include, + ) self._sync_from_response(response.data) return response @attach_channel_cid - def get_or_create(self, hide_for_creator: Optional[bool] = None, state: Optional[bool] = None, thread_unread_counts: Optional[bool] = None, member_custom_include: Optional[List[str]] = None, data: Optional[ChannelInput] = None, members: Optional[PaginationParams] = None, messages: Optional[MessagePaginationParams] = None, watchers: Optional[PaginationParams] = None) -> StreamResponse[ChannelStateResponse]: - response = self.client.get_or_create_channel(type=self.channel_type, id=self.channel_id, hide_for_creator=hide_for_creator, state=state, thread_unread_counts=thread_unread_counts, member_custom_include=member_custom_include, data=data, members=members, messages=messages, watchers=watchers) + def get_or_create( + self, + hide_for_creator: Optional[bool] = None, + state: Optional[bool] = None, + thread_unread_counts: Optional[bool] = None, + member_custom_include: Optional[List[str]] = None, + data: Optional[ChannelInput] = None, + members: Optional[PaginationParams] = None, + messages: Optional[MessagePaginationParams] = None, + watchers: Optional[PaginationParams] = None, + ) -> StreamResponse[ChannelStateResponse]: + response = self.client.get_or_create_channel( + type=self.channel_type, + id=self.channel_id, + hide_for_creator=hide_for_creator, + state=state, + thread_unread_counts=thread_unread_counts, + member_custom_include=member_custom_include, + data=data, + members=members, + messages=messages, + watchers=watchers, + ) self._sync_from_response(response.data) return response @attach_channel_cid - def mark_read(self, message_id: Optional[str] = None, thread_id: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[MarkReadResponse]: - response = self.client.mark_read(type=self.channel_type, id=self.channel_id, message_id=message_id, thread_id=thread_id, user_id=user_id, user=user) + def mark_read( + self, + message_id: Optional[str] = None, + thread_id: Optional[str] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[MarkReadResponse]: + response = self.client.mark_read( + type=self.channel_type, + id=self.channel_id, + message_id=message_id, + thread_id=thread_id, + user_id=user_id, + user=user, + ) self._sync_from_response(response.data) return response @attach_channel_cid - def show(self, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[ShowChannelResponse]: - response = self.client.show_channel(type=self.channel_type, id=self.channel_id, user_id=user_id, user=user) + def show( + self, user_id: Optional[str] = None, user: Optional[UserRequest] = None + ) -> StreamResponse[ShowChannelResponse]: + response = self.client.show_channel( + type=self.channel_type, id=self.channel_id, user_id=user_id, user=user + ) self._sync_from_response(response.data) return response @attach_channel_cid - def truncate(self, hard_delete: Optional[bool] = None, skip_push: Optional[bool] = None, truncated_at: Optional[datetime] = None, user_id: Optional[str] = None, member_ids: Optional[List[str]] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[TruncateChannelResponse]: - response = self.client.truncate_channel(type=self.channel_type, id=self.channel_id, hard_delete=hard_delete, skip_push=skip_push, truncated_at=truncated_at, user_id=user_id, member_ids=member_ids, message=message, user=user) + def truncate( + self, + hard_delete: Optional[bool] = None, + skip_push: Optional[bool] = None, + truncated_at: Optional[datetime] = None, + user_id: Optional[str] = None, + member_ids: Optional[List[str]] = None, + message: Optional[MessageRequest] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[TruncateChannelResponse]: + response = self.client.truncate_channel( + type=self.channel_type, + id=self.channel_id, + hard_delete=hard_delete, + skip_push=skip_push, + truncated_at=truncated_at, + user_id=user_id, + member_ids=member_ids, + message=message, + user=user, + ) self._sync_from_response(response.data) return response @attach_channel_cid - def mark_unread(self, message_id: Optional[str] = None, message_timestamp: Optional[datetime] = None, thread_id: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[Response]: - response = self.client.mark_unread(type=self.channel_type, id=self.channel_id, message_id=message_id, message_timestamp=message_timestamp, thread_id=thread_id, user_id=user_id, user=user) + def mark_unread( + self, + message_id: Optional[str] = None, + message_timestamp: Optional[datetime] = None, + thread_id: Optional[str] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[Response]: + response = self.client.mark_unread( + type=self.channel_type, + id=self.channel_id, + message_id=message_id, + message_timestamp=message_timestamp, + thread_id=thread_id, + user_id=user_id, + user=user, + ) self._sync_from_response(response.data) return response - - create = get_or_create \ No newline at end of file + create = get_or_create diff --git a/getstream/chat/rest_client.py b/getstream/chat/rest_client.py index c1998dd5..c20a4b48 100644 --- a/getstream/chat/rest_client.py +++ b/getstream/chat/rest_client.py @@ -1,4 +1,3 @@ - # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import BaseClient from getstream.common import telemetry @@ -8,8 +7,14 @@ class ChatRestClient(BaseClient): - - def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): + def __init__( + self, + api_key: str, + base_url: str, + timeout: float, + token: str, + user_agent: str = None, + ): """ Initializes ChatClient with BaseClient instance :param api_key: A string representing the client's API key @@ -26,688 +31,2081 @@ def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user user_agent=user_agent, ) - @telemetry.operation_name("getstream.api.chat.create_campaign") - def create_campaign(self, sender_id: str, message_template: CampaignMessageTemplate, create_channels: Optional[bool] = None, description: Optional[str] = None, id: Optional[str] = None, name: Optional[str] = None, sender_mode: Optional[str] = None, sender_visibility: Optional[str] = None, show_channels: Optional[bool] = None, skip_push: Optional[bool] = None, skip_webhook: Optional[bool] = None, segment_ids: Optional[List[str]] = None, user_ids: Optional[List[str]] = None, channel_template: Optional[CampaignChannelTemplate] = None) -> StreamResponse[CreateCampaignResponse]: - json = CreateCampaignRequest(sender_id=sender_id, message_template=message_template, create_channels=create_channels, description=description, id=id, name=name, sender_mode=sender_mode, sender_visibility=sender_visibility, show_channels=show_channels, skip_push=skip_push, skip_webhook=skip_webhook, segment_ids=segment_ids, user_ids=user_ids, channel_template=channel_template).to_dict() + def create_campaign( + self, + sender_id: str, + message_template: CampaignMessageTemplate, + create_channels: Optional[bool] = None, + description: Optional[str] = None, + id: Optional[str] = None, + name: Optional[str] = None, + sender_mode: Optional[str] = None, + sender_visibility: Optional[str] = None, + show_channels: Optional[bool] = None, + skip_push: Optional[bool] = None, + skip_webhook: Optional[bool] = None, + segment_ids: Optional[List[str]] = None, + user_ids: Optional[List[str]] = None, + channel_template: Optional[CampaignChannelTemplate] = None, + ) -> StreamResponse[CreateCampaignResponse]: + json = CreateCampaignRequest( + sender_id=sender_id, + message_template=message_template, + create_channels=create_channels, + description=description, + id=id, + name=name, + sender_mode=sender_mode, + sender_visibility=sender_visibility, + show_channels=show_channels, + skip_push=skip_push, + skip_webhook=skip_webhook, + segment_ids=segment_ids, + user_ids=user_ids, + channel_template=channel_template, + ).to_dict() return self.post("/api/v2/chat/campaigns", CreateCampaignResponse, json=json) - + @telemetry.operation_name("getstream.api.chat.query_campaigns") - def query_campaigns(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_limit: Optional[int] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCampaignsResponse]: - json = QueryCampaignsRequest(limit=limit, next=next, prev=prev, user_limit=user_limit, sort=sort, filter=filter).to_dict() - return self.post("/api/v2/chat/campaigns/query", QueryCampaignsResponse, json=json) - + def query_campaigns( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_limit: Optional[int] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCampaignsResponse]: + json = QueryCampaignsRequest( + limit=limit, + next=next, + prev=prev, + user_limit=user_limit, + sort=sort, + filter=filter, + ).to_dict() + return self.post( + "/api/v2/chat/campaigns/query", QueryCampaignsResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.delete_campaign") def delete_campaign(self, id: str) -> StreamResponse[DeleteCampaignResponse]: path_params = { - "id": id, + "id": id, } - return self.delete("/api/v2/chat/campaigns/{id}", DeleteCampaignResponse, path_params=path_params) - + return self.delete( + "/api/v2/chat/campaigns/{id}", + DeleteCampaignResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.get_campaign") - def get_campaign(self, id: str, prev: Optional[str] = None, next: Optional[str] = None, limit: Optional[int] = None) -> StreamResponse[GetCampaignResponse]: + def get_campaign( + self, + id: str, + prev: Optional[str] = None, + next: Optional[str] = None, + limit: Optional[int] = None, + ) -> StreamResponse[GetCampaignResponse]: query_params = build_query_param(prev=prev, next=next, limit=limit) path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/chat/campaigns/{id}", GetCampaignResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/chat/campaigns/{id}", + GetCampaignResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.update_campaign") - def update_campaign(self, id: str, sender_id: str, message_template: CampaignMessageTemplate, create_channels: Optional[bool] = None, description: Optional[str] = None, id_: Optional[str] = None, name: Optional[str] = None, sender_mode: Optional[str] = None, sender_visibility: Optional[str] = None, show_channels: Optional[bool] = None, skip_push: Optional[bool] = None, skip_webhook: Optional[bool] = None, segment_ids: Optional[List[str]] = None, user_ids: Optional[List[str]] = None, channel_template: Optional[CampaignChannelTemplate] = None) -> StreamResponse[CampaignResponse]: - path_params = { - "id": id, - } - json = UpdateCampaignRequest(sender_id=sender_id, message_template=message_template, create_channels=create_channels, description=description, id=id_, name=name, sender_mode=sender_mode, sender_visibility=sender_visibility, show_channels=show_channels, skip_push=skip_push, skip_webhook=skip_webhook, segment_ids=segment_ids, user_ids=user_ids, channel_template=channel_template).to_dict() - return self.put("/api/v2/chat/campaigns/{id}", CampaignResponse, path_params=path_params, json=json) - + def update_campaign( + self, + id: str, + sender_id: str, + message_template: CampaignMessageTemplate, + create_channels: Optional[bool] = None, + description: Optional[str] = None, + id_: Optional[str] = None, + name: Optional[str] = None, + sender_mode: Optional[str] = None, + sender_visibility: Optional[str] = None, + show_channels: Optional[bool] = None, + skip_push: Optional[bool] = None, + skip_webhook: Optional[bool] = None, + segment_ids: Optional[List[str]] = None, + user_ids: Optional[List[str]] = None, + channel_template: Optional[CampaignChannelTemplate] = None, + ) -> StreamResponse[CampaignResponse]: + path_params = { + "id": id, + } + json = UpdateCampaignRequest( + sender_id=sender_id, + message_template=message_template, + create_channels=create_channels, + description=description, + id=id_, + name=name, + sender_mode=sender_mode, + sender_visibility=sender_visibility, + show_channels=show_channels, + skip_push=skip_push, + skip_webhook=skip_webhook, + segment_ids=segment_ids, + user_ids=user_ids, + channel_template=channel_template, + ).to_dict() + return self.put( + "/api/v2/chat/campaigns/{id}", + CampaignResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.start_campaign") - def start_campaign(self, id: str, scheduled_for: Optional[datetime] = None, stop_at: Optional[datetime] = None) -> StreamResponse[StartCampaignResponse]: - path_params = { - "id": id, - } - json = StartCampaignRequest(scheduled_for=scheduled_for, stop_at=stop_at).to_dict() - return self.post("/api/v2/chat/campaigns/{id}/start", StartCampaignResponse, path_params=path_params, json=json) - + def start_campaign( + self, + id: str, + scheduled_for: Optional[datetime] = None, + stop_at: Optional[datetime] = None, + ) -> StreamResponse[StartCampaignResponse]: + path_params = { + "id": id, + } + json = StartCampaignRequest( + scheduled_for=scheduled_for, stop_at=stop_at + ).to_dict() + return self.post( + "/api/v2/chat/campaigns/{id}/start", + StartCampaignResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.stop_campaign") - def stop_campaign(self, id: str, ) -> StreamResponse[CampaignResponse]: + def stop_campaign( + self, + id: str, + ) -> StreamResponse[CampaignResponse]: path_params = { - "id": id, + "id": id, } json = StopCampaignRequest().to_dict() - return self.post("/api/v2/chat/campaigns/{id}/stop", CampaignResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/chat/campaigns/{id}/stop", + CampaignResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.query_channels") - def query_channels(self, limit: Optional[int] = None, member_limit: Optional[int] = None, message_limit: Optional[int] = None, offset: Optional[int] = None, predefined_filter: Optional[str] = None, state: Optional[bool] = None, user_id: Optional[str] = None, member_custom_include: Optional[List[str]] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None, filter_values: Optional[Dict[str, object]] = None, sort_values: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryChannelsResponse]: - json = QueryChannelsRequest(limit=limit, member_limit=member_limit, message_limit=message_limit, offset=offset, predefined_filter=predefined_filter, state=state, user_id=user_id, member_custom_include=member_custom_include, sort=sort, filter_conditions=filter_conditions, filter_values=filter_values, sort_values=sort_values, user=user).to_dict() + def query_channels( + self, + limit: Optional[int] = None, + member_limit: Optional[int] = None, + message_limit: Optional[int] = None, + offset: Optional[int] = None, + predefined_filter: Optional[str] = None, + state: Optional[bool] = None, + user_id: Optional[str] = None, + member_custom_include: Optional[List[str]] = None, + sort: Optional[List[SortParamRequest]] = None, + filter_conditions: Optional[Dict[str, object]] = None, + filter_values: Optional[Dict[str, object]] = None, + sort_values: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryChannelsResponse]: + json = QueryChannelsRequest( + limit=limit, + member_limit=member_limit, + message_limit=message_limit, + offset=offset, + predefined_filter=predefined_filter, + state=state, + user_id=user_id, + member_custom_include=member_custom_include, + sort=sort, + filter_conditions=filter_conditions, + filter_values=filter_values, + sort_values=sort_values, + user=user, + ).to_dict() return self.post("/api/v2/chat/channels", QueryChannelsResponse, json=json) - + @telemetry.operation_name("getstream.api.chat.channel_batch_update") - def channel_batch_update(self, operation: str, filter: Dict[str, object], custom_unset: Optional[List[str]] = None, members: Optional[List[ChannelBatchMemberRequest]] = None, custom_set: Optional[Dict[str, object]] = None, data: Optional[ChannelDataUpdate] = None) -> StreamResponse[ChannelBatchUpdateResponse]: - json = ChannelBatchUpdateRequest(operation=operation, filter=filter, custom_unset=custom_unset, members=members, custom_set=custom_set, data=data).to_dict() - return self.put("/api/v2/chat/channels/batch", ChannelBatchUpdateResponse, json=json) - + def channel_batch_update( + self, + operation: str, + filter: Dict[str, object], + custom_unset: Optional[List[str]] = None, + members: Optional[List[ChannelBatchMemberRequest]] = None, + custom_set: Optional[Dict[str, object]] = None, + data: Optional[ChannelDataUpdate] = None, + ) -> StreamResponse[ChannelBatchUpdateResponse]: + json = ChannelBatchUpdateRequest( + operation=operation, + filter=filter, + custom_unset=custom_unset, + members=members, + custom_set=custom_set, + data=data, + ).to_dict() + return self.put( + "/api/v2/chat/channels/batch", ChannelBatchUpdateResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.delete_channels") - def delete_channels(self, cids: List[str], hard_delete: Optional[bool] = None) -> StreamResponse[DeleteChannelsResponse]: + def delete_channels( + self, cids: List[str], hard_delete: Optional[bool] = None + ) -> StreamResponse[DeleteChannelsResponse]: json = DeleteChannelsRequest(cids=cids, hard_delete=hard_delete).to_dict() - return self.post("/api/v2/chat/channels/delete", DeleteChannelsResponse, json=json) - + return self.post( + "/api/v2/chat/channels/delete", DeleteChannelsResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.mark_delivered") - def mark_delivered(self, user_id: Optional[str] = None, latest_delivered_messages: Optional[List[DeliveredMessagePayload]] = None) -> StreamResponse[MarkDeliveredResponse]: + def mark_delivered( + self, + user_id: Optional[str] = None, + latest_delivered_messages: Optional[List[DeliveredMessagePayload]] = None, + ) -> StreamResponse[MarkDeliveredResponse]: query_params = build_query_param(user_id=user_id) - json = MarkDeliveredRequest(latest_delivered_messages=latest_delivered_messages).to_dict() - return self.post("/api/v2/chat/channels/delivered", MarkDeliveredResponse, query_params=query_params, json=json) - + json = MarkDeliveredRequest( + latest_delivered_messages=latest_delivered_messages + ).to_dict() + return self.post( + "/api/v2/chat/channels/delivered", + MarkDeliveredResponse, + query_params=query_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.grouped_query_channels") - def grouped_query_channels(self, limit: Optional[int] = None, user_id: Optional[str] = None, groups: Optional[Dict[str, GroupedChannelsGroupRequest]] = None, user: Optional[UserRequest] = None) -> StreamResponse[GroupedQueryChannelsResponse]: - json = GroupedQueryChannelsRequest(limit=limit, user_id=user_id, groups=groups, user=user).to_dict() - return self.post("/api/v2/chat/channels/grouped", GroupedQueryChannelsResponse, json=json) - + def grouped_query_channels( + self, + limit: Optional[int] = None, + user_id: Optional[str] = None, + groups: Optional[Dict[str, GroupedChannelsGroupRequest]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[GroupedQueryChannelsResponse]: + json = GroupedQueryChannelsRequest( + limit=limit, user_id=user_id, groups=groups, user=user + ).to_dict() + return self.post( + "/api/v2/chat/channels/grouped", GroupedQueryChannelsResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.mark_channels_read") - def mark_channels_read(self, user_id: Optional[str] = None, read_by_channel: Optional[Dict[str, str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[MarkReadResponse]: - json = MarkChannelsReadRequest(user_id=user_id, read_by_channel=read_by_channel, user=user).to_dict() + def mark_channels_read( + self, + user_id: Optional[str] = None, + read_by_channel: Optional[Dict[str, str]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[MarkReadResponse]: + json = MarkChannelsReadRequest( + user_id=user_id, read_by_channel=read_by_channel, user=user + ).to_dict() return self.post("/api/v2/chat/channels/read", MarkReadResponse, json=json) - + @telemetry.operation_name("getstream.api.chat.get_or_create_distinct_channel") - def get_or_create_distinct_channel(self, type: str, hide_for_creator: Optional[bool] = None, state: Optional[bool] = None, thread_unread_counts: Optional[bool] = None, member_custom_include: Optional[List[str]] = None, data: Optional[ChannelInput] = None, members: Optional[PaginationParams] = None, messages: Optional[MessagePaginationParams] = None, watchers: Optional[PaginationParams] = None) -> StreamResponse[ChannelStateResponse]: - path_params = { - "type": type, - } - json = ChannelGetOrCreateRequest(hide_for_creator=hide_for_creator, state=state, thread_unread_counts=thread_unread_counts, member_custom_include=member_custom_include, data=data, members=members, messages=messages, watchers=watchers).to_dict() - return self.post("/api/v2/chat/channels/{type}/query", ChannelStateResponse, path_params=path_params, json=json) - + def get_or_create_distinct_channel( + self, + type: str, + hide_for_creator: Optional[bool] = None, + state: Optional[bool] = None, + thread_unread_counts: Optional[bool] = None, + member_custom_include: Optional[List[str]] = None, + data: Optional[ChannelInput] = None, + members: Optional[PaginationParams] = None, + messages: Optional[MessagePaginationParams] = None, + watchers: Optional[PaginationParams] = None, + ) -> StreamResponse[ChannelStateResponse]: + path_params = { + "type": type, + } + json = ChannelGetOrCreateRequest( + hide_for_creator=hide_for_creator, + state=state, + thread_unread_counts=thread_unread_counts, + member_custom_include=member_custom_include, + data=data, + members=members, + messages=messages, + watchers=watchers, + ).to_dict() + return self.post( + "/api/v2/chat/channels/{type}/query", + ChannelStateResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.delete_channel") - def delete_channel(self, type: str, id: str, hard_delete: Optional[bool] = None) -> StreamResponse[DeleteChannelResponse]: + def delete_channel( + self, type: str, id: str, hard_delete: Optional[bool] = None + ) -> StreamResponse[DeleteChannelResponse]: query_params = build_query_param(hard_delete=hard_delete) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return self.delete("/api/v2/chat/channels/{type}/{id}", DeleteChannelResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/chat/channels/{type}/{id}", + DeleteChannelResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.get_channel") - def get_channel(self, type: str, id: str, state: Optional[bool] = None, messages_limit: Optional[int] = None, members_limit: Optional[int] = None, watchers_limit: Optional[int] = None, messages_id_lt: Optional[str] = None, messages_id_lte: Optional[str] = None, messages_id_gt: Optional[str] = None, messages_id_gte: Optional[str] = None, messages_id_around: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[ChannelStateResponse]: - query_params = build_query_param(state=state, messages_limit=messages_limit, members_limit=members_limit, watchers_limit=watchers_limit, messages_id_lt=messages_id_lt, messages_id_lte=messages_id_lte, messages_id_gt=messages_id_gt, messages_id_gte=messages_id_gte, messages_id_around=messages_id_around, user_id=user_id) + def get_channel( + self, + type: str, + id: str, + state: Optional[bool] = None, + messages_limit: Optional[int] = None, + members_limit: Optional[int] = None, + watchers_limit: Optional[int] = None, + messages_id_lt: Optional[str] = None, + messages_id_lte: Optional[str] = None, + messages_id_gt: Optional[str] = None, + messages_id_gte: Optional[str] = None, + messages_id_around: Optional[str] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[ChannelStateResponse]: + query_params = build_query_param( + state=state, + messages_limit=messages_limit, + members_limit=members_limit, + watchers_limit=watchers_limit, + messages_id_lt=messages_id_lt, + messages_id_lte=messages_id_lte, + messages_id_gt=messages_id_gt, + messages_id_gte=messages_id_gte, + messages_id_around=messages_id_around, + user_id=user_id, + ) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return self.get("/api/v2/chat/channels/{type}/{id}", ChannelStateResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/chat/channels/{type}/{id}", + ChannelStateResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.update_channel_partial") - def update_channel_partial(self, type: str, id: str, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateChannelPartialResponse]: - path_params = { - "type": type, "id": id, - } - json = UpdateChannelPartialRequest(user_id=user_id, unset=unset, set=set, user=user).to_dict() - return self.patch("/api/v2/chat/channels/{type}/{id}", UpdateChannelPartialResponse, path_params=path_params, json=json) - + def update_channel_partial( + self, + type: str, + id: str, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateChannelPartialResponse]: + path_params = { + "type": type, + "id": id, + } + json = UpdateChannelPartialRequest( + user_id=user_id, unset=unset, set=set, user=user + ).to_dict() + return self.patch( + "/api/v2/chat/channels/{type}/{id}", + UpdateChannelPartialResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.update_channel") - def update_channel(self, type: str, id: str, accept_invite: Optional[bool] = None, cooldown: Optional[int] = None, hide_history: Optional[bool] = None, hide_history_before: Optional[datetime] = None, reject_invite: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, add_filter_tags: Optional[List[str]] = None, add_members: Optional[List[ChannelMemberRequest]] = None, add_moderators: Optional[List[str]] = None, assign_roles: Optional[List[ChannelMemberRequest]] = None, demote_moderators: Optional[List[str]] = None, invites: Optional[List[ChannelMemberRequest]] = None, remove_filter_tags: Optional[List[str]] = None, remove_members: Optional[List[str]] = None, data: Optional[ChannelInputRequest] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateChannelResponse]: - path_params = { - "type": type, "id": id, - } - json = UpdateChannelRequest(accept_invite=accept_invite, cooldown=cooldown, hide_history=hide_history, hide_history_before=hide_history_before, reject_invite=reject_invite, skip_push=skip_push, user_id=user_id, add_filter_tags=add_filter_tags, add_members=add_members, add_moderators=add_moderators, assign_roles=assign_roles, demote_moderators=demote_moderators, invites=invites, remove_filter_tags=remove_filter_tags, remove_members=remove_members, data=data, message=message, user=user).to_dict() - return self.post("/api/v2/chat/channels/{type}/{id}", UpdateChannelResponse, path_params=path_params, json=json) - + def update_channel( + self, + type: str, + id: str, + accept_invite: Optional[bool] = None, + cooldown: Optional[int] = None, + hide_history: Optional[bool] = None, + hide_history_before: Optional[datetime] = None, + reject_invite: Optional[bool] = None, + skip_push: Optional[bool] = None, + user_id: Optional[str] = None, + add_filter_tags: Optional[List[str]] = None, + add_members: Optional[List[ChannelMemberRequest]] = None, + add_moderators: Optional[List[str]] = None, + assign_roles: Optional[List[ChannelMemberRequest]] = None, + demote_moderators: Optional[List[str]] = None, + invites: Optional[List[ChannelMemberRequest]] = None, + remove_filter_tags: Optional[List[str]] = None, + remove_members: Optional[List[str]] = None, + data: Optional[ChannelInputRequest] = None, + message: Optional[MessageRequest] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateChannelResponse]: + path_params = { + "type": type, + "id": id, + } + json = UpdateChannelRequest( + accept_invite=accept_invite, + cooldown=cooldown, + hide_history=hide_history, + hide_history_before=hide_history_before, + reject_invite=reject_invite, + skip_push=skip_push, + user_id=user_id, + add_filter_tags=add_filter_tags, + add_members=add_members, + add_moderators=add_moderators, + assign_roles=assign_roles, + demote_moderators=demote_moderators, + invites=invites, + remove_filter_tags=remove_filter_tags, + remove_members=remove_members, + data=data, + message=message, + user=user, + ).to_dict() + return self.post( + "/api/v2/chat/channels/{type}/{id}", + UpdateChannelResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.delete_draft") - def delete_draft(self, type: str, id: str, parent_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[Response]: + def delete_draft( + self, + type: str, + id: str, + parent_id: Optional[str] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[Response]: query_params = build_query_param(parent_id=parent_id, user_id=user_id) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return self.delete("/api/v2/chat/channels/{type}/{id}/draft", Response, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/chat/channels/{type}/{id}/draft", + Response, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.get_draft") - def get_draft(self, type: str, id: str, parent_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[GetDraftResponse]: + def get_draft( + self, + type: str, + id: str, + parent_id: Optional[str] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[GetDraftResponse]: query_params = build_query_param(parent_id=parent_id, user_id=user_id) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return self.get("/api/v2/chat/channels/{type}/{id}/draft", GetDraftResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/chat/channels/{type}/{id}/draft", + GetDraftResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.send_event") - def send_event(self, type: str, id: str, event: EventRequest) -> StreamResponse[EventResponse]: + def send_event( + self, type: str, id: str, event: EventRequest + ) -> StreamResponse[EventResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = SendEventRequest(event=event).to_dict() - return self.post("/api/v2/chat/channels/{type}/{id}/event", EventResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/chat/channels/{type}/{id}/event", + EventResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.delete_channel_file") - def delete_channel_file(self, type: str, id: str, url: Optional[str] = None) -> StreamResponse[Response]: + def delete_channel_file( + self, type: str, id: str, url: Optional[str] = None + ) -> StreamResponse[Response]: query_params = build_query_param(url=url) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return self.delete("/api/v2/chat/channels/{type}/{id}/file", Response, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/chat/channels/{type}/{id}/file", + Response, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.upload_channel_file") - def upload_channel_file(self, type: str, id: str, file: Optional[str] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[UploadChannelFileResponse]: + def upload_channel_file( + self, + type: str, + id: str, + file: Optional[str] = None, + user: Optional[OnlyUserID] = None, + ) -> StreamResponse[UploadChannelFileResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = UploadChannelFileRequest(file=file, user=user).to_dict() - return self.post("/api/v2/chat/channels/{type}/{id}/file", UploadChannelFileResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/chat/channels/{type}/{id}/file", + UploadChannelFileResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.hide_channel") - def hide_channel(self, type: str, id: str, clear_history: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[HideChannelResponse]: - path_params = { - "type": type, "id": id, - } - json = HideChannelRequest(clear_history=clear_history, user_id=user_id, user=user).to_dict() - return self.post("/api/v2/chat/channels/{type}/{id}/hide", HideChannelResponse, path_params=path_params, json=json) - + def hide_channel( + self, + type: str, + id: str, + clear_history: Optional[bool] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[HideChannelResponse]: + path_params = { + "type": type, + "id": id, + } + json = HideChannelRequest( + clear_history=clear_history, user_id=user_id, user=user + ).to_dict() + return self.post( + "/api/v2/chat/channels/{type}/{id}/hide", + HideChannelResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.delete_channel_image") - def delete_channel_image(self, type: str, id: str, url: Optional[str] = None) -> StreamResponse[Response]: + def delete_channel_image( + self, type: str, id: str, url: Optional[str] = None + ) -> StreamResponse[Response]: query_params = build_query_param(url=url) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return self.delete("/api/v2/chat/channels/{type}/{id}/image", Response, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/chat/channels/{type}/{id}/image", + Response, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.upload_channel_image") - def upload_channel_image(self, type: str, id: str, file: Optional[str] = None, upload_sizes: Optional[List[ImageSize]] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[UploadChannelResponse]: - path_params = { - "type": type, "id": id, - } - json = UploadChannelRequest(file=file, upload_sizes=upload_sizes, user=user).to_dict() - return self.post("/api/v2/chat/channels/{type}/{id}/image", UploadChannelResponse, path_params=path_params, json=json) - + def upload_channel_image( + self, + type: str, + id: str, + file: Optional[str] = None, + upload_sizes: Optional[List[ImageSize]] = None, + user: Optional[OnlyUserID] = None, + ) -> StreamResponse[UploadChannelResponse]: + path_params = { + "type": type, + "id": id, + } + json = UploadChannelRequest( + file=file, upload_sizes=upload_sizes, user=user + ).to_dict() + return self.post( + "/api/v2/chat/channels/{type}/{id}/image", + UploadChannelResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.update_member_partial") - def update_member_partial(self, type: str, id: str, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None) -> StreamResponse[UpdateMemberPartialResponse]: + def update_member_partial( + self, + type: str, + id: str, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + ) -> StreamResponse[UpdateMemberPartialResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = UpdateMemberPartialRequest(unset=unset, set=set).to_dict() - return self.patch("/api/v2/chat/channels/{type}/{id}/member", UpdateMemberPartialResponse, query_params=query_params, path_params=path_params, json=json) - + return self.patch( + "/api/v2/chat/channels/{type}/{id}/member", + UpdateMemberPartialResponse, + query_params=query_params, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.send_message") - def send_message(self, type: str, id: str, message: MessageRequest, force_moderation: Optional[bool] = None, include_channel_context: Optional[bool] = None, include_mentioned_members: Optional[bool] = None, keep_channel_hidden: Optional[bool] = None, pending: Optional[bool] = None, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, pending_message_metadata: Optional[Dict[str, str]] = None) -> StreamResponse[SendMessageResponse]: - path_params = { - "type": type, "id": id, - } - json = SendMessageRequest(message=message, force_moderation=force_moderation, include_channel_context=include_channel_context, include_mentioned_members=include_mentioned_members, keep_channel_hidden=keep_channel_hidden, pending=pending, skip_enrich_url=skip_enrich_url, skip_push=skip_push, pending_message_metadata=pending_message_metadata).to_dict() - return self.post("/api/v2/chat/channels/{type}/{id}/message", SendMessageResponse, path_params=path_params, json=json) - + def send_message( + self, + type: str, + id: str, + message: MessageRequest, + force_moderation: Optional[bool] = None, + include_channel_context: Optional[bool] = None, + include_mentioned_members: Optional[bool] = None, + keep_channel_hidden: Optional[bool] = None, + pending: Optional[bool] = None, + skip_enrich_url: Optional[bool] = None, + skip_push: Optional[bool] = None, + pending_message_metadata: Optional[Dict[str, str]] = None, + ) -> StreamResponse[SendMessageResponse]: + path_params = { + "type": type, + "id": id, + } + json = SendMessageRequest( + message=message, + force_moderation=force_moderation, + include_channel_context=include_channel_context, + include_mentioned_members=include_mentioned_members, + keep_channel_hidden=keep_channel_hidden, + pending=pending, + skip_enrich_url=skip_enrich_url, + skip_push=skip_push, + pending_message_metadata=pending_message_metadata, + ).to_dict() + return self.post( + "/api/v2/chat/channels/{type}/{id}/message", + SendMessageResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.get_many_messages") - def get_many_messages(self, type: str, id: str, ids: List[str], member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetManyMessagesResponse]: - query_params = build_query_param(ids=ids, member_custom_include=member_custom_include) + def get_many_messages( + self, + type: str, + id: str, + ids: List[str], + member_custom_include: Optional[List[str]] = None, + ) -> StreamResponse[GetManyMessagesResponse]: + query_params = build_query_param( + ids=ids, member_custom_include=member_custom_include + ) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return self.get("/api/v2/chat/channels/{type}/{id}/messages", GetManyMessagesResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/chat/channels/{type}/{id}/messages", + GetManyMessagesResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.get_pinned_messages") - def get_pinned_messages(self, type: str, id: str, limit: Optional[int] = None, offset: Optional[int] = None, id_gte: Optional[str] = None, id_gt: Optional[str] = None, id_lte: Optional[str] = None, id_lt: Optional[str] = None, pinned_at_after_or_equal: Optional[datetime] = None, pinned_at_after: Optional[datetime] = None, pinned_at_before_or_equal: Optional[datetime] = None, pinned_at_before: Optional[datetime] = None, id_around: Optional[str] = None, pinned_at_around: Optional[datetime] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetPinnedMessagesResponse]: - query_params = build_query_param(limit=limit, offset=offset, id_gte=id_gte, id_gt=id_gt, id_lte=id_lte, id_lt=id_lt, pinned_at_after_or_equal=pinned_at_after_or_equal, pinned_at_after=pinned_at_after, pinned_at_before_or_equal=pinned_at_before_or_equal, pinned_at_before=pinned_at_before, id_around=id_around, pinned_at_around=pinned_at_around, user_id=user_id, sort=sort, member_custom_include=member_custom_include) + def get_pinned_messages( + self, + type: str, + id: str, + limit: Optional[int] = None, + offset: Optional[int] = None, + id_gte: Optional[str] = None, + id_gt: Optional[str] = None, + id_lte: Optional[str] = None, + id_lt: Optional[str] = None, + pinned_at_after_or_equal: Optional[datetime] = None, + pinned_at_after: Optional[datetime] = None, + pinned_at_before_or_equal: Optional[datetime] = None, + pinned_at_before: Optional[datetime] = None, + id_around: Optional[str] = None, + pinned_at_around: Optional[datetime] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + member_custom_include: Optional[List[str]] = None, + ) -> StreamResponse[GetPinnedMessagesResponse]: + query_params = build_query_param( + limit=limit, + offset=offset, + id_gte=id_gte, + id_gt=id_gt, + id_lte=id_lte, + id_lt=id_lt, + pinned_at_after_or_equal=pinned_at_after_or_equal, + pinned_at_after=pinned_at_after, + pinned_at_before_or_equal=pinned_at_before_or_equal, + pinned_at_before=pinned_at_before, + id_around=id_around, + pinned_at_around=pinned_at_around, + user_id=user_id, + sort=sort, + member_custom_include=member_custom_include, + ) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return self.get("/api/v2/chat/channels/{type}/{id}/pinned_messages", GetPinnedMessagesResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/chat/channels/{type}/{id}/pinned_messages", + GetPinnedMessagesResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.get_or_create_channel") - def get_or_create_channel(self, type: str, id: str, hide_for_creator: Optional[bool] = None, state: Optional[bool] = None, thread_unread_counts: Optional[bool] = None, member_custom_include: Optional[List[str]] = None, data: Optional[ChannelInput] = None, members: Optional[PaginationParams] = None, messages: Optional[MessagePaginationParams] = None, watchers: Optional[PaginationParams] = None) -> StreamResponse[ChannelStateResponse]: - path_params = { - "type": type, "id": id, - } - json = ChannelGetOrCreateRequest(hide_for_creator=hide_for_creator, state=state, thread_unread_counts=thread_unread_counts, member_custom_include=member_custom_include, data=data, members=members, messages=messages, watchers=watchers).to_dict() - return self.post("/api/v2/chat/channels/{type}/{id}/query", ChannelStateResponse, path_params=path_params, json=json) - + def get_or_create_channel( + self, + type: str, + id: str, + hide_for_creator: Optional[bool] = None, + state: Optional[bool] = None, + thread_unread_counts: Optional[bool] = None, + member_custom_include: Optional[List[str]] = None, + data: Optional[ChannelInput] = None, + members: Optional[PaginationParams] = None, + messages: Optional[MessagePaginationParams] = None, + watchers: Optional[PaginationParams] = None, + ) -> StreamResponse[ChannelStateResponse]: + path_params = { + "type": type, + "id": id, + } + json = ChannelGetOrCreateRequest( + hide_for_creator=hide_for_creator, + state=state, + thread_unread_counts=thread_unread_counts, + member_custom_include=member_custom_include, + data=data, + members=members, + messages=messages, + watchers=watchers, + ).to_dict() + return self.post( + "/api/v2/chat/channels/{type}/{id}/query", + ChannelStateResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.mark_read") - def mark_read(self, type: str, id: str, message_id: Optional[str] = None, thread_id: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[MarkReadResponse]: - path_params = { - "type": type, "id": id, - } - json = MarkReadRequest(message_id=message_id, thread_id=thread_id, user_id=user_id, user=user).to_dict() - return self.post("/api/v2/chat/channels/{type}/{id}/read", MarkReadResponse, path_params=path_params, json=json) - + def mark_read( + self, + type: str, + id: str, + message_id: Optional[str] = None, + thread_id: Optional[str] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[MarkReadResponse]: + path_params = { + "type": type, + "id": id, + } + json = MarkReadRequest( + message_id=message_id, thread_id=thread_id, user_id=user_id, user=user + ).to_dict() + return self.post( + "/api/v2/chat/channels/{type}/{id}/read", + MarkReadResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.show_channel") - def show_channel(self, type: str, id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[ShowChannelResponse]: + def show_channel( + self, + type: str, + id: str, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[ShowChannelResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = ShowChannelRequest(user_id=user_id, user=user).to_dict() - return self.post("/api/v2/chat/channels/{type}/{id}/show", ShowChannelResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/chat/channels/{type}/{id}/show", + ShowChannelResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.truncate_channel") - def truncate_channel(self, type: str, id: str, hard_delete: Optional[bool] = None, skip_push: Optional[bool] = None, truncated_at: Optional[datetime] = None, user_id: Optional[str] = None, member_ids: Optional[List[str]] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[TruncateChannelResponse]: - path_params = { - "type": type, "id": id, - } - json = TruncateChannelRequest(hard_delete=hard_delete, skip_push=skip_push, truncated_at=truncated_at, user_id=user_id, member_ids=member_ids, message=message, user=user).to_dict() - return self.post("/api/v2/chat/channels/{type}/{id}/truncate", TruncateChannelResponse, path_params=path_params, json=json) - + def truncate_channel( + self, + type: str, + id: str, + hard_delete: Optional[bool] = None, + skip_push: Optional[bool] = None, + truncated_at: Optional[datetime] = None, + user_id: Optional[str] = None, + member_ids: Optional[List[str]] = None, + message: Optional[MessageRequest] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[TruncateChannelResponse]: + path_params = { + "type": type, + "id": id, + } + json = TruncateChannelRequest( + hard_delete=hard_delete, + skip_push=skip_push, + truncated_at=truncated_at, + user_id=user_id, + member_ids=member_ids, + message=message, + user=user, + ).to_dict() + return self.post( + "/api/v2/chat/channels/{type}/{id}/truncate", + TruncateChannelResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.mark_unread") - def mark_unread(self, type: str, id: str, message_id: Optional[str] = None, message_timestamp: Optional[datetime] = None, thread_id: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[Response]: - path_params = { - "type": type, "id": id, - } - json = MarkUnreadRequest(message_id=message_id, message_timestamp=message_timestamp, thread_id=thread_id, user_id=user_id, user=user).to_dict() - return self.post("/api/v2/chat/channels/{type}/{id}/unread", Response, path_params=path_params, json=json) - + def mark_unread( + self, + type: str, + id: str, + message_id: Optional[str] = None, + message_timestamp: Optional[datetime] = None, + thread_id: Optional[str] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[Response]: + path_params = { + "type": type, + "id": id, + } + json = MarkUnreadRequest( + message_id=message_id, + message_timestamp=message_timestamp, + thread_id=thread_id, + user_id=user_id, + user=user, + ).to_dict() + return self.post( + "/api/v2/chat/channels/{type}/{id}/unread", + Response, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.list_channel_types") def list_channel_types(self) -> StreamResponse[ListChannelTypesResponse]: return self.get("/api/v2/chat/channeltypes", ListChannelTypesResponse) - + @telemetry.operation_name("getstream.api.chat.create_channel_type") - def create_channel_type(self, automod: str, automod_behavior: str, max_message_length: int, name: str, blocklist: Optional[str] = None, blocklist_behavior: Optional[str] = None, connect_events: Optional[bool] = None, count_messages: Optional[bool] = None, custom_events: Optional[bool] = None, delivery_events: Optional[bool] = None, mark_messages_pending: Optional[bool] = None, message_retention: Optional[str] = None, mutes: Optional[bool] = None, partition_size: Optional[int] = None, partition_ttl: Optional[str] = None, polls: Optional[bool] = None, push_level: Optional[str] = None, push_notifications: Optional[bool] = None, reactions: Optional[bool] = None, read_events: Optional[bool] = None, replies: Optional[bool] = None, search: Optional[bool] = None, shared_locations: Optional[bool] = None, skip_last_msg_update_for_system_msgs: Optional[bool] = None, typing_events: Optional[bool] = None, uploads: Optional[bool] = None, url_enrichment: Optional[bool] = None, user_message_reminders: Optional[bool] = None, blocklists: Optional[List[BlockListOptions]] = None, commands: Optional[List[str]] = None, permissions: Optional[List[PolicyRequest]] = None, chat_preferences: Optional[ChatPreferences] = None, grants: Optional[Dict[str, List[str]]] = None) -> StreamResponse[CreateChannelTypeResponse]: - json = CreateChannelTypeRequest(automod=automod, automod_behavior=automod_behavior, max_message_length=max_message_length, name=name, blocklist=blocklist, blocklist_behavior=blocklist_behavior, connect_events=connect_events, count_messages=count_messages, custom_events=custom_events, delivery_events=delivery_events, mark_messages_pending=mark_messages_pending, message_retention=message_retention, mutes=mutes, partition_size=partition_size, partition_ttl=partition_ttl, polls=polls, push_level=push_level, push_notifications=push_notifications, reactions=reactions, read_events=read_events, replies=replies, search=search, shared_locations=shared_locations, skip_last_msg_update_for_system_msgs=skip_last_msg_update_for_system_msgs, typing_events=typing_events, uploads=uploads, url_enrichment=url_enrichment, user_message_reminders=user_message_reminders, blocklists=blocklists, commands=commands, permissions=permissions, chat_preferences=chat_preferences, grants=grants).to_dict() - return self.post("/api/v2/chat/channeltypes", CreateChannelTypeResponse, json=json) - + def create_channel_type( + self, + automod: str, + automod_behavior: str, + max_message_length: int, + name: str, + blocklist: Optional[str] = None, + blocklist_behavior: Optional[str] = None, + connect_events: Optional[bool] = None, + count_messages: Optional[bool] = None, + custom_events: Optional[bool] = None, + delivery_events: Optional[bool] = None, + mark_messages_pending: Optional[bool] = None, + message_retention: Optional[str] = None, + mutes: Optional[bool] = None, + partition_size: Optional[int] = None, + partition_ttl: Optional[str] = None, + polls: Optional[bool] = None, + push_level: Optional[str] = None, + push_notifications: Optional[bool] = None, + reactions: Optional[bool] = None, + read_events: Optional[bool] = None, + replies: Optional[bool] = None, + search: Optional[bool] = None, + shared_locations: Optional[bool] = None, + skip_last_msg_update_for_system_msgs: Optional[bool] = None, + typing_events: Optional[bool] = None, + uploads: Optional[bool] = None, + url_enrichment: Optional[bool] = None, + user_message_reminders: Optional[bool] = None, + blocklists: Optional[List[BlockListOptions]] = None, + commands: Optional[List[str]] = None, + permissions: Optional[List[PolicyRequest]] = None, + chat_preferences: Optional[ChatPreferences] = None, + grants: Optional[Dict[str, List[str]]] = None, + ) -> StreamResponse[CreateChannelTypeResponse]: + json = CreateChannelTypeRequest( + automod=automod, + automod_behavior=automod_behavior, + max_message_length=max_message_length, + name=name, + blocklist=blocklist, + blocklist_behavior=blocklist_behavior, + connect_events=connect_events, + count_messages=count_messages, + custom_events=custom_events, + delivery_events=delivery_events, + mark_messages_pending=mark_messages_pending, + message_retention=message_retention, + mutes=mutes, + partition_size=partition_size, + partition_ttl=partition_ttl, + polls=polls, + push_level=push_level, + push_notifications=push_notifications, + reactions=reactions, + read_events=read_events, + replies=replies, + search=search, + shared_locations=shared_locations, + skip_last_msg_update_for_system_msgs=skip_last_msg_update_for_system_msgs, + typing_events=typing_events, + uploads=uploads, + url_enrichment=url_enrichment, + user_message_reminders=user_message_reminders, + blocklists=blocklists, + commands=commands, + permissions=permissions, + chat_preferences=chat_preferences, + grants=grants, + ).to_dict() + return self.post( + "/api/v2/chat/channeltypes", CreateChannelTypeResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.delete_channel_type") def delete_channel_type(self, name: str) -> StreamResponse[Response]: path_params = { - "name": name, + "name": name, } - return self.delete("/api/v2/chat/channeltypes/{name}", Response, path_params=path_params) - + return self.delete( + "/api/v2/chat/channeltypes/{name}", Response, path_params=path_params + ) + @telemetry.operation_name("getstream.api.chat.get_channel_type") def get_channel_type(self, name: str) -> StreamResponse[GetChannelTypeResponse]: path_params = { - "name": name, + "name": name, } - return self.get("/api/v2/chat/channeltypes/{name}", GetChannelTypeResponse, path_params=path_params) - + return self.get( + "/api/v2/chat/channeltypes/{name}", + GetChannelTypeResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.update_channel_type") - def update_channel_type(self, name: str, automod: str, automod_behavior: str, max_message_length: int, blocklist: Optional[str] = None, blocklist_behavior: Optional[str] = None, connect_events: Optional[bool] = None, count_messages: Optional[bool] = None, custom_events: Optional[bool] = None, delivery_events: Optional[bool] = None, mark_messages_pending: Optional[bool] = None, message_retention: Optional[str] = None, mutes: Optional[bool] = None, partition_size: Optional[int] = None, partition_ttl: Optional[str] = None, polls: Optional[bool] = None, push_level: Optional[str] = None, push_notifications: Optional[bool] = None, quotes: Optional[bool] = None, reactions: Optional[bool] = None, read_events: Optional[bool] = None, reminders: Optional[bool] = None, replies: Optional[bool] = None, search: Optional[bool] = None, shared_locations: Optional[bool] = None, skip_last_msg_update_for_system_msgs: Optional[bool] = None, typing_events: Optional[bool] = None, uploads: Optional[bool] = None, url_enrichment: Optional[bool] = None, user_message_reminders: Optional[bool] = None, allowed_flag_reasons: Optional[List[str]] = None, blocklists: Optional[List[BlockListOptions]] = None, commands: Optional[List[str]] = None, permissions: Optional[List[PolicyRequest]] = None, automod_thresholds: Optional[Thresholds] = None, chat_preferences: Optional[ChatPreferences] = None, grants: Optional[Dict[str, List[str]]] = None) -> StreamResponse[UpdateChannelTypeResponse]: - path_params = { - "name": name, - } - json = UpdateChannelTypeRequest(automod=automod, automod_behavior=automod_behavior, max_message_length=max_message_length, blocklist=blocklist, blocklist_behavior=blocklist_behavior, connect_events=connect_events, count_messages=count_messages, custom_events=custom_events, delivery_events=delivery_events, mark_messages_pending=mark_messages_pending, message_retention=message_retention, mutes=mutes, partition_size=partition_size, partition_ttl=partition_ttl, polls=polls, push_level=push_level, push_notifications=push_notifications, quotes=quotes, reactions=reactions, read_events=read_events, reminders=reminders, replies=replies, search=search, shared_locations=shared_locations, skip_last_msg_update_for_system_msgs=skip_last_msg_update_for_system_msgs, typing_events=typing_events, uploads=uploads, url_enrichment=url_enrichment, user_message_reminders=user_message_reminders, allowed_flag_reasons=allowed_flag_reasons, blocklists=blocklists, commands=commands, permissions=permissions, automod_thresholds=automod_thresholds, chat_preferences=chat_preferences, grants=grants).to_dict() - return self.put("/api/v2/chat/channeltypes/{name}", UpdateChannelTypeResponse, path_params=path_params, json=json) - + def update_channel_type( + self, + name: str, + automod: str, + automod_behavior: str, + max_message_length: int, + blocklist: Optional[str] = None, + blocklist_behavior: Optional[str] = None, + connect_events: Optional[bool] = None, + count_messages: Optional[bool] = None, + custom_events: Optional[bool] = None, + delivery_events: Optional[bool] = None, + mark_messages_pending: Optional[bool] = None, + message_retention: Optional[str] = None, + mutes: Optional[bool] = None, + partition_size: Optional[int] = None, + partition_ttl: Optional[str] = None, + polls: Optional[bool] = None, + push_level: Optional[str] = None, + push_notifications: Optional[bool] = None, + quotes: Optional[bool] = None, + reactions: Optional[bool] = None, + read_events: Optional[bool] = None, + reminders: Optional[bool] = None, + replies: Optional[bool] = None, + search: Optional[bool] = None, + shared_locations: Optional[bool] = None, + skip_last_msg_update_for_system_msgs: Optional[bool] = None, + typing_events: Optional[bool] = None, + uploads: Optional[bool] = None, + url_enrichment: Optional[bool] = None, + user_message_reminders: Optional[bool] = None, + allowed_flag_reasons: Optional[List[str]] = None, + blocklists: Optional[List[BlockListOptions]] = None, + commands: Optional[List[str]] = None, + permissions: Optional[List[PolicyRequest]] = None, + automod_thresholds: Optional[Thresholds] = None, + chat_preferences: Optional[ChatPreferences] = None, + grants: Optional[Dict[str, List[str]]] = None, + ) -> StreamResponse[UpdateChannelTypeResponse]: + path_params = { + "name": name, + } + json = UpdateChannelTypeRequest( + automod=automod, + automod_behavior=automod_behavior, + max_message_length=max_message_length, + blocklist=blocklist, + blocklist_behavior=blocklist_behavior, + connect_events=connect_events, + count_messages=count_messages, + custom_events=custom_events, + delivery_events=delivery_events, + mark_messages_pending=mark_messages_pending, + message_retention=message_retention, + mutes=mutes, + partition_size=partition_size, + partition_ttl=partition_ttl, + polls=polls, + push_level=push_level, + push_notifications=push_notifications, + quotes=quotes, + reactions=reactions, + read_events=read_events, + reminders=reminders, + replies=replies, + search=search, + shared_locations=shared_locations, + skip_last_msg_update_for_system_msgs=skip_last_msg_update_for_system_msgs, + typing_events=typing_events, + uploads=uploads, + url_enrichment=url_enrichment, + user_message_reminders=user_message_reminders, + allowed_flag_reasons=allowed_flag_reasons, + blocklists=blocklists, + commands=commands, + permissions=permissions, + automod_thresholds=automod_thresholds, + chat_preferences=chat_preferences, + grants=grants, + ).to_dict() + return self.put( + "/api/v2/chat/channeltypes/{name}", + UpdateChannelTypeResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.list_commands") def list_commands(self) -> StreamResponse[ListCommandsResponse]: return self.get("/api/v2/chat/commands", ListCommandsResponse) - + @telemetry.operation_name("getstream.api.chat.create_command") - def create_command(self, description: str, name: str, args: Optional[str] = None, set: Optional[str] = None) -> StreamResponse[CreateCommandResponse]: - json = CreateCommandRequest(description=description, name=name, args=args, set=set).to_dict() + def create_command( + self, + description: str, + name: str, + args: Optional[str] = None, + set: Optional[str] = None, + ) -> StreamResponse[CreateCommandResponse]: + json = CreateCommandRequest( + description=description, name=name, args=args, set=set + ).to_dict() return self.post("/api/v2/chat/commands", CreateCommandResponse, json=json) - + @telemetry.operation_name("getstream.api.chat.delete_command") def delete_command(self, name: str) -> StreamResponse[DeleteCommandResponse]: path_params = { - "name": name, + "name": name, } - return self.delete("/api/v2/chat/commands/{name}", DeleteCommandResponse, path_params=path_params) - + return self.delete( + "/api/v2/chat/commands/{name}", + DeleteCommandResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.get_command") def get_command(self, name: str) -> StreamResponse[GetCommandResponse]: path_params = { - "name": name, + "name": name, } - return self.get("/api/v2/chat/commands/{name}", GetCommandResponse, path_params=path_params) - + return self.get( + "/api/v2/chat/commands/{name}", GetCommandResponse, path_params=path_params + ) + @telemetry.operation_name("getstream.api.chat.update_command") - def update_command(self, name: str, description: str, args: Optional[str] = None, set: Optional[str] = None) -> StreamResponse[UpdateCommandResponse]: - path_params = { - "name": name, - } - json = UpdateCommandRequest(description=description, args=args, set=set).to_dict() - return self.put("/api/v2/chat/commands/{name}", UpdateCommandResponse, path_params=path_params, json=json) - + def update_command( + self, + name: str, + description: str, + args: Optional[str] = None, + set: Optional[str] = None, + ) -> StreamResponse[UpdateCommandResponse]: + path_params = { + "name": name, + } + json = UpdateCommandRequest( + description=description, args=args, set=set + ).to_dict() + return self.put( + "/api/v2/chat/commands/{name}", + UpdateCommandResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.query_drafts") - def query_drafts(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryDraftsResponse]: - json = QueryDraftsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + def query_drafts( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryDraftsResponse]: + json = QueryDraftsRequest( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() return self.post("/api/v2/chat/drafts/query", QueryDraftsResponse, json=json) - + @telemetry.operation_name("getstream.api.chat.export_channels") - def export_channels(self, channels: List[ChannelExport], clear_deleted_message_text: Optional[bool] = None, export_users: Optional[bool] = None, format: Optional[str] = None, include_soft_deleted_channels: Optional[bool] = None, include_truncated_messages: Optional[bool] = None, version: Optional[str] = None, include_fields: Optional[List[str]] = None) -> StreamResponse[ExportChannelsResponse]: - json = ExportChannelsRequest(channels=channels, clear_deleted_message_text=clear_deleted_message_text, export_users=export_users, format=format, include_soft_deleted_channels=include_soft_deleted_channels, include_truncated_messages=include_truncated_messages, version=version, include_fields=include_fields).to_dict() - return self.post("/api/v2/chat/export_channels", ExportChannelsResponse, json=json) - + def export_channels( + self, + channels: List[ChannelExport], + clear_deleted_message_text: Optional[bool] = None, + export_users: Optional[bool] = None, + format: Optional[str] = None, + include_soft_deleted_channels: Optional[bool] = None, + include_truncated_messages: Optional[bool] = None, + version: Optional[str] = None, + include_fields: Optional[List[str]] = None, + ) -> StreamResponse[ExportChannelsResponse]: + json = ExportChannelsRequest( + channels=channels, + clear_deleted_message_text=clear_deleted_message_text, + export_users=export_users, + format=format, + include_soft_deleted_channels=include_soft_deleted_channels, + include_truncated_messages=include_truncated_messages, + version=version, + include_fields=include_fields, + ).to_dict() + return self.post( + "/api/v2/chat/export_channels", ExportChannelsResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.query_members") - def query_members(self, payload: Optional[QueryMembersPayload] = None) -> StreamResponse[MembersResponse]: + def query_members( + self, payload: Optional[QueryMembersPayload] = None + ) -> StreamResponse[MembersResponse]: query_params = build_query_param(payload=payload) - return self.get("/api/v2/chat/members", MembersResponse, query_params=query_params) - + return self.get( + "/api/v2/chat/members", MembersResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.chat.query_message_history") - def query_message_history(self, filter: Dict[str, object], limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None) -> StreamResponse[QueryMessageHistoryResponse]: - json = QueryMessageHistoryRequest(filter=filter, limit=limit, next=next, prev=prev, sort=sort).to_dict() - return self.post("/api/v2/chat/messages/history", QueryMessageHistoryResponse, json=json) - + def query_message_history( + self, + filter: Dict[str, object], + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + ) -> StreamResponse[QueryMessageHistoryResponse]: + json = QueryMessageHistoryRequest( + filter=filter, limit=limit, next=next, prev=prev, sort=sort + ).to_dict() + return self.post( + "/api/v2/chat/messages/history", QueryMessageHistoryResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.delete_message") - def delete_message(self, id: str, hard: Optional[bool] = None, deleted_by: Optional[str] = None, delete_for_me: Optional[bool] = None) -> StreamResponse[DeleteMessageResponse]: - query_params = build_query_param(hard=hard, deleted_by=deleted_by, delete_for_me=delete_for_me) + def delete_message( + self, + id: str, + hard: Optional[bool] = None, + deleted_by: Optional[str] = None, + delete_for_me: Optional[bool] = None, + ) -> StreamResponse[DeleteMessageResponse]: + query_params = build_query_param( + hard=hard, deleted_by=deleted_by, delete_for_me=delete_for_me + ) path_params = { - "id": id, + "id": id, } - return self.delete("/api/v2/chat/messages/{id}", DeleteMessageResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/chat/messages/{id}", + DeleteMessageResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.get_message") - def get_message(self, id: str, show_deleted_message: Optional[bool] = None) -> StreamResponse[GetMessageResponse]: + def get_message( + self, id: str, show_deleted_message: Optional[bool] = None + ) -> StreamResponse[GetMessageResponse]: query_params = build_query_param(show_deleted_message=show_deleted_message) path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/chat/messages/{id}", GetMessageResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/chat/messages/{id}", + GetMessageResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.update_message") - def update_message(self, id: str, message: MessageRequest, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None) -> StreamResponse[UpdateMessageResponse]: - path_params = { - "id": id, - } - json = UpdateMessageRequest(message=message, skip_enrich_url=skip_enrich_url, skip_push=skip_push).to_dict() - return self.post("/api/v2/chat/messages/{id}", UpdateMessageResponse, path_params=path_params, json=json) - + def update_message( + self, + id: str, + message: MessageRequest, + skip_enrich_url: Optional[bool] = None, + skip_push: Optional[bool] = None, + ) -> StreamResponse[UpdateMessageResponse]: + path_params = { + "id": id, + } + json = UpdateMessageRequest( + message=message, skip_enrich_url=skip_enrich_url, skip_push=skip_push + ).to_dict() + return self.post( + "/api/v2/chat/messages/{id}", + UpdateMessageResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.update_message_partial") - def update_message_partial(self, id: str, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateMessagePartialResponse]: - path_params = { - "id": id, - } - json = UpdateMessagePartialRequest(skip_enrich_url=skip_enrich_url, skip_push=skip_push, user_id=user_id, unset=unset, set=set, user=user).to_dict() - return self.put("/api/v2/chat/messages/{id}", UpdateMessagePartialResponse, path_params=path_params, json=json) - + def update_message_partial( + self, + id: str, + skip_enrich_url: Optional[bool] = None, + skip_push: Optional[bool] = None, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateMessagePartialResponse]: + path_params = { + "id": id, + } + json = UpdateMessagePartialRequest( + skip_enrich_url=skip_enrich_url, + skip_push=skip_push, + user_id=user_id, + unset=unset, + set=set, + user=user, + ).to_dict() + return self.put( + "/api/v2/chat/messages/{id}", + UpdateMessagePartialResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.run_message_action") - def run_message_action(self, id: str, form_data: Dict[str, str], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[MessageActionResponse]: - path_params = { - "id": id, - } - json = MessageActionRequest(form_data=form_data, user_id=user_id, user=user).to_dict() - return self.post("/api/v2/chat/messages/{id}/action", MessageActionResponse, path_params=path_params, json=json) - + def run_message_action( + self, + id: str, + form_data: Dict[str, str], + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[MessageActionResponse]: + path_params = { + "id": id, + } + json = MessageActionRequest( + form_data=form_data, user_id=user_id, user=user + ).to_dict() + return self.post( + "/api/v2/chat/messages/{id}/action", + MessageActionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.commit_message") - def commit_message(self, id: str, ) -> StreamResponse[MessageActionResponse]: + def commit_message( + self, + id: str, + ) -> StreamResponse[MessageActionResponse]: path_params = { - "id": id, + "id": id, } json = CommitMessageRequest().to_dict() - return self.post("/api/v2/chat/messages/{id}/commit", MessageActionResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/chat/messages/{id}/commit", + MessageActionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.ephemeral_message_update") - def ephemeral_message_update(self, id: str, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateMessagePartialResponse]: - path_params = { - "id": id, - } - json = UpdateMessagePartialRequest(skip_enrich_url=skip_enrich_url, skip_push=skip_push, user_id=user_id, unset=unset, set=set, user=user).to_dict() - return self.patch("/api/v2/chat/messages/{id}/ephemeral", UpdateMessagePartialResponse, path_params=path_params, json=json) - + def ephemeral_message_update( + self, + id: str, + skip_enrich_url: Optional[bool] = None, + skip_push: Optional[bool] = None, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateMessagePartialResponse]: + path_params = { + "id": id, + } + json = UpdateMessagePartialRequest( + skip_enrich_url=skip_enrich_url, + skip_push=skip_push, + user_id=user_id, + unset=unset, + set=set, + user=user, + ).to_dict() + return self.patch( + "/api/v2/chat/messages/{id}/ephemeral", + UpdateMessagePartialResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.send_reaction") - def send_reaction(self, id: str, reaction: ReactionRequest, enforce_unique: Optional[bool] = None, skip_push: Optional[bool] = None) -> StreamResponse[SendReactionResponse]: - path_params = { - "id": id, - } - json = SendReactionRequest(reaction=reaction, enforce_unique=enforce_unique, skip_push=skip_push).to_dict() - return self.post("/api/v2/chat/messages/{id}/reaction", SendReactionResponse, path_params=path_params, json=json) - + def send_reaction( + self, + id: str, + reaction: ReactionRequest, + enforce_unique: Optional[bool] = None, + skip_push: Optional[bool] = None, + ) -> StreamResponse[SendReactionResponse]: + path_params = { + "id": id, + } + json = SendReactionRequest( + reaction=reaction, enforce_unique=enforce_unique, skip_push=skip_push + ).to_dict() + return self.post( + "/api/v2/chat/messages/{id}/reaction", + SendReactionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.delete_reaction") - def delete_reaction(self, id: str, type: str, user_id: Optional[str] = None) -> StreamResponse[DeleteReactionResponse]: + def delete_reaction( + self, id: str, type: str, user_id: Optional[str] = None + ) -> StreamResponse[DeleteReactionResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "id": id, "type": type, + "id": id, + "type": type, } - return self.delete("/api/v2/chat/messages/{id}/reaction/{type}", DeleteReactionResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/chat/messages/{id}/reaction/{type}", + DeleteReactionResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.get_reactions") - def get_reactions(self, id: str, limit: Optional[int] = None, offset: Optional[int] = None) -> StreamResponse[GetReactionsResponse]: + def get_reactions( + self, id: str, limit: Optional[int] = None, offset: Optional[int] = None + ) -> StreamResponse[GetReactionsResponse]: query_params = build_query_param(limit=limit, offset=offset) path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/chat/messages/{id}/reactions", GetReactionsResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/chat/messages/{id}/reactions", + GetReactionsResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.query_reactions") - def query_reactions(self, id: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryReactionsResponse]: - path_params = { - "id": id, - } - json = QueryReactionsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return self.post("/api/v2/chat/messages/{id}/reactions", QueryReactionsResponse, path_params=path_params, json=json) - + def query_reactions( + self, + id: str, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryReactionsResponse]: + path_params = { + "id": id, + } + json = QueryReactionsRequest( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return self.post( + "/api/v2/chat/messages/{id}/reactions", + QueryReactionsResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.translate_message") - def translate_message(self, id: str, language: str) -> StreamResponse[TranslateMessageResponse]: + def translate_message( + self, id: str, language: str + ) -> StreamResponse[TranslateMessageResponse]: path_params = { - "id": id, + "id": id, } json = TranslateMessageRequest(language=language).to_dict() - return self.post("/api/v2/chat/messages/{id}/translate", TranslateMessageResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/chat/messages/{id}/translate", + TranslateMessageResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.undelete_message") - def undelete_message(self, id: str, undeleted_by: str) -> StreamResponse[UndeleteMessageResponse]: + def undelete_message( + self, id: str, undeleted_by: str + ) -> StreamResponse[UndeleteMessageResponse]: path_params = { - "id": id, + "id": id, } json = UndeleteMessageRequest(undeleted_by=undeleted_by).to_dict() - return self.post("/api/v2/chat/messages/{id}/undelete", UndeleteMessageResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/chat/messages/{id}/undelete", + UndeleteMessageResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.cast_poll_vote") - def cast_poll_vote(self, message_id: str, poll_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None, vote: Optional[VoteData] = None) -> StreamResponse[PollVoteResponse]: - path_params = { - "message_id": message_id, "poll_id": poll_id, + def cast_poll_vote( + self, + message_id: str, + poll_id: str, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + vote: Optional[VoteData] = None, + ) -> StreamResponse[PollVoteResponse]: + path_params = { + "message_id": message_id, + "poll_id": poll_id, } json = CastPollVoteRequest(user_id=user_id, user=user, vote=vote).to_dict() - return self.post("/api/v2/chat/messages/{message_id}/polls/{poll_id}/vote", PollVoteResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/chat/messages/{message_id}/polls/{poll_id}/vote", + PollVoteResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.delete_poll_vote") - def delete_poll_vote(self, message_id: str, poll_id: str, vote_id: str, user_id: Optional[str] = None) -> StreamResponse[PollVoteResponse]: + def delete_poll_vote( + self, message_id: str, poll_id: str, vote_id: str, user_id: Optional[str] = None + ) -> StreamResponse[PollVoteResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "message_id": message_id, "poll_id": poll_id, "vote_id": vote_id, + "message_id": message_id, + "poll_id": poll_id, + "vote_id": vote_id, } - return self.delete("/api/v2/chat/messages/{message_id}/polls/{poll_id}/vote/{vote_id}", PollVoteResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/chat/messages/{message_id}/polls/{poll_id}/vote/{vote_id}", + PollVoteResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.delete_reminder") - def delete_reminder(self, message_id: str, user_id: Optional[str] = None) -> StreamResponse[DeleteReminderResponse]: + def delete_reminder( + self, message_id: str, user_id: Optional[str] = None + ) -> StreamResponse[DeleteReminderResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "message_id": message_id, + "message_id": message_id, } - return self.delete("/api/v2/chat/messages/{message_id}/reminders", DeleteReminderResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/chat/messages/{message_id}/reminders", + DeleteReminderResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.update_reminder") - def update_reminder(self, message_id: str, remind_at: Optional[datetime] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateReminderResponse]: - path_params = { - "message_id": message_id, - } - json = UpdateReminderRequest(remind_at=remind_at, user_id=user_id, user=user).to_dict() - return self.patch("/api/v2/chat/messages/{message_id}/reminders", UpdateReminderResponse, path_params=path_params, json=json) - + def update_reminder( + self, + message_id: str, + remind_at: Optional[datetime] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateReminderResponse]: + path_params = { + "message_id": message_id, + } + json = UpdateReminderRequest( + remind_at=remind_at, user_id=user_id, user=user + ).to_dict() + return self.patch( + "/api/v2/chat/messages/{message_id}/reminders", + UpdateReminderResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.create_reminder") - def create_reminder(self, message_id: str, remind_at: Optional[datetime] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CreateReminderResponse]: - path_params = { - "message_id": message_id, - } - json = CreateReminderRequest(remind_at=remind_at, user_id=user_id, user=user).to_dict() - return self.post("/api/v2/chat/messages/{message_id}/reminders", CreateReminderResponse, path_params=path_params, json=json) - + def create_reminder( + self, + message_id: str, + remind_at: Optional[datetime] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[CreateReminderResponse]: + path_params = { + "message_id": message_id, + } + json = CreateReminderRequest( + remind_at=remind_at, user_id=user_id, user=user + ).to_dict() + return self.post( + "/api/v2/chat/messages/{message_id}/reminders", + CreateReminderResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.get_replies") - def get_replies(self, parent_id: str, limit: Optional[int] = None, id_gte: Optional[str] = None, id_gt: Optional[str] = None, id_lte: Optional[str] = None, id_lt: Optional[str] = None, id_around: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, member_custom_include: Optional[List[str]] = None) -> StreamResponse[GetRepliesResponse]: - query_params = build_query_param(limit=limit, id_gte=id_gte, id_gt=id_gt, id_lte=id_lte, id_lt=id_lt, id_around=id_around, sort=sort, member_custom_include=member_custom_include) + def get_replies( + self, + parent_id: str, + limit: Optional[int] = None, + id_gte: Optional[str] = None, + id_gt: Optional[str] = None, + id_lte: Optional[str] = None, + id_lt: Optional[str] = None, + id_around: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + member_custom_include: Optional[List[str]] = None, + ) -> StreamResponse[GetRepliesResponse]: + query_params = build_query_param( + limit=limit, + id_gte=id_gte, + id_gt=id_gt, + id_lte=id_lte, + id_lt=id_lt, + id_around=id_around, + sort=sort, + member_custom_include=member_custom_include, + ) path_params = { - "parent_id": parent_id, + "parent_id": parent_id, } - return self.get("/api/v2/chat/messages/{parent_id}/replies", GetRepliesResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/chat/messages/{parent_id}/replies", + GetRepliesResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.query_message_flags") - def query_message_flags(self, payload: Optional[QueryMessageFlagsPayload] = None) -> StreamResponse[QueryMessageFlagsResponse]: + def query_message_flags( + self, payload: Optional[QueryMessageFlagsPayload] = None + ) -> StreamResponse[QueryMessageFlagsResponse]: query_params = build_query_param(payload=payload) - return self.get("/api/v2/chat/moderation/flags/message", QueryMessageFlagsResponse, query_params=query_params) - + return self.get( + "/api/v2/chat/moderation/flags/message", + QueryMessageFlagsResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.chat.mute_channel") - def mute_channel(self, expiration: Optional[int] = None, user_id: Optional[str] = None, channel_cids: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[MuteChannelResponse]: - json = MuteChannelRequest(expiration=expiration, user_id=user_id, channel_cids=channel_cids, user=user).to_dict() - return self.post("/api/v2/chat/moderation/mute/channel", MuteChannelResponse, json=json) - + def mute_channel( + self, + expiration: Optional[int] = None, + user_id: Optional[str] = None, + channel_cids: Optional[List[str]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[MuteChannelResponse]: + json = MuteChannelRequest( + expiration=expiration, user_id=user_id, channel_cids=channel_cids, user=user + ).to_dict() + return self.post( + "/api/v2/chat/moderation/mute/channel", MuteChannelResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.unmute_channel") - def unmute_channel(self, expiration: Optional[int] = None, user_id: Optional[str] = None, channel_cids: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UnmuteResponse]: - json = UnmuteChannelRequest(expiration=expiration, user_id=user_id, channel_cids=channel_cids, user=user).to_dict() - return self.post("/api/v2/chat/moderation/unmute/channel", UnmuteResponse, json=json) - + def unmute_channel( + self, + expiration: Optional[int] = None, + user_id: Optional[str] = None, + channel_cids: Optional[List[str]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UnmuteResponse]: + json = UnmuteChannelRequest( + expiration=expiration, user_id=user_id, channel_cids=channel_cids, user=user + ).to_dict() + return self.post( + "/api/v2/chat/moderation/unmute/channel", UnmuteResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.get_predefined_filters") - def get_predefined_filters(self, include_stats: Optional[bool] = None, sort: Optional[List[SortParamRequest]] = None) -> StreamResponse[QueryPredefinedFiltersResponse]: + def get_predefined_filters( + self, + include_stats: Optional[bool] = None, + sort: Optional[List[SortParamRequest]] = None, + ) -> StreamResponse[QueryPredefinedFiltersResponse]: query_params = build_query_param(include_stats=include_stats, sort=sort) - return self.get("/api/v2/chat/predefined_filters", QueryPredefinedFiltersResponse, query_params=query_params) - + return self.get( + "/api/v2/chat/predefined_filters", + QueryPredefinedFiltersResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.chat.create_predefined_filter") - def create_predefined_filter(self, name: str, operation: str, filter: Dict[str, object], description: Optional[str] = None, sort: Optional[List[Dict[str, object]]] = None) -> StreamResponse[CreatePredefinedFilterResponse]: - json = CreatePredefinedFilterRequest(name=name, operation=operation, filter=filter, description=description, sort=sort).to_dict() - return self.post("/api/v2/chat/predefined_filters", CreatePredefinedFilterResponse, json=json) - + def create_predefined_filter( + self, + name: str, + operation: str, + filter: Dict[str, object], + description: Optional[str] = None, + sort: Optional[List[Dict[str, object]]] = None, + ) -> StreamResponse[CreatePredefinedFilterResponse]: + json = CreatePredefinedFilterRequest( + name=name, + operation=operation, + filter=filter, + description=description, + sort=sort, + ).to_dict() + return self.post( + "/api/v2/chat/predefined_filters", CreatePredefinedFilterResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.delete_predefined_filter") def delete_predefined_filter(self, name: str) -> StreamResponse[Response]: path_params = { - "name": name, + "name": name, } - return self.delete("/api/v2/chat/predefined_filters/{name}", Response, path_params=path_params) - + return self.delete( + "/api/v2/chat/predefined_filters/{name}", Response, path_params=path_params + ) + @telemetry.operation_name("getstream.api.chat.get_predefined_filter") - def get_predefined_filter(self, name: str) -> StreamResponse[GetPredefinedFilterResponse]: + def get_predefined_filter( + self, name: str + ) -> StreamResponse[GetPredefinedFilterResponse]: path_params = { - "name": name, + "name": name, } - return self.get("/api/v2/chat/predefined_filters/{name}", GetPredefinedFilterResponse, path_params=path_params) - + return self.get( + "/api/v2/chat/predefined_filters/{name}", + GetPredefinedFilterResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.update_predefined_filter") - def update_predefined_filter(self, name: str, operation: str, filter: Dict[str, object], description: Optional[str] = None, sort: Optional[List[Dict[str, object]]] = None) -> StreamResponse[UpdatePredefinedFilterResponse]: - path_params = { - "name": name, - } - json = UpdatePredefinedFilterRequest(operation=operation, filter=filter, description=description, sort=sort).to_dict() - return self.put("/api/v2/chat/predefined_filters/{name}", UpdatePredefinedFilterResponse, path_params=path_params, json=json) - + def update_predefined_filter( + self, + name: str, + operation: str, + filter: Dict[str, object], + description: Optional[str] = None, + sort: Optional[List[Dict[str, object]]] = None, + ) -> StreamResponse[UpdatePredefinedFilterResponse]: + path_params = { + "name": name, + } + json = UpdatePredefinedFilterRequest( + operation=operation, filter=filter, description=description, sort=sort + ).to_dict() + return self.put( + "/api/v2/chat/predefined_filters/{name}", + UpdatePredefinedFilterResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.query_banned_users") - def query_banned_users(self, payload: Optional[QueryBannedUsersPayload] = None) -> StreamResponse[QueryBannedUsersResponse]: + def query_banned_users( + self, payload: Optional[QueryBannedUsersPayload] = None + ) -> StreamResponse[QueryBannedUsersResponse]: query_params = build_query_param(payload=payload) - return self.get("/api/v2/chat/query_banned_users", QueryBannedUsersResponse, query_params=query_params) - + return self.get( + "/api/v2/chat/query_banned_users", + QueryBannedUsersResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.chat.query_future_channel_bans") - def query_future_channel_bans(self, payload: Optional[QueryFutureChannelBansPayload] = None) -> StreamResponse[QueryFutureChannelBansResponse]: + def query_future_channel_bans( + self, payload: Optional[QueryFutureChannelBansPayload] = None + ) -> StreamResponse[QueryFutureChannelBansResponse]: query_params = build_query_param(payload=payload) - return self.get("/api/v2/chat/query_future_channel_bans", QueryFutureChannelBansResponse, query_params=query_params) - + return self.get( + "/api/v2/chat/query_future_channel_bans", + QueryFutureChannelBansResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.chat.query_reminders") - def query_reminders(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryRemindersResponse]: - json = QueryRemindersRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return self.post("/api/v2/chat/reminders/query", QueryRemindersResponse, json=json) - + def query_reminders( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryRemindersResponse]: + json = QueryRemindersRequest( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return self.post( + "/api/v2/chat/reminders/query", QueryRemindersResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.get_retention_policy") def get_retention_policy(self) -> StreamResponse[GetRetentionPolicyResponse]: return self.get("/api/v2/chat/retention_policy", GetRetentionPolicyResponse) - + @telemetry.operation_name("getstream.api.chat.set_retention_policy") - def set_retention_policy(self, max_age_hours: int, policy: str) -> StreamResponse[SetRetentionPolicyResponse]: - json = SetRetentionPolicyRequest(max_age_hours=max_age_hours, policy=policy).to_dict() - return self.post("/api/v2/chat/retention_policy", SetRetentionPolicyResponse, json=json) - + def set_retention_policy( + self, max_age_hours: int, policy: str + ) -> StreamResponse[SetRetentionPolicyResponse]: + json = SetRetentionPolicyRequest( + max_age_hours=max_age_hours, policy=policy + ).to_dict() + return self.post( + "/api/v2/chat/retention_policy", SetRetentionPolicyResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.delete_retention_policy") - def delete_retention_policy(self, policy: str) -> StreamResponse[DeleteRetentionPolicyResponse]: + def delete_retention_policy( + self, policy: str + ) -> StreamResponse[DeleteRetentionPolicyResponse]: json = DeleteRetentionPolicyRequest(policy=policy).to_dict() - return self.post("/api/v2/chat/retention_policy/delete", DeleteRetentionPolicyResponse, json=json) - + return self.post( + "/api/v2/chat/retention_policy/delete", + DeleteRetentionPolicyResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.get_retention_policy_runs") - def get_retention_policy_runs(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[GetRetentionPolicyRunsResponse]: - json = GetRetentionPolicyRunsRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() - return self.post("/api/v2/chat/retention_policy/runs", GetRetentionPolicyRunsResponse, json=json) - + def get_retention_policy_runs( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[GetRetentionPolicyRunsResponse]: + json = GetRetentionPolicyRunsRequest( + limit=limit, + next=next, + prev=prev, + sort=sort, + filter_conditions=filter_conditions, + ).to_dict() + return self.post( + "/api/v2/chat/retention_policy/runs", + GetRetentionPolicyRunsResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.search") - def search(self, payload: Optional[SearchPayload] = None) -> StreamResponse[SearchResponse]: + def search( + self, payload: Optional[SearchPayload] = None + ) -> StreamResponse[SearchResponse]: query_params = build_query_param(payload=payload) - return self.get("/api/v2/chat/search", SearchResponse, query_params=query_params) - + return self.get( + "/api/v2/chat/search", SearchResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.chat.create_segment") - def create_segment(self, type: str, all_sender_channels: Optional[bool] = None, all_users: Optional[bool] = None, description: Optional[str] = None, id: Optional[str] = None, name: Optional[str] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[CreateSegmentResponse]: - json = CreateSegmentRequest(type=type, all_sender_channels=all_sender_channels, all_users=all_users, description=description, id=id, name=name, filter=filter).to_dict() + def create_segment( + self, + type: str, + all_sender_channels: Optional[bool] = None, + all_users: Optional[bool] = None, + description: Optional[str] = None, + id: Optional[str] = None, + name: Optional[str] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[CreateSegmentResponse]: + json = CreateSegmentRequest( + type=type, + all_sender_channels=all_sender_channels, + all_users=all_users, + description=description, + id=id, + name=name, + filter=filter, + ).to_dict() return self.post("/api/v2/chat/segments", CreateSegmentResponse, json=json) - + @telemetry.operation_name("getstream.api.chat.query_segments") - def query_segments(self, filter: Dict[str, object], limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None) -> StreamResponse[QuerySegmentsResponse]: - json = QuerySegmentsRequest(filter=filter, limit=limit, next=next, prev=prev, sort=sort).to_dict() - return self.post("/api/v2/chat/segments/query", QuerySegmentsResponse, json=json) - + def query_segments( + self, + filter: Dict[str, object], + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + ) -> StreamResponse[QuerySegmentsResponse]: + json = QuerySegmentsRequest( + filter=filter, limit=limit, next=next, prev=prev, sort=sort + ).to_dict() + return self.post( + "/api/v2/chat/segments/query", QuerySegmentsResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.delete_segment") def delete_segment(self, id: str) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - return self.delete("/api/v2/chat/segments/{id}", Response, path_params=path_params) - + return self.delete( + "/api/v2/chat/segments/{id}", Response, path_params=path_params + ) + @telemetry.operation_name("getstream.api.chat.get_segment") def get_segment(self, id: str) -> StreamResponse[GetSegmentResponse]: path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/chat/segments/{id}", GetSegmentResponse, path_params=path_params) - + return self.get( + "/api/v2/chat/segments/{id}", GetSegmentResponse, path_params=path_params + ) + @telemetry.operation_name("getstream.api.chat.update_segment") - def update_segment(self, id: str, description: Optional[str] = None, name: Optional[str] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[UpdateSegmentResponse]: - path_params = { - "id": id, - } - json = UpdateSegmentRequest(description=description, name=name, filter=filter).to_dict() - return self.put("/api/v2/chat/segments/{id}", UpdateSegmentResponse, path_params=path_params, json=json) - + def update_segment( + self, + id: str, + description: Optional[str] = None, + name: Optional[str] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[UpdateSegmentResponse]: + path_params = { + "id": id, + } + json = UpdateSegmentRequest( + description=description, name=name, filter=filter + ).to_dict() + return self.put( + "/api/v2/chat/segments/{id}", + UpdateSegmentResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.add_segment_targets") - def add_segment_targets(self, id: str, target_ids: List[str]) -> StreamResponse[Response]: + def add_segment_targets( + self, id: str, target_ids: List[str] + ) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } json = AddSegmentTargetsRequest(target_ids=target_ids).to_dict() - return self.post("/api/v2/chat/segments/{id}/addtargets", Response, path_params=path_params, json=json) - + return self.post( + "/api/v2/chat/segments/{id}/addtargets", + Response, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.delete_segment_targets") - def delete_segment_targets(self, id: str, target_ids: List[str]) -> StreamResponse[Response]: + def delete_segment_targets( + self, id: str, target_ids: List[str] + ) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } json = DeleteSegmentTargetsRequest(target_ids=target_ids).to_dict() - return self.post("/api/v2/chat/segments/{id}/deletetargets", Response, path_params=path_params, json=json) - + return self.post( + "/api/v2/chat/segments/{id}/deletetargets", + Response, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.segment_target_exists") - def segment_target_exists(self, id: str, target_id: str) -> StreamResponse[Response]: + def segment_target_exists( + self, id: str, target_id: str + ) -> StreamResponse[Response]: path_params = { - "id": id, "target_id": target_id, + "id": id, + "target_id": target_id, } - return self.get("/api/v2/chat/segments/{id}/target/{target_id}", Response, path_params=path_params) - + return self.get( + "/api/v2/chat/segments/{id}/target/{target_id}", + Response, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.query_segment_targets") - def query_segment_targets(self, id: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QuerySegmentTargetsResponse]: - path_params = { - "id": id, - } - json = QuerySegmentTargetsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() - return self.post("/api/v2/chat/segments/{id}/targets/query", QuerySegmentTargetsResponse, path_params=path_params, json=json) - + def query_segment_targets( + self, + id: str, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QuerySegmentTargetsResponse]: + path_params = { + "id": id, + } + json = QuerySegmentTargetsRequest( + limit=limit, next=next, prev=prev, sort=sort, filter=filter + ).to_dict() + return self.post( + "/api/v2/chat/segments/{id}/targets/query", + QuerySegmentTargetsResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.query_team_usage_stats") - def query_team_usage_stats(self, end_date: Optional[str] = None, limit: Optional[int] = None, month: Optional[str] = None, next: Optional[str] = None, start_date: Optional[str] = None, team: Optional[str] = None) -> StreamResponse[QueryTeamUsageStatsResponse]: - json = QueryTeamUsageStatsRequest(end_date=end_date, limit=limit, month=month, next=next, start_date=start_date, team=team).to_dict() - return self.post("/api/v2/chat/stats/team_usage", QueryTeamUsageStatsResponse, json=json) - + def query_team_usage_stats( + self, + end_date: Optional[str] = None, + limit: Optional[int] = None, + month: Optional[str] = None, + next: Optional[str] = None, + start_date: Optional[str] = None, + team: Optional[str] = None, + ) -> StreamResponse[QueryTeamUsageStatsResponse]: + json = QueryTeamUsageStatsRequest( + end_date=end_date, + limit=limit, + month=month, + next=next, + start_date=start_date, + team=team, + ).to_dict() + return self.post( + "/api/v2/chat/stats/team_usage", QueryTeamUsageStatsResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.query_threads") - def query_threads(self, limit: Optional[int] = None, member_limit: Optional[int] = None, next: Optional[str] = None, participant_limit: Optional[int] = None, prev: Optional[str] = None, reply_limit: Optional[int] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryThreadsResponse]: - json = QueryThreadsRequest(limit=limit, member_limit=member_limit, next=next, participant_limit=participant_limit, prev=prev, reply_limit=reply_limit, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + def query_threads( + self, + limit: Optional[int] = None, + member_limit: Optional[int] = None, + next: Optional[str] = None, + participant_limit: Optional[int] = None, + prev: Optional[str] = None, + reply_limit: Optional[int] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryThreadsResponse]: + json = QueryThreadsRequest( + limit=limit, + member_limit=member_limit, + next=next, + participant_limit=participant_limit, + prev=prev, + reply_limit=reply_limit, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() return self.post("/api/v2/chat/threads", QueryThreadsResponse, json=json) - + @telemetry.operation_name("getstream.api.chat.get_thread") - def get_thread(self, message_id: str, reply_limit: Optional[int] = None, participant_limit: Optional[int] = None, member_limit: Optional[int] = None) -> StreamResponse[GetThreadResponse]: - query_params = build_query_param(reply_limit=reply_limit, participant_limit=participant_limit, member_limit=member_limit) + def get_thread( + self, + message_id: str, + reply_limit: Optional[int] = None, + participant_limit: Optional[int] = None, + member_limit: Optional[int] = None, + ) -> StreamResponse[GetThreadResponse]: + query_params = build_query_param( + reply_limit=reply_limit, + participant_limit=participant_limit, + member_limit=member_limit, + ) path_params = { - "message_id": message_id, + "message_id": message_id, } - return self.get("/api/v2/chat/threads/{message_id}", GetThreadResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/chat/threads/{message_id}", + GetThreadResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.chat.update_thread_partial") - def update_thread_partial(self, message_id: str, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateThreadPartialResponse]: - path_params = { - "message_id": message_id, - } - json = UpdateThreadPartialRequest(user_id=user_id, unset=unset, set=set, user=user).to_dict() - return self.patch("/api/v2/chat/threads/{message_id}", UpdateThreadPartialResponse, path_params=path_params, json=json) - + def update_thread_partial( + self, + message_id: str, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateThreadPartialResponse]: + path_params = { + "message_id": message_id, + } + json = UpdateThreadPartialRequest( + user_id=user_id, unset=unset, set=set, user=user + ).to_dict() + return self.patch( + "/api/v2/chat/threads/{message_id}", + UpdateThreadPartialResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.unread_counts") - def unread_counts(self, user_id: Optional[str] = None) -> StreamResponse[WrappedUnreadCountsResponse]: + def unread_counts( + self, user_id: Optional[str] = None + ) -> StreamResponse[WrappedUnreadCountsResponse]: query_params = build_query_param(user_id=user_id) - return self.get("/api/v2/chat/unread", WrappedUnreadCountsResponse, query_params=query_params) - + return self.get( + "/api/v2/chat/unread", + WrappedUnreadCountsResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.chat.unread_counts_batch") - def unread_counts_batch(self, user_ids: List[str]) -> StreamResponse[UnreadCountsBatchResponse]: + def unread_counts_batch( + self, user_ids: List[str] + ) -> StreamResponse[UnreadCountsBatchResponse]: json = UnreadCountsBatchRequest(user_ids=user_ids).to_dict() - return self.post("/api/v2/chat/unread_batch", UnreadCountsBatchResponse, json=json) - + return self.post( + "/api/v2/chat/unread_batch", UnreadCountsBatchResponse, json=json + ) + @telemetry.operation_name("getstream.api.chat.send_user_custom_event") - def send_user_custom_event(self, user_id: str, event: UserCustomEventRequest) -> StreamResponse[Response]: + def send_user_custom_event( + self, user_id: str, event: UserCustomEventRequest + ) -> StreamResponse[Response]: path_params = { - "user_id": user_id, + "user_id": user_id, } json = SendUserCustomEventRequest(event=event).to_dict() - return self.post("/api/v2/chat/users/{user_id}/event", Response, path_params=path_params, json=json) - \ No newline at end of file + return self.post( + "/api/v2/chat/users/{user_id}/event", + Response, + path_params=path_params, + json=json, + ) diff --git a/getstream/common/async_rest_client.py b/getstream/common/async_rest_client.py index 1caa810a..2f7881cc 100644 --- a/getstream/common/async_rest_client.py +++ b/getstream/common/async_rest_client.py @@ -1,4 +1,3 @@ - # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import AsyncBaseClient from getstream.common import telemetry @@ -8,8 +7,14 @@ class CommonRestClient(AsyncBaseClient): - - def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): + def __init__( + self, + api_key: str, + base_url: str, + timeout: float, + token: str, + user_agent: str = None, + ): """ Initializes CommonClient with BaseClient instance :param api_key: A string representing the client's API key @@ -26,534 +31,1407 @@ def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user user_agent=user_agent, ) - @telemetry.operation_name("getstream.api.common.get_app") async def get_app(self) -> StreamResponse[GetApplicationResponse]: return await self.get("/api/v2/app", GetApplicationResponse) - + @telemetry.operation_name("getstream.api.common.update_app") - async def update_app(self, async_url_enrich_enabled: Optional[bool] = None, auto_translation_enabled: Optional[bool] = None, before_message_send_hook_attempt_timeout_ms: Optional[int] = None, before_message_send_hook_url: Optional[str] = None, cdn_expiration_seconds: Optional[int] = None, channel_hide_members_only: Optional[bool] = None, chat_primary_use_case: Optional[str] = None, custom_action_handler_url: Optional[str] = None, disable_auth_checks: Optional[bool] = None, disable_permissions_checks: Optional[bool] = None, enable_hook_payload_compression: Optional[bool] = None, enforce_unique_usernames: Optional[str] = None, feed_audit_logs_enabled: Optional[bool] = None, feeds_moderation_enabled: Optional[bool] = None, feeds_v2_region: Optional[str] = None, guest_user_creation_disabled: Optional[bool] = None, image_moderation_enabled: Optional[bool] = None, max_aggregated_activities_length: Optional[int] = None, member_custom_on_mentioned_users_enabled: Optional[bool] = None, member_custom_on_messages_enabled: Optional[bool] = None, member_custom_on_typing_events_enabled: Optional[bool] = None, migrate_permissions_to_v2: Optional[bool] = None, moderation_analytics_enabled: Optional[bool] = None, moderation_enabled: Optional[bool] = None, moderation_onboarding_complete: Optional[bool] = None, moderation_s3_image_access_role_arn: Optional[str] = None, moderation_webhook_url: Optional[str] = None, multi_tenant_enabled: Optional[bool] = None, permission_version: Optional[str] = None, reminders_interval: Optional[int] = None, reminders_max_members: Optional[int] = None, reminders_max_per_user: Optional[int] = None, revoke_tokens_issued_before: Optional[datetime] = None, sns_key: Optional[str] = None, sns_secret: Optional[str] = None, sns_topic_arn: Optional[str] = None, sqs_key: Optional[str] = None, sqs_secret: Optional[str] = None, sqs_url: Optional[str] = None, user_response_time_enabled: Optional[bool] = None, video_primary_use_case: Optional[str] = None, webhook_url: Optional[str] = None, allowed_flag_reasons: Optional[List[str]] = None, event_hooks: Optional[List[EventHook]] = None, image_moderation_block_labels: Optional[List[str]] = None, image_moderation_labels: Optional[List[str]] = None, user_search_disallowed_roles: Optional[List[str]] = None, webhook_events: Optional[List[str]] = None, activity_metrics_config: Optional[Dict[str, int]] = None, apn_config: Optional[APNConfig] = None, async_moderation_config: Optional[AsyncModerationConfiguration] = None, datadog_info: Optional[DataDogInfo] = None, file_upload_config: Optional[FileUploadConfig] = None, firebase_config: Optional[FirebaseConfig] = None, grants: Optional[Dict[str, List[str]]] = None, huawei_config: Optional[HuaweiConfig] = None, image_upload_config: Optional[FileUploadConfig] = None, moderation_dashboard_preferences: Optional[ModerationDashboardPreferences] = None, push_config: Optional[PushConfig] = None, xiaomi_config: Optional[XiaomiConfig] = None) -> StreamResponse[Response]: - json = UpdateAppRequest(async_url_enrich_enabled=async_url_enrich_enabled, auto_translation_enabled=auto_translation_enabled, before_message_send_hook_attempt_timeout_ms=before_message_send_hook_attempt_timeout_ms, before_message_send_hook_url=before_message_send_hook_url, cdn_expiration_seconds=cdn_expiration_seconds, channel_hide_members_only=channel_hide_members_only, chat_primary_use_case=chat_primary_use_case, custom_action_handler_url=custom_action_handler_url, disable_auth_checks=disable_auth_checks, disable_permissions_checks=disable_permissions_checks, enable_hook_payload_compression=enable_hook_payload_compression, enforce_unique_usernames=enforce_unique_usernames, feed_audit_logs_enabled=feed_audit_logs_enabled, feeds_moderation_enabled=feeds_moderation_enabled, feeds_v2_region=feeds_v2_region, guest_user_creation_disabled=guest_user_creation_disabled, image_moderation_enabled=image_moderation_enabled, max_aggregated_activities_length=max_aggregated_activities_length, member_custom_on_mentioned_users_enabled=member_custom_on_mentioned_users_enabled, member_custom_on_messages_enabled=member_custom_on_messages_enabled, member_custom_on_typing_events_enabled=member_custom_on_typing_events_enabled, migrate_permissions_to_v2=migrate_permissions_to_v2, moderation_analytics_enabled=moderation_analytics_enabled, moderation_enabled=moderation_enabled, moderation_onboarding_complete=moderation_onboarding_complete, moderation_s3_image_access_role_arn=moderation_s3_image_access_role_arn, moderation_webhook_url=moderation_webhook_url, multi_tenant_enabled=multi_tenant_enabled, permission_version=permission_version, reminders_interval=reminders_interval, reminders_max_members=reminders_max_members, reminders_max_per_user=reminders_max_per_user, revoke_tokens_issued_before=revoke_tokens_issued_before, sns_key=sns_key, sns_secret=sns_secret, sns_topic_arn=sns_topic_arn, sqs_key=sqs_key, sqs_secret=sqs_secret, sqs_url=sqs_url, user_response_time_enabled=user_response_time_enabled, video_primary_use_case=video_primary_use_case, webhook_url=webhook_url, allowed_flag_reasons=allowed_flag_reasons, event_hooks=event_hooks, image_moderation_block_labels=image_moderation_block_labels, image_moderation_labels=image_moderation_labels, user_search_disallowed_roles=user_search_disallowed_roles, webhook_events=webhook_events, activity_metrics_config=activity_metrics_config, apn_config=apn_config, async_moderation_config=async_moderation_config, datadog_info=datadog_info, file_upload_config=file_upload_config, firebase_config=firebase_config, grants=grants, huawei_config=huawei_config, image_upload_config=image_upload_config, moderation_dashboard_preferences=moderation_dashboard_preferences, push_config=push_config, xiaomi_config=xiaomi_config).to_dict() + async def update_app( + self, + async_url_enrich_enabled: Optional[bool] = None, + auto_translation_enabled: Optional[bool] = None, + before_message_send_hook_attempt_timeout_ms: Optional[int] = None, + before_message_send_hook_url: Optional[str] = None, + cdn_expiration_seconds: Optional[int] = None, + channel_hide_members_only: Optional[bool] = None, + chat_primary_use_case: Optional[str] = None, + custom_action_handler_url: Optional[str] = None, + disable_auth_checks: Optional[bool] = None, + disable_permissions_checks: Optional[bool] = None, + enable_hook_payload_compression: Optional[bool] = None, + enforce_unique_usernames: Optional[str] = None, + feed_audit_logs_enabled: Optional[bool] = None, + feeds_moderation_enabled: Optional[bool] = None, + feeds_v2_region: Optional[str] = None, + guest_user_creation_disabled: Optional[bool] = None, + image_moderation_enabled: Optional[bool] = None, + max_aggregated_activities_length: Optional[int] = None, + member_custom_on_mentioned_users_enabled: Optional[bool] = None, + member_custom_on_messages_enabled: Optional[bool] = None, + member_custom_on_typing_events_enabled: Optional[bool] = None, + migrate_permissions_to_v2: Optional[bool] = None, + moderation_analytics_enabled: Optional[bool] = None, + moderation_enabled: Optional[bool] = None, + moderation_onboarding_complete: Optional[bool] = None, + moderation_s3_image_access_role_arn: Optional[str] = None, + moderation_webhook_url: Optional[str] = None, + multi_tenant_enabled: Optional[bool] = None, + permission_version: Optional[str] = None, + reminders_interval: Optional[int] = None, + reminders_max_members: Optional[int] = None, + reminders_max_per_user: Optional[int] = None, + revoke_tokens_issued_before: Optional[datetime] = None, + sns_key: Optional[str] = None, + sns_secret: Optional[str] = None, + sns_topic_arn: Optional[str] = None, + sqs_key: Optional[str] = None, + sqs_secret: Optional[str] = None, + sqs_url: Optional[str] = None, + user_response_time_enabled: Optional[bool] = None, + video_primary_use_case: Optional[str] = None, + webhook_url: Optional[str] = None, + allowed_flag_reasons: Optional[List[str]] = None, + event_hooks: Optional[List[EventHook]] = None, + image_moderation_block_labels: Optional[List[str]] = None, + image_moderation_labels: Optional[List[str]] = None, + user_search_disallowed_roles: Optional[List[str]] = None, + webhook_events: Optional[List[str]] = None, + activity_metrics_config: Optional[Dict[str, int]] = None, + apn_config: Optional[APNConfig] = None, + async_moderation_config: Optional[AsyncModerationConfiguration] = None, + datadog_info: Optional[DataDogInfo] = None, + file_upload_config: Optional[FileUploadConfig] = None, + firebase_config: Optional[FirebaseConfig] = None, + grants: Optional[Dict[str, List[str]]] = None, + huawei_config: Optional[HuaweiConfig] = None, + image_upload_config: Optional[FileUploadConfig] = None, + moderation_dashboard_preferences: Optional[ + ModerationDashboardPreferences + ] = None, + push_config: Optional[PushConfig] = None, + xiaomi_config: Optional[XiaomiConfig] = None, + ) -> StreamResponse[Response]: + json = UpdateAppRequest( + async_url_enrich_enabled=async_url_enrich_enabled, + auto_translation_enabled=auto_translation_enabled, + before_message_send_hook_attempt_timeout_ms=before_message_send_hook_attempt_timeout_ms, + before_message_send_hook_url=before_message_send_hook_url, + cdn_expiration_seconds=cdn_expiration_seconds, + channel_hide_members_only=channel_hide_members_only, + chat_primary_use_case=chat_primary_use_case, + custom_action_handler_url=custom_action_handler_url, + disable_auth_checks=disable_auth_checks, + disable_permissions_checks=disable_permissions_checks, + enable_hook_payload_compression=enable_hook_payload_compression, + enforce_unique_usernames=enforce_unique_usernames, + feed_audit_logs_enabled=feed_audit_logs_enabled, + feeds_moderation_enabled=feeds_moderation_enabled, + feeds_v2_region=feeds_v2_region, + guest_user_creation_disabled=guest_user_creation_disabled, + image_moderation_enabled=image_moderation_enabled, + max_aggregated_activities_length=max_aggregated_activities_length, + member_custom_on_mentioned_users_enabled=member_custom_on_mentioned_users_enabled, + member_custom_on_messages_enabled=member_custom_on_messages_enabled, + member_custom_on_typing_events_enabled=member_custom_on_typing_events_enabled, + migrate_permissions_to_v2=migrate_permissions_to_v2, + moderation_analytics_enabled=moderation_analytics_enabled, + moderation_enabled=moderation_enabled, + moderation_onboarding_complete=moderation_onboarding_complete, + moderation_s3_image_access_role_arn=moderation_s3_image_access_role_arn, + moderation_webhook_url=moderation_webhook_url, + multi_tenant_enabled=multi_tenant_enabled, + permission_version=permission_version, + reminders_interval=reminders_interval, + reminders_max_members=reminders_max_members, + reminders_max_per_user=reminders_max_per_user, + revoke_tokens_issued_before=revoke_tokens_issued_before, + sns_key=sns_key, + sns_secret=sns_secret, + sns_topic_arn=sns_topic_arn, + sqs_key=sqs_key, + sqs_secret=sqs_secret, + sqs_url=sqs_url, + user_response_time_enabled=user_response_time_enabled, + video_primary_use_case=video_primary_use_case, + webhook_url=webhook_url, + allowed_flag_reasons=allowed_flag_reasons, + event_hooks=event_hooks, + image_moderation_block_labels=image_moderation_block_labels, + image_moderation_labels=image_moderation_labels, + user_search_disallowed_roles=user_search_disallowed_roles, + webhook_events=webhook_events, + activity_metrics_config=activity_metrics_config, + apn_config=apn_config, + async_moderation_config=async_moderation_config, + datadog_info=datadog_info, + file_upload_config=file_upload_config, + firebase_config=firebase_config, + grants=grants, + huawei_config=huawei_config, + image_upload_config=image_upload_config, + moderation_dashboard_preferences=moderation_dashboard_preferences, + push_config=push_config, + xiaomi_config=xiaomi_config, + ).to_dict() return await self.patch("/api/v2/app", Response, json=json) - + @telemetry.operation_name("getstream.api.common.list_block_lists") - async def list_block_lists(self, team: Optional[str] = None, cursor: Optional[str] = None, limit: Optional[int] = None) -> StreamResponse[ListBlockListResponse]: + async def list_block_lists( + self, + team: Optional[str] = None, + cursor: Optional[str] = None, + limit: Optional[int] = None, + ) -> StreamResponse[ListBlockListResponse]: query_params = build_query_param(team=team, cursor=cursor, limit=limit) - return await self.get("/api/v2/blocklists", ListBlockListResponse, query_params=query_params) - + return await self.get( + "/api/v2/blocklists", ListBlockListResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.common.create_block_list") - async def create_block_list(self, name: str, words: List[str], is_confusable_folding_enabled: Optional[bool] = None, is_leet_check_enabled: Optional[bool] = None, is_plural_check_enabled: Optional[bool] = None, is_substring_matching_enabled: Optional[bool] = None, team: Optional[str] = None, type: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CreateBlockListResponse]: - json = CreateBlockListRequest(name=name, words=words, is_confusable_folding_enabled=is_confusable_folding_enabled, is_leet_check_enabled=is_leet_check_enabled, is_plural_check_enabled=is_plural_check_enabled, is_substring_matching_enabled=is_substring_matching_enabled, team=team, type=type, user_id=user_id, user=user).to_dict() + async def create_block_list( + self, + name: str, + words: List[str], + is_confusable_folding_enabled: Optional[bool] = None, + is_leet_check_enabled: Optional[bool] = None, + is_plural_check_enabled: Optional[bool] = None, + is_substring_matching_enabled: Optional[bool] = None, + team: Optional[str] = None, + type: Optional[str] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[CreateBlockListResponse]: + json = CreateBlockListRequest( + name=name, + words=words, + is_confusable_folding_enabled=is_confusable_folding_enabled, + is_leet_check_enabled=is_leet_check_enabled, + is_plural_check_enabled=is_plural_check_enabled, + is_substring_matching_enabled=is_substring_matching_enabled, + team=team, + type=type, + user_id=user_id, + user=user, + ).to_dict() return await self.post("/api/v2/blocklists", CreateBlockListResponse, json=json) - + @telemetry.operation_name("getstream.api.common.import_block_list") - async def import_block_list(self, id: str, items: List[str], chunk_size: Optional[int] = None) -> StreamResponse[ImportBlockListResponse]: + async def import_block_list( + self, id: str, items: List[str], chunk_size: Optional[int] = None + ) -> StreamResponse[ImportBlockListResponse]: path_params = { - "id": id, + "id": id, } json = ImportBlockListRequest(items=items, chunk_size=chunk_size).to_dict() - return await self.post("/api/v2/blocklists/{id}/import", ImportBlockListResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/blocklists/{id}/import", + ImportBlockListResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.delete_block_list") - async def delete_block_list(self, name: str, team: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[Response]: + async def delete_block_list( + self, name: str, team: Optional[str] = None, user_id: Optional[str] = None + ) -> StreamResponse[Response]: query_params = build_query_param(team=team, user_id=user_id) path_params = { - "name": name, + "name": name, } - return await self.delete("/api/v2/blocklists/{name}", Response, query_params=query_params, path_params=path_params) - + return await self.delete( + "/api/v2/blocklists/{name}", + Response, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.get_block_list") - async def get_block_list(self, name: str, team: Optional[str] = None) -> StreamResponse[GetBlockListResponse]: + async def get_block_list( + self, name: str, team: Optional[str] = None + ) -> StreamResponse[GetBlockListResponse]: query_params = build_query_param(team=team) path_params = { - "name": name, + "name": name, } - return await self.get("/api/v2/blocklists/{name}", GetBlockListResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/blocklists/{name}", + GetBlockListResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.update_block_list") - async def update_block_list(self, name: str, is_confusable_folding_enabled: Optional[bool] = None, is_leet_check_enabled: Optional[bool] = None, is_plural_check_enabled: Optional[bool] = None, is_substring_matching_enabled: Optional[bool] = None, team: Optional[str] = None, user_id: Optional[str] = None, words: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateBlockListResponse]: + async def update_block_list( + self, + name: str, + is_confusable_folding_enabled: Optional[bool] = None, + is_leet_check_enabled: Optional[bool] = None, + is_plural_check_enabled: Optional[bool] = None, + is_substring_matching_enabled: Optional[bool] = None, + team: Optional[str] = None, + user_id: Optional[str] = None, + words: Optional[List[str]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateBlockListResponse]: path_params = { - "name": name, + "name": name, } - json = UpdateBlockListRequest(is_confusable_folding_enabled=is_confusable_folding_enabled, is_leet_check_enabled=is_leet_check_enabled, is_plural_check_enabled=is_plural_check_enabled, is_substring_matching_enabled=is_substring_matching_enabled, team=team, user_id=user_id, words=words, user=user).to_dict() - return await self.put("/api/v2/blocklists/{name}", UpdateBlockListResponse, path_params=path_params, json=json) - + json = UpdateBlockListRequest( + is_confusable_folding_enabled=is_confusable_folding_enabled, + is_leet_check_enabled=is_leet_check_enabled, + is_plural_check_enabled=is_plural_check_enabled, + is_substring_matching_enabled=is_substring_matching_enabled, + team=team, + user_id=user_id, + words=words, + user=user, + ).to_dict() + return await self.put( + "/api/v2/blocklists/{name}", + UpdateBlockListResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.check_push") - async def check_push(self, apn_template: Optional[str] = None, event_type: Optional[str] = None, firebase_data_template: Optional[str] = None, firebase_template: Optional[str] = None, message_id: Optional[str] = None, push_provider_name: Optional[str] = None, push_provider_type: Optional[str] = None, skip_devices: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CheckPushResponse]: - json = CheckPushRequest(apn_template=apn_template, event_type=event_type, firebase_data_template=firebase_data_template, firebase_template=firebase_template, message_id=message_id, push_provider_name=push_provider_name, push_provider_type=push_provider_type, skip_devices=skip_devices, user_id=user_id, user=user).to_dict() + async def check_push( + self, + apn_template: Optional[str] = None, + event_type: Optional[str] = None, + firebase_data_template: Optional[str] = None, + firebase_template: Optional[str] = None, + message_id: Optional[str] = None, + push_provider_name: Optional[str] = None, + push_provider_type: Optional[str] = None, + skip_devices: Optional[bool] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[CheckPushResponse]: + json = CheckPushRequest( + apn_template=apn_template, + event_type=event_type, + firebase_data_template=firebase_data_template, + firebase_template=firebase_template, + message_id=message_id, + push_provider_name=push_provider_name, + push_provider_type=push_provider_type, + skip_devices=skip_devices, + user_id=user_id, + user=user, + ).to_dict() return await self.post("/api/v2/check_push", CheckPushResponse, json=json) - + @telemetry.operation_name("getstream.api.common.check_sns") - async def check_sns(self, sns_key: Optional[str] = None, sns_secret: Optional[str] = None, sns_topic_arn: Optional[str] = None) -> StreamResponse[CheckSNSResponse]: - json = CheckSNSRequest(sns_key=sns_key, sns_secret=sns_secret, sns_topic_arn=sns_topic_arn).to_dict() + async def check_sns( + self, + sns_key: Optional[str] = None, + sns_secret: Optional[str] = None, + sns_topic_arn: Optional[str] = None, + ) -> StreamResponse[CheckSNSResponse]: + json = CheckSNSRequest( + sns_key=sns_key, sns_secret=sns_secret, sns_topic_arn=sns_topic_arn + ).to_dict() return await self.post("/api/v2/check_sns", CheckSNSResponse, json=json) - + @telemetry.operation_name("getstream.api.common.check_sqs") - async def check_sqs(self, sqs_key: Optional[str] = None, sqs_secret: Optional[str] = None, sqs_url: Optional[str] = None) -> StreamResponse[CheckSQSResponse]: - json = CheckSQSRequest(sqs_key=sqs_key, sqs_secret=sqs_secret, sqs_url=sqs_url).to_dict() + async def check_sqs( + self, + sqs_key: Optional[str] = None, + sqs_secret: Optional[str] = None, + sqs_url: Optional[str] = None, + ) -> StreamResponse[CheckSQSResponse]: + json = CheckSQSRequest( + sqs_key=sqs_key, sqs_secret=sqs_secret, sqs_url=sqs_url + ).to_dict() return await self.post("/api/v2/check_sqs", CheckSQSResponse, json=json) - + @telemetry.operation_name("getstream.api.common.delete_device") - async def delete_device(self, id: str, user_id: Optional[str] = None) -> StreamResponse[Response]: + async def delete_device( + self, id: str, user_id: Optional[str] = None + ) -> StreamResponse[Response]: query_params = build_query_param(id=id, user_id=user_id) return await self.delete("/api/v2/devices", Response, query_params=query_params) - + @telemetry.operation_name("getstream.api.common.list_devices") - async def list_devices(self, user_id: Optional[str] = None) -> StreamResponse[ListDevicesResponse]: + async def list_devices( + self, user_id: Optional[str] = None + ) -> StreamResponse[ListDevicesResponse]: query_params = build_query_param(user_id=user_id) - return await self.get("/api/v2/devices", ListDevicesResponse, query_params=query_params) - + return await self.get( + "/api/v2/devices", ListDevicesResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.common.create_device") - async def create_device(self, id: str, push_provider: str, hardware_id: Optional[str] = None, push_provider_name: Optional[str] = None, user_id: Optional[str] = None, voip_token: Optional[bool] = None, user: Optional[UserRequest] = None) -> StreamResponse[Response]: - json = CreateDeviceRequest(id=id, push_provider=push_provider, hardware_id=hardware_id, push_provider_name=push_provider_name, user_id=user_id, voip_token=voip_token, user=user).to_dict() + async def create_device( + self, + id: str, + push_provider: str, + hardware_id: Optional[str] = None, + push_provider_name: Optional[str] = None, + user_id: Optional[str] = None, + voip_token: Optional[bool] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[Response]: + json = CreateDeviceRequest( + id=id, + push_provider=push_provider, + hardware_id=hardware_id, + push_provider_name=push_provider_name, + user_id=user_id, + voip_token=voip_token, + user=user, + ).to_dict() return await self.post("/api/v2/devices", Response, json=json) - + @telemetry.operation_name("getstream.api.common.export_users") - async def export_users(self, user_ids: List[str]) -> StreamResponse[ExportUsersResponse]: + async def export_users( + self, user_ids: List[str] + ) -> StreamResponse[ExportUsersResponse]: json = ExportUsersRequest(user_ids=user_ids).to_dict() return await self.post("/api/v2/export/users", ExportUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.list_external_storage") - async def list_external_storage(self) -> StreamResponse[ListExternalStorageResponse]: + async def list_external_storage( + self, + ) -> StreamResponse[ListExternalStorageResponse]: return await self.get("/api/v2/external_storage", ListExternalStorageResponse) - + @telemetry.operation_name("getstream.api.common.create_external_storage") - async def create_external_storage(self, bucket: str, name: str, storage_type: str, gcs_credentials: Optional[str] = None, path: Optional[str] = None, aws_s3: Optional[S3Request] = None, azure_blob: Optional[AzureRequest] = None) -> StreamResponse[CreateExternalStorageResponse]: - json = CreateExternalStorageRequest(bucket=bucket, name=name, storage_type=storage_type, gcs_credentials=gcs_credentials, path=path, aws_s3=aws_s3, azure_blob=azure_blob).to_dict() - return await self.post("/api/v2/external_storage", CreateExternalStorageResponse, json=json) - + async def create_external_storage( + self, + bucket: str, + name: str, + storage_type: str, + gcs_credentials: Optional[str] = None, + path: Optional[str] = None, + aws_s3: Optional[S3Request] = None, + azure_blob: Optional[AzureRequest] = None, + ) -> StreamResponse[CreateExternalStorageResponse]: + json = CreateExternalStorageRequest( + bucket=bucket, + name=name, + storage_type=storage_type, + gcs_credentials=gcs_credentials, + path=path, + aws_s3=aws_s3, + azure_blob=azure_blob, + ).to_dict() + return await self.post( + "/api/v2/external_storage", CreateExternalStorageResponse, json=json + ) + @telemetry.operation_name("getstream.api.common.delete_external_storage") - async def delete_external_storage(self, name: str) -> StreamResponse[DeleteExternalStorageResponse]: + async def delete_external_storage( + self, name: str + ) -> StreamResponse[DeleteExternalStorageResponse]: path_params = { - "name": name, + "name": name, } - return await self.delete("/api/v2/external_storage/{name}", DeleteExternalStorageResponse, path_params=path_params) - + return await self.delete( + "/api/v2/external_storage/{name}", + DeleteExternalStorageResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.update_external_storage") - async def update_external_storage(self, name: str, bucket: str, storage_type: str, gcs_credentials: Optional[str] = None, path: Optional[str] = None, aws_s3: Optional[S3Request] = None, azure_blob: Optional[AzureRequest] = None) -> StreamResponse[UpdateExternalStorageResponse]: + async def update_external_storage( + self, + name: str, + bucket: str, + storage_type: str, + gcs_credentials: Optional[str] = None, + path: Optional[str] = None, + aws_s3: Optional[S3Request] = None, + azure_blob: Optional[AzureRequest] = None, + ) -> StreamResponse[UpdateExternalStorageResponse]: path_params = { - "name": name, + "name": name, } - json = UpdateExternalStorageRequest(bucket=bucket, storage_type=storage_type, gcs_credentials=gcs_credentials, path=path, aws_s3=aws_s3, azure_blob=azure_blob).to_dict() - return await self.put("/api/v2/external_storage/{name}", UpdateExternalStorageResponse, path_params=path_params, json=json) - + json = UpdateExternalStorageRequest( + bucket=bucket, + storage_type=storage_type, + gcs_credentials=gcs_credentials, + path=path, + aws_s3=aws_s3, + azure_blob=azure_blob, + ).to_dict() + return await self.put( + "/api/v2/external_storage/{name}", + UpdateExternalStorageResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.check_external_storage") - async def check_external_storage(self, name: str) -> StreamResponse[CheckExternalStorageResponse]: + async def check_external_storage( + self, name: str + ) -> StreamResponse[CheckExternalStorageResponse]: path_params = { - "name": name, + "name": name, } - return await self.get("/api/v2/external_storage/{name}/check", CheckExternalStorageResponse, path_params=path_params) - + return await self.get( + "/api/v2/external_storage/{name}/check", + CheckExternalStorageResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.create_guest") - async def create_guest(self, user: UserRequest) -> StreamResponse[CreateGuestResponse]: + async def create_guest( + self, user: UserRequest + ) -> StreamResponse[CreateGuestResponse]: json = CreateGuestRequest(user=user).to_dict() return await self.post("/api/v2/guest", CreateGuestResponse, json=json) - + @telemetry.operation_name("getstream.api.common.create_import_url") - async def create_import_url(self, filename: Optional[str] = None) -> StreamResponse[CreateImportURLResponse]: + async def create_import_url( + self, filename: Optional[str] = None + ) -> StreamResponse[CreateImportURLResponse]: json = CreateImportURLRequest(filename=filename).to_dict() - return await self.post("/api/v2/import_urls", CreateImportURLResponse, json=json) - + return await self.post( + "/api/v2/import_urls", CreateImportURLResponse, json=json + ) + @telemetry.operation_name("getstream.api.common.list_imports") async def list_imports(self) -> StreamResponse[ListImportsResponse]: return await self.get("/api/v2/imports", ListImportsResponse) - + @telemetry.operation_name("getstream.api.common.create_import") - async def create_import(self, mode: str, path: str, merge_custom: Optional[bool] = None) -> StreamResponse[CreateImportResponse]: - json = CreateImportRequest(mode=mode, path=path, merge_custom=merge_custom).to_dict() + async def create_import( + self, mode: str, path: str, merge_custom: Optional[bool] = None + ) -> StreamResponse[CreateImportResponse]: + json = CreateImportRequest( + mode=mode, path=path, merge_custom=merge_custom + ).to_dict() return await self.post("/api/v2/imports", CreateImportResponse, json=json) - + @telemetry.operation_name("getstream.api.common.list_import_v2_tasks") - async def list_import_v2_tasks(self, state: Optional[int] = None) -> StreamResponse[ListImportV2TasksResponse]: + async def list_import_v2_tasks( + self, state: Optional[int] = None + ) -> StreamResponse[ListImportV2TasksResponse]: query_params = build_query_param(state=state) - return await self.get("/api/v2/imports/v2", ListImportV2TasksResponse, query_params=query_params) - + return await self.get( + "/api/v2/imports/v2", ListImportV2TasksResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.common.create_import_v2_task") - async def create_import_v2_task(self, product: str, settings: ImportV2TaskSettings, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CreateImportV2TaskResponse]: - json = CreateImportV2TaskRequest(product=product, settings=settings, user_id=user_id, user=user).to_dict() - return await self.post("/api/v2/imports/v2", CreateImportV2TaskResponse, json=json) - + async def create_import_v2_task( + self, + product: str, + settings: ImportV2TaskSettings, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[CreateImportV2TaskResponse]: + json = CreateImportV2TaskRequest( + product=product, settings=settings, user_id=user_id, user=user + ).to_dict() + return await self.post( + "/api/v2/imports/v2", CreateImportV2TaskResponse, json=json + ) + @telemetry.operation_name("getstream.api.common.delete_importer_external_storage") - async def delete_importer_external_storage(self) -> StreamResponse[DeleteExternalStorageResponse]: - return await self.delete("/api/v2/imports/v2/external-storage", DeleteExternalStorageResponse) - + async def delete_importer_external_storage( + self, + ) -> StreamResponse[DeleteExternalStorageResponse]: + return await self.delete( + "/api/v2/imports/v2/external-storage", DeleteExternalStorageResponse + ) + @telemetry.operation_name("getstream.api.common.get_importer_external_storage") - async def get_importer_external_storage(self) -> StreamResponse[GetExternalStorageResponse]: - return await self.get("/api/v2/imports/v2/external-storage", GetExternalStorageResponse) - + async def get_importer_external_storage( + self, + ) -> StreamResponse[GetExternalStorageResponse]: + return await self.get( + "/api/v2/imports/v2/external-storage", GetExternalStorageResponse + ) + @telemetry.operation_name("getstream.api.common.upsert_importer_external_storage") - async def upsert_importer_external_storage(self, type: str, aws_s3: Optional[UpsertExternalStorageAWSS3Request] = None, gcs: Optional[UpsertExternalStorageGCSRequest] = None) -> StreamResponse[UpsertExternalStorageResponse]: + async def upsert_importer_external_storage( + self, + type: str, + aws_s3: Optional[UpsertExternalStorageAWSS3Request] = None, + gcs: Optional[UpsertExternalStorageGCSRequest] = None, + ) -> StreamResponse[UpsertExternalStorageResponse]: json = UpsertExternalStorageRequest(type=type, aws_s3=aws_s3, gcs=gcs).to_dict() - return await self.put("/api/v2/imports/v2/external-storage", UpsertExternalStorageResponse, json=json) - + return await self.put( + "/api/v2/imports/v2/external-storage", + UpsertExternalStorageResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.common.validate_importer_external_storage") - async def validate_importer_external_storage(self) -> StreamResponse[ValidateExternalStorageResponse]: - return await self.post("/api/v2/imports/v2/external-storage/validate", ValidateExternalStorageResponse) - + async def validate_importer_external_storage( + self, + ) -> StreamResponse[ValidateExternalStorageResponse]: + return await self.post( + "/api/v2/imports/v2/external-storage/validate", + ValidateExternalStorageResponse, + ) + @telemetry.operation_name("getstream.api.common.delete_import_v2_task") - async def delete_import_v2_task(self, id: str) -> StreamResponse[DeleteImportV2TaskResponse]: + async def delete_import_v2_task( + self, id: str + ) -> StreamResponse[DeleteImportV2TaskResponse]: path_params = { - "id": id, + "id": id, } - return await self.delete("/api/v2/imports/v2/{id}", DeleteImportV2TaskResponse, path_params=path_params) - + return await self.delete( + "/api/v2/imports/v2/{id}", + DeleteImportV2TaskResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.get_import_v2_task") - async def get_import_v2_task(self, id: str) -> StreamResponse[GetImportV2TaskResponse]: + async def get_import_v2_task( + self, id: str + ) -> StreamResponse[GetImportV2TaskResponse]: path_params = { - "id": id, + "id": id, } - return await self.get("/api/v2/imports/v2/{id}", GetImportV2TaskResponse, path_params=path_params) - + return await self.get( + "/api/v2/imports/v2/{id}", GetImportV2TaskResponse, path_params=path_params + ) + @telemetry.operation_name("getstream.api.common.cancel_import_v2_task") - async def cancel_import_v2_task(self, id: str) -> StreamResponse[CancelImportV2TaskResponse]: + async def cancel_import_v2_task( + self, id: str + ) -> StreamResponse[CancelImportV2TaskResponse]: path_params = { - "id": id, + "id": id, } - return await self.post("/api/v2/imports/v2/{id}/cancel", CancelImportV2TaskResponse, path_params=path_params) - + return await self.post( + "/api/v2/imports/v2/{id}/cancel", + CancelImportV2TaskResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.get_import") async def get_import(self, id: str) -> StreamResponse[GetImportResponse]: path_params = { - "id": id, + "id": id, } - return await self.get("/api/v2/imports/{id}", GetImportResponse, path_params=path_params) - + return await self.get( + "/api/v2/imports/{id}", GetImportResponse, path_params=path_params + ) + @telemetry.operation_name("getstream.api.common.get_og") async def get_og(self, url: str) -> StreamResponse[GetOGResponse]: query_params = build_query_param(url=url) return await self.get("/api/v2/og", GetOGResponse, query_params=query_params) - + @telemetry.operation_name("getstream.api.common.list_permissions") async def list_permissions(self) -> StreamResponse[ListPermissionsResponse]: return await self.get("/api/v2/permissions", ListPermissionsResponse) - + @telemetry.operation_name("getstream.api.common.create_permission") - async def create_permission(self, action: str, id: str, name: str, condition: Dict[str, object], description: Optional[str] = None, owner: Optional[bool] = None, same_team: Optional[bool] = None) -> StreamResponse[Response]: - json = CreatePermissionRequest(action=action, id=id, name=name, condition=condition, description=description, owner=owner, same_team=same_team).to_dict() + async def create_permission( + self, + action: str, + id: str, + name: str, + condition: Dict[str, object], + description: Optional[str] = None, + owner: Optional[bool] = None, + same_team: Optional[bool] = None, + ) -> StreamResponse[Response]: + json = CreatePermissionRequest( + action=action, + id=id, + name=name, + condition=condition, + description=description, + owner=owner, + same_team=same_team, + ).to_dict() return await self.post("/api/v2/permissions", Response, json=json) - + @telemetry.operation_name("getstream.api.common.delete_permission") async def delete_permission(self, id: str) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - return await self.delete("/api/v2/permissions/{id}", Response, path_params=path_params) - + return await self.delete( + "/api/v2/permissions/{id}", Response, path_params=path_params + ) + @telemetry.operation_name("getstream.api.common.get_permission") - async def get_permission(self, id: str) -> StreamResponse[GetCustomPermissionResponse]: + async def get_permission( + self, id: str + ) -> StreamResponse[GetCustomPermissionResponse]: path_params = { - "id": id, + "id": id, } - return await self.get("/api/v2/permissions/{id}", GetCustomPermissionResponse, path_params=path_params) - + return await self.get( + "/api/v2/permissions/{id}", + GetCustomPermissionResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.update_permission") - async def update_permission(self, id: str, action: str, name: str, condition: Dict[str, object], description: Optional[str] = None, owner: Optional[bool] = None, same_team: Optional[bool] = None) -> StreamResponse[Response]: + async def update_permission( + self, + id: str, + action: str, + name: str, + condition: Dict[str, object], + description: Optional[str] = None, + owner: Optional[bool] = None, + same_team: Optional[bool] = None, + ) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - json = PermissionRequest(action=action, name=name, condition=condition, description=description, owner=owner, same_team=same_team).to_dict() - return await self.put("/api/v2/permissions/{id}", Response, path_params=path_params, json=json) - + json = PermissionRequest( + action=action, + name=name, + condition=condition, + description=description, + owner=owner, + same_team=same_team, + ).to_dict() + return await self.put( + "/api/v2/permissions/{id}", Response, path_params=path_params, json=json + ) + @telemetry.operation_name("getstream.api.common.create_poll") - async def create_poll(self, name: str, allow_answers: Optional[bool] = None, allow_user_suggested_options: Optional[bool] = None, description: Optional[str] = None, enforce_unique_vote: Optional[bool] = None, id: Optional[str] = None, is_closed: Optional[bool] = None, max_votes_allowed: Optional[int] = None, user_id: Optional[str] = None, voting_visibility: Optional[str] = None, options: Optional[List[PollOptionInput]] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollResponse]: - json = CreatePollRequest(name=name, allow_answers=allow_answers, allow_user_suggested_options=allow_user_suggested_options, description=description, enforce_unique_vote=enforce_unique_vote, id=id, is_closed=is_closed, max_votes_allowed=max_votes_allowed, user_id=user_id, voting_visibility=voting_visibility, options=options, custom=custom, user=user).to_dict() + async def create_poll( + self, + name: str, + allow_answers: Optional[bool] = None, + allow_user_suggested_options: Optional[bool] = None, + description: Optional[str] = None, + enforce_unique_vote: Optional[bool] = None, + id: Optional[str] = None, + is_closed: Optional[bool] = None, + max_votes_allowed: Optional[int] = None, + user_id: Optional[str] = None, + voting_visibility: Optional[str] = None, + options: Optional[List[PollOptionInput]] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[PollResponse]: + json = CreatePollRequest( + name=name, + allow_answers=allow_answers, + allow_user_suggested_options=allow_user_suggested_options, + description=description, + enforce_unique_vote=enforce_unique_vote, + id=id, + is_closed=is_closed, + max_votes_allowed=max_votes_allowed, + user_id=user_id, + voting_visibility=voting_visibility, + options=options, + custom=custom, + user=user, + ).to_dict() return await self.post("/api/v2/polls", PollResponse, json=json) - + @telemetry.operation_name("getstream.api.common.update_poll") - async def update_poll(self, id: str, name: str, allow_answers: Optional[bool] = None, allow_user_suggested_options: Optional[bool] = None, description: Optional[str] = None, enforce_unique_vote: Optional[bool] = None, is_closed: Optional[bool] = None, max_votes_allowed: Optional[int] = None, user_id: Optional[str] = None, voting_visibility: Optional[str] = None, options: Optional[List[PollOptionRequest]] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollResponse]: - json = UpdatePollRequest(id=id, name=name, allow_answers=allow_answers, allow_user_suggested_options=allow_user_suggested_options, description=description, enforce_unique_vote=enforce_unique_vote, is_closed=is_closed, max_votes_allowed=max_votes_allowed, user_id=user_id, voting_visibility=voting_visibility, options=options, custom=custom, user=user).to_dict() + async def update_poll( + self, + id: str, + name: str, + allow_answers: Optional[bool] = None, + allow_user_suggested_options: Optional[bool] = None, + description: Optional[str] = None, + enforce_unique_vote: Optional[bool] = None, + is_closed: Optional[bool] = None, + max_votes_allowed: Optional[int] = None, + user_id: Optional[str] = None, + voting_visibility: Optional[str] = None, + options: Optional[List[PollOptionRequest]] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[PollResponse]: + json = UpdatePollRequest( + id=id, + name=name, + allow_answers=allow_answers, + allow_user_suggested_options=allow_user_suggested_options, + description=description, + enforce_unique_vote=enforce_unique_vote, + is_closed=is_closed, + max_votes_allowed=max_votes_allowed, + user_id=user_id, + voting_visibility=voting_visibility, + options=options, + custom=custom, + user=user, + ).to_dict() return await self.put("/api/v2/polls", PollResponse, json=json) - + @telemetry.operation_name("getstream.api.common.query_polls") - async def query_polls(self, user_id: Optional[str] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryPollsResponse]: + async def query_polls( + self, + user_id: Optional[str] = None, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryPollsResponse]: query_params = build_query_param(user_id=user_id) - json = QueryPollsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() - return await self.post("/api/v2/polls/query", QueryPollsResponse, query_params=query_params, json=json) - + json = QueryPollsRequest( + limit=limit, next=next, prev=prev, sort=sort, filter=filter + ).to_dict() + return await self.post( + "/api/v2/polls/query", + QueryPollsResponse, + query_params=query_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.delete_poll") - async def delete_poll(self, poll_id: str, user_id: Optional[str] = None) -> StreamResponse[Response]: + async def delete_poll( + self, poll_id: str, user_id: Optional[str] = None + ) -> StreamResponse[Response]: query_params = build_query_param(user_id=user_id) path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - return await self.delete("/api/v2/polls/{poll_id}", Response, query_params=query_params, path_params=path_params) - + return await self.delete( + "/api/v2/polls/{poll_id}", + Response, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.get_poll") - async def get_poll(self, poll_id: str, user_id: Optional[str] = None) -> StreamResponse[PollResponse]: + async def get_poll( + self, poll_id: str, user_id: Optional[str] = None + ) -> StreamResponse[PollResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - return await self.get("/api/v2/polls/{poll_id}", PollResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/polls/{poll_id}", + PollResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.update_poll_partial") - async def update_poll_partial(self, poll_id: str, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollResponse]: + async def update_poll_partial( + self, + poll_id: str, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[PollResponse]: path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - json = UpdatePollPartialRequest(user_id=user_id, unset=unset, set=set, user=user).to_dict() - return await self.patch("/api/v2/polls/{poll_id}", PollResponse, path_params=path_params, json=json) - + json = UpdatePollPartialRequest( + user_id=user_id, unset=unset, set=set, user=user + ).to_dict() + return await self.patch( + "/api/v2/polls/{poll_id}", PollResponse, path_params=path_params, json=json + ) + @telemetry.operation_name("getstream.api.common.create_poll_option") - async def create_poll_option(self, poll_id: str, text: str, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollOptionResponse]: + async def create_poll_option( + self, + poll_id: str, + text: str, + user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[PollOptionResponse]: path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - json = CreatePollOptionRequest(text=text, user_id=user_id, custom=custom, user=user).to_dict() - return await self.post("/api/v2/polls/{poll_id}/options", PollOptionResponse, path_params=path_params, json=json) - + json = CreatePollOptionRequest( + text=text, user_id=user_id, custom=custom, user=user + ).to_dict() + return await self.post( + "/api/v2/polls/{poll_id}/options", + PollOptionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.update_poll_option") - async def update_poll_option(self, poll_id: str, id: str, text: str, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollOptionResponse]: + async def update_poll_option( + self, + poll_id: str, + id: str, + text: str, + user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[PollOptionResponse]: path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - json = UpdatePollOptionRequest(id=id, text=text, user_id=user_id, custom=custom, user=user).to_dict() - return await self.put("/api/v2/polls/{poll_id}/options", PollOptionResponse, path_params=path_params, json=json) - + json = UpdatePollOptionRequest( + id=id, text=text, user_id=user_id, custom=custom, user=user + ).to_dict() + return await self.put( + "/api/v2/polls/{poll_id}/options", + PollOptionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.delete_poll_option") - async def delete_poll_option(self, poll_id: str, option_id: str, user_id: Optional[str] = None) -> StreamResponse[Response]: + async def delete_poll_option( + self, poll_id: str, option_id: str, user_id: Optional[str] = None + ) -> StreamResponse[Response]: query_params = build_query_param(user_id=user_id) path_params = { - "poll_id": poll_id, "option_id": option_id, + "poll_id": poll_id, + "option_id": option_id, } - return await self.delete("/api/v2/polls/{poll_id}/options/{option_id}", Response, query_params=query_params, path_params=path_params) - + return await self.delete( + "/api/v2/polls/{poll_id}/options/{option_id}", + Response, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.get_poll_option") - async def get_poll_option(self, poll_id: str, option_id: str) -> StreamResponse[PollOptionResponse]: + async def get_poll_option( + self, poll_id: str, option_id: str + ) -> StreamResponse[PollOptionResponse]: path_params = { - "poll_id": poll_id, "option_id": option_id, + "poll_id": poll_id, + "option_id": option_id, } - return await self.get("/api/v2/polls/{poll_id}/options/{option_id}", PollOptionResponse, path_params=path_params) - + return await self.get( + "/api/v2/polls/{poll_id}/options/{option_id}", + PollOptionResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.query_poll_votes") - async def query_poll_votes(self, poll_id: str, user_id: Optional[str] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[PollVotesResponse]: + async def query_poll_votes( + self, + poll_id: str, + user_id: Optional[str] = None, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[PollVotesResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - json = QueryPollVotesRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() - return await self.post("/api/v2/polls/{poll_id}/votes", PollVotesResponse, query_params=query_params, path_params=path_params, json=json) - - @telemetry.operation_name("getstream.api.common.update_push_notification_preferences") - async def update_push_notification_preferences(self, preferences: List[PushPreferenceInput]) -> StreamResponse[UpsertPushPreferencesResponse]: + json = QueryPollVotesRequest( + limit=limit, next=next, prev=prev, sort=sort, filter=filter + ).to_dict() + return await self.post( + "/api/v2/polls/{poll_id}/votes", + PollVotesResponse, + query_params=query_params, + path_params=path_params, + json=json, + ) + + @telemetry.operation_name( + "getstream.api.common.update_push_notification_preferences" + ) + async def update_push_notification_preferences( + self, preferences: List[PushPreferenceInput] + ) -> StreamResponse[UpsertPushPreferencesResponse]: json = UpsertPushPreferencesRequest(preferences=preferences).to_dict() - return await self.post("/api/v2/push_preferences", UpsertPushPreferencesResponse, json=json) - + return await self.post( + "/api/v2/push_preferences", UpsertPushPreferencesResponse, json=json + ) + @telemetry.operation_name("getstream.api.common.list_push_providers") async def list_push_providers(self) -> StreamResponse[ListPushProvidersResponse]: return await self.get("/api/v2/push_providers", ListPushProvidersResponse) - + @telemetry.operation_name("getstream.api.common.upsert_push_provider") - async def upsert_push_provider(self, push_provider: Optional[PushProviderRequest] = None) -> StreamResponse[UpsertPushProviderResponse]: + async def upsert_push_provider( + self, push_provider: Optional[PushProviderRequest] = None + ) -> StreamResponse[UpsertPushProviderResponse]: json = UpsertPushProviderRequest(push_provider=push_provider).to_dict() - return await self.post("/api/v2/push_providers", UpsertPushProviderResponse, json=json) - + return await self.post( + "/api/v2/push_providers", UpsertPushProviderResponse, json=json + ) + @telemetry.operation_name("getstream.api.common.delete_push_provider") - async def delete_push_provider(self, type: str, name: str) -> StreamResponse[Response]: + async def delete_push_provider( + self, type: str, name: str + ) -> StreamResponse[Response]: path_params = { - "type": type, "name": name, + "type": type, + "name": name, } - return await self.delete("/api/v2/push_providers/{type}/{name}", Response, path_params=path_params) - + return await self.delete( + "/api/v2/push_providers/{type}/{name}", Response, path_params=path_params + ) + @telemetry.operation_name("getstream.api.common.get_push_templates") - async def get_push_templates(self, push_provider_type: str, push_provider_name: Optional[str] = None) -> StreamResponse[GetPushTemplatesResponse]: - query_params = build_query_param(push_provider_type=push_provider_type, push_provider_name=push_provider_name) - return await self.get("/api/v2/push_templates", GetPushTemplatesResponse, query_params=query_params) - + async def get_push_templates( + self, push_provider_type: str, push_provider_name: Optional[str] = None + ) -> StreamResponse[GetPushTemplatesResponse]: + query_params = build_query_param( + push_provider_type=push_provider_type, push_provider_name=push_provider_name + ) + return await self.get( + "/api/v2/push_templates", + GetPushTemplatesResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.common.upsert_push_template") - async def upsert_push_template(self, event_type: str, push_provider_type: str, enable_push: Optional[bool] = None, push_provider_name: Optional[str] = None, template: Optional[str] = None) -> StreamResponse[UpsertPushTemplateResponse]: - json = UpsertPushTemplateRequest(event_type=event_type, push_provider_type=push_provider_type, enable_push=enable_push, push_provider_name=push_provider_name, template=template).to_dict() - return await self.post("/api/v2/push_templates", UpsertPushTemplateResponse, json=json) - + async def upsert_push_template( + self, + event_type: str, + push_provider_type: str, + enable_push: Optional[bool] = None, + push_provider_name: Optional[str] = None, + template: Optional[str] = None, + ) -> StreamResponse[UpsertPushTemplateResponse]: + json = UpsertPushTemplateRequest( + event_type=event_type, + push_provider_type=push_provider_type, + enable_push=enable_push, + push_provider_name=push_provider_name, + template=template, + ).to_dict() + return await self.post( + "/api/v2/push_templates", UpsertPushTemplateResponse, json=json + ) + @telemetry.operation_name("getstream.api.common.get_rate_limits") - async def get_rate_limits(self, server_side: Optional[bool] = None, android: Optional[bool] = None, ios: Optional[bool] = None, web: Optional[bool] = None, unity: Optional[bool] = None, endpoints: Optional[str] = None) -> StreamResponse[GetRateLimitsResponse]: - query_params = build_query_param(server_side=server_side, android=android, ios=ios, web=web, unity=unity, endpoints=endpoints) - return await self.get("/api/v2/rate_limits", GetRateLimitsResponse, query_params=query_params) - + async def get_rate_limits( + self, + server_side: Optional[bool] = None, + android: Optional[bool] = None, + ios: Optional[bool] = None, + web: Optional[bool] = None, + unity: Optional[bool] = None, + endpoints: Optional[str] = None, + ) -> StreamResponse[GetRateLimitsResponse]: + query_params = build_query_param( + server_side=server_side, + android=android, + ios=ios, + web=web, + unity=unity, + endpoints=endpoints, + ) + return await self.get( + "/api/v2/rate_limits", GetRateLimitsResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.common.list_roles") async def list_roles(self) -> StreamResponse[ListRolesResponse]: return await self.get("/api/v2/roles", ListRolesResponse) - + @telemetry.operation_name("getstream.api.common.create_role") async def create_role(self, name: str) -> StreamResponse[CreateRoleResponse]: json = CreateRoleRequest(name=name).to_dict() return await self.post("/api/v2/roles", CreateRoleResponse, json=json) - + @telemetry.operation_name("getstream.api.common.search_roles") - async def search_roles(self, query: str, limit: Optional[int] = None, name_gt: Optional[str] = None, role_type: Optional[str] = None, include_global_roles: Optional[bool] = None) -> StreamResponse[SearchRolesResponse]: - query_params = build_query_param(query=query, limit=limit, name_gt=name_gt, role_type=role_type, include_global_roles=include_global_roles) - return await self.get("/api/v2/roles/search", SearchRolesResponse, query_params=query_params) - + async def search_roles( + self, + query: str, + limit: Optional[int] = None, + name_gt: Optional[str] = None, + role_type: Optional[str] = None, + include_global_roles: Optional[bool] = None, + ) -> StreamResponse[SearchRolesResponse]: + query_params = build_query_param( + query=query, + limit=limit, + name_gt=name_gt, + role_type=role_type, + include_global_roles=include_global_roles, + ) + return await self.get( + "/api/v2/roles/search", SearchRolesResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.common.delete_role") async def delete_role(self, name: str) -> StreamResponse[Response]: path_params = { - "name": name, + "name": name, } - return await self.delete("/api/v2/roles/{name}", Response, path_params=path_params) - + return await self.delete( + "/api/v2/roles/{name}", Response, path_params=path_params + ) + @telemetry.operation_name("getstream.api.common.get_task") async def get_task(self, id: str) -> StreamResponse[GetTaskResponse]: path_params = { - "id": id, + "id": id, } - return await self.get("/api/v2/tasks/{id}", GetTaskResponse, path_params=path_params) - + return await self.get( + "/api/v2/tasks/{id}", GetTaskResponse, path_params=path_params + ) + @telemetry.operation_name("getstream.api.common.delete_file") async def delete_file(self, url: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(url=url) - return await self.delete("/api/v2/uploads/file", Response, query_params=query_params) - + return await self.delete( + "/api/v2/uploads/file", Response, query_params=query_params + ) + @telemetry.operation_name("getstream.api.common.upload_file") - async def upload_file(self, file: Optional[str] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[FileUploadResponse]: + async def upload_file( + self, file: Optional[str] = None, user: Optional[OnlyUserID] = None + ) -> StreamResponse[FileUploadResponse]: json = FileUploadRequest(file=file, user=user).to_dict() return await self.post("/api/v2/uploads/file", FileUploadResponse, json=json) - + @telemetry.operation_name("getstream.api.common.delete_image") async def delete_image(self, url: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(url=url) - return await self.delete("/api/v2/uploads/image", Response, query_params=query_params) - + return await self.delete( + "/api/v2/uploads/image", Response, query_params=query_params + ) + @telemetry.operation_name("getstream.api.common.upload_image") - async def upload_image(self, file: Optional[str] = None, upload_sizes: Optional[List[ImageSize]] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[ImageUploadResponse]: - json = ImageUploadRequest(file=file, upload_sizes=upload_sizes, user=user).to_dict() + async def upload_image( + self, + file: Optional[str] = None, + upload_sizes: Optional[List[ImageSize]] = None, + user: Optional[OnlyUserID] = None, + ) -> StreamResponse[ImageUploadResponse]: + json = ImageUploadRequest( + file=file, upload_sizes=upload_sizes, user=user + ).to_dict() return await self.post("/api/v2/uploads/image", ImageUploadResponse, json=json) - + @telemetry.operation_name("getstream.api.common.list_user_groups") - async def list_user_groups(self, limit: Optional[int] = None, id_gt: Optional[str] = None, created_at_gt: Optional[str] = None, team_id: Optional[str] = None) -> StreamResponse[ListUserGroupsResponse]: - query_params = build_query_param(limit=limit, id_gt=id_gt, created_at_gt=created_at_gt, team_id=team_id) - return await self.get("/api/v2/usergroups", ListUserGroupsResponse, query_params=query_params) - + async def list_user_groups( + self, + limit: Optional[int] = None, + id_gt: Optional[str] = None, + created_at_gt: Optional[str] = None, + team_id: Optional[str] = None, + ) -> StreamResponse[ListUserGroupsResponse]: + query_params = build_query_param( + limit=limit, id_gt=id_gt, created_at_gt=created_at_gt, team_id=team_id + ) + return await self.get( + "/api/v2/usergroups", ListUserGroupsResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.common.create_user_group") - async def create_user_group(self, name: str, description: Optional[str] = None, id: Optional[str] = None, team_id: Optional[str] = None, member_ids: Optional[List[str]] = None) -> StreamResponse[CreateUserGroupResponse]: - json = CreateUserGroupRequest(name=name, description=description, id=id, team_id=team_id, member_ids=member_ids).to_dict() + async def create_user_group( + self, + name: str, + description: Optional[str] = None, + id: Optional[str] = None, + team_id: Optional[str] = None, + member_ids: Optional[List[str]] = None, + ) -> StreamResponse[CreateUserGroupResponse]: + json = CreateUserGroupRequest( + name=name, + description=description, + id=id, + team_id=team_id, + member_ids=member_ids, + ).to_dict() return await self.post("/api/v2/usergroups", CreateUserGroupResponse, json=json) - + @telemetry.operation_name("getstream.api.common.search_user_groups") - async def search_user_groups(self, query: str, limit: Optional[int] = None, name_gt: Optional[str] = None, id_gt: Optional[str] = None, team_id: Optional[str] = None) -> StreamResponse[SearchUserGroupsResponse]: - query_params = build_query_param(query=query, limit=limit, name_gt=name_gt, id_gt=id_gt, team_id=team_id) - return await self.get("/api/v2/usergroups/search", SearchUserGroupsResponse, query_params=query_params) - + async def search_user_groups( + self, + query: str, + limit: Optional[int] = None, + name_gt: Optional[str] = None, + id_gt: Optional[str] = None, + team_id: Optional[str] = None, + ) -> StreamResponse[SearchUserGroupsResponse]: + query_params = build_query_param( + query=query, limit=limit, name_gt=name_gt, id_gt=id_gt, team_id=team_id + ) + return await self.get( + "/api/v2/usergroups/search", + SearchUserGroupsResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.common.delete_user_group") - async def delete_user_group(self, id: str, team_id: Optional[str] = None) -> StreamResponse[Response]: + async def delete_user_group( + self, id: str, team_id: Optional[str] = None + ) -> StreamResponse[Response]: query_params = build_query_param(team_id=team_id) path_params = { - "id": id, + "id": id, } - return await self.delete("/api/v2/usergroups/{id}", Response, query_params=query_params, path_params=path_params) - + return await self.delete( + "/api/v2/usergroups/{id}", + Response, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.get_user_group") - async def get_user_group(self, id: str, team_id: Optional[str] = None) -> StreamResponse[GetUserGroupResponse]: + async def get_user_group( + self, id: str, team_id: Optional[str] = None + ) -> StreamResponse[GetUserGroupResponse]: query_params = build_query_param(team_id=team_id) path_params = { - "id": id, + "id": id, } - return await self.get("/api/v2/usergroups/{id}", GetUserGroupResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/usergroups/{id}", + GetUserGroupResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.update_user_group") - async def update_user_group(self, id: str, description: Optional[str] = None, name: Optional[str] = None, team_id: Optional[str] = None) -> StreamResponse[UpdateUserGroupResponse]: + async def update_user_group( + self, + id: str, + description: Optional[str] = None, + name: Optional[str] = None, + team_id: Optional[str] = None, + ) -> StreamResponse[UpdateUserGroupResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateUserGroupRequest(description=description, name=name, team_id=team_id).to_dict() - return await self.put("/api/v2/usergroups/{id}", UpdateUserGroupResponse, path_params=path_params, json=json) - + json = UpdateUserGroupRequest( + description=description, name=name, team_id=team_id + ).to_dict() + return await self.put( + "/api/v2/usergroups/{id}", + UpdateUserGroupResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.add_user_group_members") - async def add_user_group_members(self, id: str, member_ids: List[str], as_admin: Optional[bool] = None, team_id: Optional[str] = None) -> StreamResponse[AddUserGroupMembersResponse]: + async def add_user_group_members( + self, + id: str, + member_ids: List[str], + as_admin: Optional[bool] = None, + team_id: Optional[str] = None, + ) -> StreamResponse[AddUserGroupMembersResponse]: path_params = { - "id": id, + "id": id, } - json = AddUserGroupMembersRequest(member_ids=member_ids, as_admin=as_admin, team_id=team_id).to_dict() - return await self.post("/api/v2/usergroups/{id}/members", AddUserGroupMembersResponse, path_params=path_params, json=json) - + json = AddUserGroupMembersRequest( + member_ids=member_ids, as_admin=as_admin, team_id=team_id + ).to_dict() + return await self.post( + "/api/v2/usergroups/{id}/members", + AddUserGroupMembersResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.remove_user_group_members") - async def remove_user_group_members(self, id: str, member_ids: List[str], team_id: Optional[str] = None) -> StreamResponse[RemoveUserGroupMembersResponse]: + async def remove_user_group_members( + self, id: str, member_ids: List[str], team_id: Optional[str] = None + ) -> StreamResponse[RemoveUserGroupMembersResponse]: path_params = { - "id": id, + "id": id, } - json = RemoveUserGroupMembersRequest(member_ids=member_ids, team_id=team_id).to_dict() - return await self.post("/api/v2/usergroups/{id}/members/delete", RemoveUserGroupMembersResponse, path_params=path_params, json=json) - + json = RemoveUserGroupMembersRequest( + member_ids=member_ids, team_id=team_id + ).to_dict() + return await self.post( + "/api/v2/usergroups/{id}/members/delete", + RemoveUserGroupMembersResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.query_users") - async def query_users(self, payload: Optional[QueryUsersPayload] = None) -> StreamResponse[QueryUsersResponse]: + async def query_users( + self, payload: Optional[QueryUsersPayload] = None + ) -> StreamResponse[QueryUsersResponse]: query_params = build_query_param(payload=payload) - return await self.get("/api/v2/users", QueryUsersResponse, query_params=query_params) - + return await self.get( + "/api/v2/users", QueryUsersResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.common.update_users_partial") - async def update_users_partial(self, users: List[UpdateUserPartialRequest]) -> StreamResponse[UpdateUsersResponse]: + async def update_users_partial( + self, users: List[UpdateUserPartialRequest] + ) -> StreamResponse[UpdateUsersResponse]: json = UpdateUsersPartialRequest(users=users).to_dict() return await self.patch("/api/v2/users", UpdateUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.update_users") - async def update_users(self, users: Dict[str, UserRequest]) -> StreamResponse[UpdateUsersResponse]: + async def update_users( + self, users: Dict[str, UserRequest] + ) -> StreamResponse[UpdateUsersResponse]: json = UpdateUsersRequest(users=users).to_dict() return await self.post("/api/v2/users", UpdateUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.get_blocked_users") - async def get_blocked_users(self, user_id: Optional[str] = None) -> StreamResponse[GetBlockedUsersResponse]: + async def get_blocked_users( + self, user_id: Optional[str] = None + ) -> StreamResponse[GetBlockedUsersResponse]: query_params = build_query_param(user_id=user_id) - return await self.get("/api/v2/users/block", GetBlockedUsersResponse, query_params=query_params) - + return await self.get( + "/api/v2/users/block", GetBlockedUsersResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.common.block_users") - async def block_users(self, blocked_user_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[BlockUsersResponse]: - json = BlockUsersRequest(blocked_user_id=blocked_user_id, user_id=user_id, user=user).to_dict() + async def block_users( + self, + blocked_user_id: str, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[BlockUsersResponse]: + json = BlockUsersRequest( + blocked_user_id=blocked_user_id, user_id=user_id, user=user + ).to_dict() return await self.post("/api/v2/users/block", BlockUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.deactivate_users") - async def deactivate_users(self, user_ids: List[str], created_by_id: Optional[str] = None, mark_channels_deleted: Optional[bool] = None, mark_messages_deleted: Optional[bool] = None) -> StreamResponse[DeactivateUsersResponse]: - json = DeactivateUsersRequest(user_ids=user_ids, created_by_id=created_by_id, mark_channels_deleted=mark_channels_deleted, mark_messages_deleted=mark_messages_deleted).to_dict() - return await self.post("/api/v2/users/deactivate", DeactivateUsersResponse, json=json) - + async def deactivate_users( + self, + user_ids: List[str], + created_by_id: Optional[str] = None, + mark_channels_deleted: Optional[bool] = None, + mark_messages_deleted: Optional[bool] = None, + ) -> StreamResponse[DeactivateUsersResponse]: + json = DeactivateUsersRequest( + user_ids=user_ids, + created_by_id=created_by_id, + mark_channels_deleted=mark_channels_deleted, + mark_messages_deleted=mark_messages_deleted, + ).to_dict() + return await self.post( + "/api/v2/users/deactivate", DeactivateUsersResponse, json=json + ) + @telemetry.operation_name("getstream.api.common.delete_users") - async def delete_users(self, user_ids: List[str], calls: Optional[str] = None, conversations: Optional[str] = None, files: Optional[bool] = None, messages: Optional[str] = None, new_call_owner_id: Optional[str] = None, new_channel_owner_id: Optional[str] = None, user: Optional[str] = None) -> StreamResponse[DeleteUsersResponse]: - json = DeleteUsersRequest(user_ids=user_ids, calls=calls, conversations=conversations, files=files, messages=messages, new_call_owner_id=new_call_owner_id, new_channel_owner_id=new_channel_owner_id, user=user).to_dict() + async def delete_users( + self, + user_ids: List[str], + calls: Optional[str] = None, + conversations: Optional[str] = None, + files: Optional[bool] = None, + messages: Optional[str] = None, + new_call_owner_id: Optional[str] = None, + new_channel_owner_id: Optional[str] = None, + user: Optional[str] = None, + ) -> StreamResponse[DeleteUsersResponse]: + json = DeleteUsersRequest( + user_ids=user_ids, + calls=calls, + conversations=conversations, + files=files, + messages=messages, + new_call_owner_id=new_call_owner_id, + new_channel_owner_id=new_channel_owner_id, + user=user, + ).to_dict() return await self.post("/api/v2/users/delete", DeleteUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.get_user_live_locations") - async def get_user_live_locations(self, user_id: Optional[str] = None) -> StreamResponse[SharedLocationsResponse]: + async def get_user_live_locations( + self, user_id: Optional[str] = None + ) -> StreamResponse[SharedLocationsResponse]: query_params = build_query_param(user_id=user_id) - return await self.get("/api/v2/users/live_locations", SharedLocationsResponse, query_params=query_params) - + return await self.get( + "/api/v2/users/live_locations", + SharedLocationsResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.common.update_live_location") - async def update_live_location(self, message_id: str, end_at: Optional[datetime] = None, latitude: Optional[float] = None, longitude: Optional[float] = None, user_id: Optional[str] = None) -> StreamResponse[SharedLocationResponse]: + async def update_live_location( + self, + message_id: str, + end_at: Optional[datetime] = None, + latitude: Optional[float] = None, + longitude: Optional[float] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[SharedLocationResponse]: query_params = build_query_param(user_id=user_id) - json = UpdateLiveLocationRequest(message_id=message_id, end_at=end_at, latitude=latitude, longitude=longitude).to_dict() - return await self.put("/api/v2/users/live_locations", SharedLocationResponse, query_params=query_params, json=json) - + json = UpdateLiveLocationRequest( + message_id=message_id, end_at=end_at, latitude=latitude, longitude=longitude + ).to_dict() + return await self.put( + "/api/v2/users/live_locations", + SharedLocationResponse, + query_params=query_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.reactivate_users") - async def reactivate_users(self, user_ids: List[str], created_by_id: Optional[str] = None, restore_channels: Optional[bool] = None, restore_messages: Optional[bool] = None) -> StreamResponse[ReactivateUsersResponse]: - json = ReactivateUsersRequest(user_ids=user_ids, created_by_id=created_by_id, restore_channels=restore_channels, restore_messages=restore_messages).to_dict() - return await self.post("/api/v2/users/reactivate", ReactivateUsersResponse, json=json) - + async def reactivate_users( + self, + user_ids: List[str], + created_by_id: Optional[str] = None, + restore_channels: Optional[bool] = None, + restore_messages: Optional[bool] = None, + ) -> StreamResponse[ReactivateUsersResponse]: + json = ReactivateUsersRequest( + user_ids=user_ids, + created_by_id=created_by_id, + restore_channels=restore_channels, + restore_messages=restore_messages, + ).to_dict() + return await self.post( + "/api/v2/users/reactivate", ReactivateUsersResponse, json=json + ) + @telemetry.operation_name("getstream.api.common.restore_users") async def restore_users(self, user_ids: List[str]) -> StreamResponse[Response]: json = RestoreUsersRequest(user_ids=user_ids).to_dict() return await self.post("/api/v2/users/restore", Response, json=json) - + @telemetry.operation_name("getstream.api.common.unblock_users") - async def unblock_users(self, blocked_user_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[UnblockUsersResponse]: - json = UnblockUsersRequest(blocked_user_id=blocked_user_id, user_id=user_id, user=user).to_dict() + async def unblock_users( + self, + blocked_user_id: str, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UnblockUsersResponse]: + json = UnblockUsersRequest( + blocked_user_id=blocked_user_id, user_id=user_id, user=user + ).to_dict() return await self.post("/api/v2/users/unblock", UnblockUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.deactivate_user") - async def deactivate_user(self, user_id: str, created_by_id: Optional[str] = None, mark_messages_deleted: Optional[bool] = None) -> StreamResponse[DeactivateUserResponse]: + async def deactivate_user( + self, + user_id: str, + created_by_id: Optional[str] = None, + mark_messages_deleted: Optional[bool] = None, + ) -> StreamResponse[DeactivateUserResponse]: path_params = { - "user_id": user_id, + "user_id": user_id, } - json = DeactivateUserRequest(created_by_id=created_by_id, mark_messages_deleted=mark_messages_deleted).to_dict() - return await self.post("/api/v2/users/{user_id}/deactivate", DeactivateUserResponse, path_params=path_params, json=json) - + json = DeactivateUserRequest( + created_by_id=created_by_id, mark_messages_deleted=mark_messages_deleted + ).to_dict() + return await self.post( + "/api/v2/users/{user_id}/deactivate", + DeactivateUserResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.export_user") async def export_user(self, user_id: str) -> StreamResponse[ExportUserResponse]: path_params = { - "user_id": user_id, + "user_id": user_id, } - return await self.get("/api/v2/users/{user_id}/export", ExportUserResponse, path_params=path_params) - + return await self.get( + "/api/v2/users/{user_id}/export", + ExportUserResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.reactivate_user") - async def reactivate_user(self, user_id: str, created_by_id: Optional[str] = None, name: Optional[str] = None, restore_messages: Optional[bool] = None) -> StreamResponse[ReactivateUserResponse]: + async def reactivate_user( + self, + user_id: str, + created_by_id: Optional[str] = None, + name: Optional[str] = None, + restore_messages: Optional[bool] = None, + ) -> StreamResponse[ReactivateUserResponse]: path_params = { - "user_id": user_id, + "user_id": user_id, } - json = ReactivateUserRequest(created_by_id=created_by_id, name=name, restore_messages=restore_messages).to_dict() - return await self.post("/api/v2/users/{user_id}/reactivate", ReactivateUserResponse, path_params=path_params, json=json) - \ No newline at end of file + json = ReactivateUserRequest( + created_by_id=created_by_id, name=name, restore_messages=restore_messages + ).to_dict() + return await self.post( + "/api/v2/users/{user_id}/reactivate", + ReactivateUserResponse, + path_params=path_params, + json=json, + ) diff --git a/getstream/common/rest_client.py b/getstream/common/rest_client.py index d0423ef5..1003add8 100644 --- a/getstream/common/rest_client.py +++ b/getstream/common/rest_client.py @@ -1,4 +1,3 @@ - # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import BaseClient from getstream.common import telemetry @@ -8,8 +7,14 @@ class CommonRestClient(BaseClient): - - def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): + def __init__( + self, + api_key: str, + base_url: str, + timeout: float, + token: str, + user_agent: str = None, + ): """ Initializes CommonClient with BaseClient instance :param api_key: A string representing the client's API key @@ -26,534 +31,1377 @@ def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user user_agent=user_agent, ) - @telemetry.operation_name("getstream.api.common.get_app") def get_app(self) -> StreamResponse[GetApplicationResponse]: return self.get("/api/v2/app", GetApplicationResponse) - + @telemetry.operation_name("getstream.api.common.update_app") - def update_app(self, async_url_enrich_enabled: Optional[bool] = None, auto_translation_enabled: Optional[bool] = None, before_message_send_hook_attempt_timeout_ms: Optional[int] = None, before_message_send_hook_url: Optional[str] = None, cdn_expiration_seconds: Optional[int] = None, channel_hide_members_only: Optional[bool] = None, chat_primary_use_case: Optional[str] = None, custom_action_handler_url: Optional[str] = None, disable_auth_checks: Optional[bool] = None, disable_permissions_checks: Optional[bool] = None, enable_hook_payload_compression: Optional[bool] = None, enforce_unique_usernames: Optional[str] = None, feed_audit_logs_enabled: Optional[bool] = None, feeds_moderation_enabled: Optional[bool] = None, feeds_v2_region: Optional[str] = None, guest_user_creation_disabled: Optional[bool] = None, image_moderation_enabled: Optional[bool] = None, max_aggregated_activities_length: Optional[int] = None, member_custom_on_mentioned_users_enabled: Optional[bool] = None, member_custom_on_messages_enabled: Optional[bool] = None, member_custom_on_typing_events_enabled: Optional[bool] = None, migrate_permissions_to_v2: Optional[bool] = None, moderation_analytics_enabled: Optional[bool] = None, moderation_enabled: Optional[bool] = None, moderation_onboarding_complete: Optional[bool] = None, moderation_s3_image_access_role_arn: Optional[str] = None, moderation_webhook_url: Optional[str] = None, multi_tenant_enabled: Optional[bool] = None, permission_version: Optional[str] = None, reminders_interval: Optional[int] = None, reminders_max_members: Optional[int] = None, reminders_max_per_user: Optional[int] = None, revoke_tokens_issued_before: Optional[datetime] = None, sns_key: Optional[str] = None, sns_secret: Optional[str] = None, sns_topic_arn: Optional[str] = None, sqs_key: Optional[str] = None, sqs_secret: Optional[str] = None, sqs_url: Optional[str] = None, user_response_time_enabled: Optional[bool] = None, video_primary_use_case: Optional[str] = None, webhook_url: Optional[str] = None, allowed_flag_reasons: Optional[List[str]] = None, event_hooks: Optional[List[EventHook]] = None, image_moderation_block_labels: Optional[List[str]] = None, image_moderation_labels: Optional[List[str]] = None, user_search_disallowed_roles: Optional[List[str]] = None, webhook_events: Optional[List[str]] = None, activity_metrics_config: Optional[Dict[str, int]] = None, apn_config: Optional[APNConfig] = None, async_moderation_config: Optional[AsyncModerationConfiguration] = None, datadog_info: Optional[DataDogInfo] = None, file_upload_config: Optional[FileUploadConfig] = None, firebase_config: Optional[FirebaseConfig] = None, grants: Optional[Dict[str, List[str]]] = None, huawei_config: Optional[HuaweiConfig] = None, image_upload_config: Optional[FileUploadConfig] = None, moderation_dashboard_preferences: Optional[ModerationDashboardPreferences] = None, push_config: Optional[PushConfig] = None, xiaomi_config: Optional[XiaomiConfig] = None) -> StreamResponse[Response]: - json = UpdateAppRequest(async_url_enrich_enabled=async_url_enrich_enabled, auto_translation_enabled=auto_translation_enabled, before_message_send_hook_attempt_timeout_ms=before_message_send_hook_attempt_timeout_ms, before_message_send_hook_url=before_message_send_hook_url, cdn_expiration_seconds=cdn_expiration_seconds, channel_hide_members_only=channel_hide_members_only, chat_primary_use_case=chat_primary_use_case, custom_action_handler_url=custom_action_handler_url, disable_auth_checks=disable_auth_checks, disable_permissions_checks=disable_permissions_checks, enable_hook_payload_compression=enable_hook_payload_compression, enforce_unique_usernames=enforce_unique_usernames, feed_audit_logs_enabled=feed_audit_logs_enabled, feeds_moderation_enabled=feeds_moderation_enabled, feeds_v2_region=feeds_v2_region, guest_user_creation_disabled=guest_user_creation_disabled, image_moderation_enabled=image_moderation_enabled, max_aggregated_activities_length=max_aggregated_activities_length, member_custom_on_mentioned_users_enabled=member_custom_on_mentioned_users_enabled, member_custom_on_messages_enabled=member_custom_on_messages_enabled, member_custom_on_typing_events_enabled=member_custom_on_typing_events_enabled, migrate_permissions_to_v2=migrate_permissions_to_v2, moderation_analytics_enabled=moderation_analytics_enabled, moderation_enabled=moderation_enabled, moderation_onboarding_complete=moderation_onboarding_complete, moderation_s3_image_access_role_arn=moderation_s3_image_access_role_arn, moderation_webhook_url=moderation_webhook_url, multi_tenant_enabled=multi_tenant_enabled, permission_version=permission_version, reminders_interval=reminders_interval, reminders_max_members=reminders_max_members, reminders_max_per_user=reminders_max_per_user, revoke_tokens_issued_before=revoke_tokens_issued_before, sns_key=sns_key, sns_secret=sns_secret, sns_topic_arn=sns_topic_arn, sqs_key=sqs_key, sqs_secret=sqs_secret, sqs_url=sqs_url, user_response_time_enabled=user_response_time_enabled, video_primary_use_case=video_primary_use_case, webhook_url=webhook_url, allowed_flag_reasons=allowed_flag_reasons, event_hooks=event_hooks, image_moderation_block_labels=image_moderation_block_labels, image_moderation_labels=image_moderation_labels, user_search_disallowed_roles=user_search_disallowed_roles, webhook_events=webhook_events, activity_metrics_config=activity_metrics_config, apn_config=apn_config, async_moderation_config=async_moderation_config, datadog_info=datadog_info, file_upload_config=file_upload_config, firebase_config=firebase_config, grants=grants, huawei_config=huawei_config, image_upload_config=image_upload_config, moderation_dashboard_preferences=moderation_dashboard_preferences, push_config=push_config, xiaomi_config=xiaomi_config).to_dict() + def update_app( + self, + async_url_enrich_enabled: Optional[bool] = None, + auto_translation_enabled: Optional[bool] = None, + before_message_send_hook_attempt_timeout_ms: Optional[int] = None, + before_message_send_hook_url: Optional[str] = None, + cdn_expiration_seconds: Optional[int] = None, + channel_hide_members_only: Optional[bool] = None, + chat_primary_use_case: Optional[str] = None, + custom_action_handler_url: Optional[str] = None, + disable_auth_checks: Optional[bool] = None, + disable_permissions_checks: Optional[bool] = None, + enable_hook_payload_compression: Optional[bool] = None, + enforce_unique_usernames: Optional[str] = None, + feed_audit_logs_enabled: Optional[bool] = None, + feeds_moderation_enabled: Optional[bool] = None, + feeds_v2_region: Optional[str] = None, + guest_user_creation_disabled: Optional[bool] = None, + image_moderation_enabled: Optional[bool] = None, + max_aggregated_activities_length: Optional[int] = None, + member_custom_on_mentioned_users_enabled: Optional[bool] = None, + member_custom_on_messages_enabled: Optional[bool] = None, + member_custom_on_typing_events_enabled: Optional[bool] = None, + migrate_permissions_to_v2: Optional[bool] = None, + moderation_analytics_enabled: Optional[bool] = None, + moderation_enabled: Optional[bool] = None, + moderation_onboarding_complete: Optional[bool] = None, + moderation_s3_image_access_role_arn: Optional[str] = None, + moderation_webhook_url: Optional[str] = None, + multi_tenant_enabled: Optional[bool] = None, + permission_version: Optional[str] = None, + reminders_interval: Optional[int] = None, + reminders_max_members: Optional[int] = None, + reminders_max_per_user: Optional[int] = None, + revoke_tokens_issued_before: Optional[datetime] = None, + sns_key: Optional[str] = None, + sns_secret: Optional[str] = None, + sns_topic_arn: Optional[str] = None, + sqs_key: Optional[str] = None, + sqs_secret: Optional[str] = None, + sqs_url: Optional[str] = None, + user_response_time_enabled: Optional[bool] = None, + video_primary_use_case: Optional[str] = None, + webhook_url: Optional[str] = None, + allowed_flag_reasons: Optional[List[str]] = None, + event_hooks: Optional[List[EventHook]] = None, + image_moderation_block_labels: Optional[List[str]] = None, + image_moderation_labels: Optional[List[str]] = None, + user_search_disallowed_roles: Optional[List[str]] = None, + webhook_events: Optional[List[str]] = None, + activity_metrics_config: Optional[Dict[str, int]] = None, + apn_config: Optional[APNConfig] = None, + async_moderation_config: Optional[AsyncModerationConfiguration] = None, + datadog_info: Optional[DataDogInfo] = None, + file_upload_config: Optional[FileUploadConfig] = None, + firebase_config: Optional[FirebaseConfig] = None, + grants: Optional[Dict[str, List[str]]] = None, + huawei_config: Optional[HuaweiConfig] = None, + image_upload_config: Optional[FileUploadConfig] = None, + moderation_dashboard_preferences: Optional[ + ModerationDashboardPreferences + ] = None, + push_config: Optional[PushConfig] = None, + xiaomi_config: Optional[XiaomiConfig] = None, + ) -> StreamResponse[Response]: + json = UpdateAppRequest( + async_url_enrich_enabled=async_url_enrich_enabled, + auto_translation_enabled=auto_translation_enabled, + before_message_send_hook_attempt_timeout_ms=before_message_send_hook_attempt_timeout_ms, + before_message_send_hook_url=before_message_send_hook_url, + cdn_expiration_seconds=cdn_expiration_seconds, + channel_hide_members_only=channel_hide_members_only, + chat_primary_use_case=chat_primary_use_case, + custom_action_handler_url=custom_action_handler_url, + disable_auth_checks=disable_auth_checks, + disable_permissions_checks=disable_permissions_checks, + enable_hook_payload_compression=enable_hook_payload_compression, + enforce_unique_usernames=enforce_unique_usernames, + feed_audit_logs_enabled=feed_audit_logs_enabled, + feeds_moderation_enabled=feeds_moderation_enabled, + feeds_v2_region=feeds_v2_region, + guest_user_creation_disabled=guest_user_creation_disabled, + image_moderation_enabled=image_moderation_enabled, + max_aggregated_activities_length=max_aggregated_activities_length, + member_custom_on_mentioned_users_enabled=member_custom_on_mentioned_users_enabled, + member_custom_on_messages_enabled=member_custom_on_messages_enabled, + member_custom_on_typing_events_enabled=member_custom_on_typing_events_enabled, + migrate_permissions_to_v2=migrate_permissions_to_v2, + moderation_analytics_enabled=moderation_analytics_enabled, + moderation_enabled=moderation_enabled, + moderation_onboarding_complete=moderation_onboarding_complete, + moderation_s3_image_access_role_arn=moderation_s3_image_access_role_arn, + moderation_webhook_url=moderation_webhook_url, + multi_tenant_enabled=multi_tenant_enabled, + permission_version=permission_version, + reminders_interval=reminders_interval, + reminders_max_members=reminders_max_members, + reminders_max_per_user=reminders_max_per_user, + revoke_tokens_issued_before=revoke_tokens_issued_before, + sns_key=sns_key, + sns_secret=sns_secret, + sns_topic_arn=sns_topic_arn, + sqs_key=sqs_key, + sqs_secret=sqs_secret, + sqs_url=sqs_url, + user_response_time_enabled=user_response_time_enabled, + video_primary_use_case=video_primary_use_case, + webhook_url=webhook_url, + allowed_flag_reasons=allowed_flag_reasons, + event_hooks=event_hooks, + image_moderation_block_labels=image_moderation_block_labels, + image_moderation_labels=image_moderation_labels, + user_search_disallowed_roles=user_search_disallowed_roles, + webhook_events=webhook_events, + activity_metrics_config=activity_metrics_config, + apn_config=apn_config, + async_moderation_config=async_moderation_config, + datadog_info=datadog_info, + file_upload_config=file_upload_config, + firebase_config=firebase_config, + grants=grants, + huawei_config=huawei_config, + image_upload_config=image_upload_config, + moderation_dashboard_preferences=moderation_dashboard_preferences, + push_config=push_config, + xiaomi_config=xiaomi_config, + ).to_dict() return self.patch("/api/v2/app", Response, json=json) - + @telemetry.operation_name("getstream.api.common.list_block_lists") - def list_block_lists(self, team: Optional[str] = None, cursor: Optional[str] = None, limit: Optional[int] = None) -> StreamResponse[ListBlockListResponse]: + def list_block_lists( + self, + team: Optional[str] = None, + cursor: Optional[str] = None, + limit: Optional[int] = None, + ) -> StreamResponse[ListBlockListResponse]: query_params = build_query_param(team=team, cursor=cursor, limit=limit) - return self.get("/api/v2/blocklists", ListBlockListResponse, query_params=query_params) - + return self.get( + "/api/v2/blocklists", ListBlockListResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.common.create_block_list") - def create_block_list(self, name: str, words: List[str], is_confusable_folding_enabled: Optional[bool] = None, is_leet_check_enabled: Optional[bool] = None, is_plural_check_enabled: Optional[bool] = None, is_substring_matching_enabled: Optional[bool] = None, team: Optional[str] = None, type: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CreateBlockListResponse]: - json = CreateBlockListRequest(name=name, words=words, is_confusable_folding_enabled=is_confusable_folding_enabled, is_leet_check_enabled=is_leet_check_enabled, is_plural_check_enabled=is_plural_check_enabled, is_substring_matching_enabled=is_substring_matching_enabled, team=team, type=type, user_id=user_id, user=user).to_dict() + def create_block_list( + self, + name: str, + words: List[str], + is_confusable_folding_enabled: Optional[bool] = None, + is_leet_check_enabled: Optional[bool] = None, + is_plural_check_enabled: Optional[bool] = None, + is_substring_matching_enabled: Optional[bool] = None, + team: Optional[str] = None, + type: Optional[str] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[CreateBlockListResponse]: + json = CreateBlockListRequest( + name=name, + words=words, + is_confusable_folding_enabled=is_confusable_folding_enabled, + is_leet_check_enabled=is_leet_check_enabled, + is_plural_check_enabled=is_plural_check_enabled, + is_substring_matching_enabled=is_substring_matching_enabled, + team=team, + type=type, + user_id=user_id, + user=user, + ).to_dict() return self.post("/api/v2/blocklists", CreateBlockListResponse, json=json) - + @telemetry.operation_name("getstream.api.common.import_block_list") - def import_block_list(self, id: str, items: List[str], chunk_size: Optional[int] = None) -> StreamResponse[ImportBlockListResponse]: + def import_block_list( + self, id: str, items: List[str], chunk_size: Optional[int] = None + ) -> StreamResponse[ImportBlockListResponse]: path_params = { - "id": id, + "id": id, } json = ImportBlockListRequest(items=items, chunk_size=chunk_size).to_dict() - return self.post("/api/v2/blocklists/{id}/import", ImportBlockListResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/blocklists/{id}/import", + ImportBlockListResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.delete_block_list") - def delete_block_list(self, name: str, team: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[Response]: + def delete_block_list( + self, name: str, team: Optional[str] = None, user_id: Optional[str] = None + ) -> StreamResponse[Response]: query_params = build_query_param(team=team, user_id=user_id) path_params = { - "name": name, + "name": name, } - return self.delete("/api/v2/blocklists/{name}", Response, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/blocklists/{name}", + Response, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.get_block_list") - def get_block_list(self, name: str, team: Optional[str] = None) -> StreamResponse[GetBlockListResponse]: + def get_block_list( + self, name: str, team: Optional[str] = None + ) -> StreamResponse[GetBlockListResponse]: query_params = build_query_param(team=team) path_params = { - "name": name, + "name": name, } - return self.get("/api/v2/blocklists/{name}", GetBlockListResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/blocklists/{name}", + GetBlockListResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.update_block_list") - def update_block_list(self, name: str, is_confusable_folding_enabled: Optional[bool] = None, is_leet_check_enabled: Optional[bool] = None, is_plural_check_enabled: Optional[bool] = None, is_substring_matching_enabled: Optional[bool] = None, team: Optional[str] = None, user_id: Optional[str] = None, words: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateBlockListResponse]: + def update_block_list( + self, + name: str, + is_confusable_folding_enabled: Optional[bool] = None, + is_leet_check_enabled: Optional[bool] = None, + is_plural_check_enabled: Optional[bool] = None, + is_substring_matching_enabled: Optional[bool] = None, + team: Optional[str] = None, + user_id: Optional[str] = None, + words: Optional[List[str]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateBlockListResponse]: path_params = { - "name": name, + "name": name, } - json = UpdateBlockListRequest(is_confusable_folding_enabled=is_confusable_folding_enabled, is_leet_check_enabled=is_leet_check_enabled, is_plural_check_enabled=is_plural_check_enabled, is_substring_matching_enabled=is_substring_matching_enabled, team=team, user_id=user_id, words=words, user=user).to_dict() - return self.put("/api/v2/blocklists/{name}", UpdateBlockListResponse, path_params=path_params, json=json) - + json = UpdateBlockListRequest( + is_confusable_folding_enabled=is_confusable_folding_enabled, + is_leet_check_enabled=is_leet_check_enabled, + is_plural_check_enabled=is_plural_check_enabled, + is_substring_matching_enabled=is_substring_matching_enabled, + team=team, + user_id=user_id, + words=words, + user=user, + ).to_dict() + return self.put( + "/api/v2/blocklists/{name}", + UpdateBlockListResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.check_push") - def check_push(self, apn_template: Optional[str] = None, event_type: Optional[str] = None, firebase_data_template: Optional[str] = None, firebase_template: Optional[str] = None, message_id: Optional[str] = None, push_provider_name: Optional[str] = None, push_provider_type: Optional[str] = None, skip_devices: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CheckPushResponse]: - json = CheckPushRequest(apn_template=apn_template, event_type=event_type, firebase_data_template=firebase_data_template, firebase_template=firebase_template, message_id=message_id, push_provider_name=push_provider_name, push_provider_type=push_provider_type, skip_devices=skip_devices, user_id=user_id, user=user).to_dict() + def check_push( + self, + apn_template: Optional[str] = None, + event_type: Optional[str] = None, + firebase_data_template: Optional[str] = None, + firebase_template: Optional[str] = None, + message_id: Optional[str] = None, + push_provider_name: Optional[str] = None, + push_provider_type: Optional[str] = None, + skip_devices: Optional[bool] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[CheckPushResponse]: + json = CheckPushRequest( + apn_template=apn_template, + event_type=event_type, + firebase_data_template=firebase_data_template, + firebase_template=firebase_template, + message_id=message_id, + push_provider_name=push_provider_name, + push_provider_type=push_provider_type, + skip_devices=skip_devices, + user_id=user_id, + user=user, + ).to_dict() return self.post("/api/v2/check_push", CheckPushResponse, json=json) - + @telemetry.operation_name("getstream.api.common.check_sns") - def check_sns(self, sns_key: Optional[str] = None, sns_secret: Optional[str] = None, sns_topic_arn: Optional[str] = None) -> StreamResponse[CheckSNSResponse]: - json = CheckSNSRequest(sns_key=sns_key, sns_secret=sns_secret, sns_topic_arn=sns_topic_arn).to_dict() + def check_sns( + self, + sns_key: Optional[str] = None, + sns_secret: Optional[str] = None, + sns_topic_arn: Optional[str] = None, + ) -> StreamResponse[CheckSNSResponse]: + json = CheckSNSRequest( + sns_key=sns_key, sns_secret=sns_secret, sns_topic_arn=sns_topic_arn + ).to_dict() return self.post("/api/v2/check_sns", CheckSNSResponse, json=json) - + @telemetry.operation_name("getstream.api.common.check_sqs") - def check_sqs(self, sqs_key: Optional[str] = None, sqs_secret: Optional[str] = None, sqs_url: Optional[str] = None) -> StreamResponse[CheckSQSResponse]: - json = CheckSQSRequest(sqs_key=sqs_key, sqs_secret=sqs_secret, sqs_url=sqs_url).to_dict() + def check_sqs( + self, + sqs_key: Optional[str] = None, + sqs_secret: Optional[str] = None, + sqs_url: Optional[str] = None, + ) -> StreamResponse[CheckSQSResponse]: + json = CheckSQSRequest( + sqs_key=sqs_key, sqs_secret=sqs_secret, sqs_url=sqs_url + ).to_dict() return self.post("/api/v2/check_sqs", CheckSQSResponse, json=json) - + @telemetry.operation_name("getstream.api.common.delete_device") - def delete_device(self, id: str, user_id: Optional[str] = None) -> StreamResponse[Response]: + def delete_device( + self, id: str, user_id: Optional[str] = None + ) -> StreamResponse[Response]: query_params = build_query_param(id=id, user_id=user_id) return self.delete("/api/v2/devices", Response, query_params=query_params) - + @telemetry.operation_name("getstream.api.common.list_devices") - def list_devices(self, user_id: Optional[str] = None) -> StreamResponse[ListDevicesResponse]: + def list_devices( + self, user_id: Optional[str] = None + ) -> StreamResponse[ListDevicesResponse]: query_params = build_query_param(user_id=user_id) - return self.get("/api/v2/devices", ListDevicesResponse, query_params=query_params) - + return self.get( + "/api/v2/devices", ListDevicesResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.common.create_device") - def create_device(self, id: str, push_provider: str, hardware_id: Optional[str] = None, push_provider_name: Optional[str] = None, user_id: Optional[str] = None, voip_token: Optional[bool] = None, user: Optional[UserRequest] = None) -> StreamResponse[Response]: - json = CreateDeviceRequest(id=id, push_provider=push_provider, hardware_id=hardware_id, push_provider_name=push_provider_name, user_id=user_id, voip_token=voip_token, user=user).to_dict() + def create_device( + self, + id: str, + push_provider: str, + hardware_id: Optional[str] = None, + push_provider_name: Optional[str] = None, + user_id: Optional[str] = None, + voip_token: Optional[bool] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[Response]: + json = CreateDeviceRequest( + id=id, + push_provider=push_provider, + hardware_id=hardware_id, + push_provider_name=push_provider_name, + user_id=user_id, + voip_token=voip_token, + user=user, + ).to_dict() return self.post("/api/v2/devices", Response, json=json) - + @telemetry.operation_name("getstream.api.common.export_users") def export_users(self, user_ids: List[str]) -> StreamResponse[ExportUsersResponse]: json = ExportUsersRequest(user_ids=user_ids).to_dict() return self.post("/api/v2/export/users", ExportUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.list_external_storage") def list_external_storage(self) -> StreamResponse[ListExternalStorageResponse]: return self.get("/api/v2/external_storage", ListExternalStorageResponse) - + @telemetry.operation_name("getstream.api.common.create_external_storage") - def create_external_storage(self, bucket: str, name: str, storage_type: str, gcs_credentials: Optional[str] = None, path: Optional[str] = None, aws_s3: Optional[S3Request] = None, azure_blob: Optional[AzureRequest] = None) -> StreamResponse[CreateExternalStorageResponse]: - json = CreateExternalStorageRequest(bucket=bucket, name=name, storage_type=storage_type, gcs_credentials=gcs_credentials, path=path, aws_s3=aws_s3, azure_blob=azure_blob).to_dict() - return self.post("/api/v2/external_storage", CreateExternalStorageResponse, json=json) - + def create_external_storage( + self, + bucket: str, + name: str, + storage_type: str, + gcs_credentials: Optional[str] = None, + path: Optional[str] = None, + aws_s3: Optional[S3Request] = None, + azure_blob: Optional[AzureRequest] = None, + ) -> StreamResponse[CreateExternalStorageResponse]: + json = CreateExternalStorageRequest( + bucket=bucket, + name=name, + storage_type=storage_type, + gcs_credentials=gcs_credentials, + path=path, + aws_s3=aws_s3, + azure_blob=azure_blob, + ).to_dict() + return self.post( + "/api/v2/external_storage", CreateExternalStorageResponse, json=json + ) + @telemetry.operation_name("getstream.api.common.delete_external_storage") - def delete_external_storage(self, name: str) -> StreamResponse[DeleteExternalStorageResponse]: + def delete_external_storage( + self, name: str + ) -> StreamResponse[DeleteExternalStorageResponse]: path_params = { - "name": name, + "name": name, } - return self.delete("/api/v2/external_storage/{name}", DeleteExternalStorageResponse, path_params=path_params) - + return self.delete( + "/api/v2/external_storage/{name}", + DeleteExternalStorageResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.update_external_storage") - def update_external_storage(self, name: str, bucket: str, storage_type: str, gcs_credentials: Optional[str] = None, path: Optional[str] = None, aws_s3: Optional[S3Request] = None, azure_blob: Optional[AzureRequest] = None) -> StreamResponse[UpdateExternalStorageResponse]: + def update_external_storage( + self, + name: str, + bucket: str, + storage_type: str, + gcs_credentials: Optional[str] = None, + path: Optional[str] = None, + aws_s3: Optional[S3Request] = None, + azure_blob: Optional[AzureRequest] = None, + ) -> StreamResponse[UpdateExternalStorageResponse]: path_params = { - "name": name, + "name": name, } - json = UpdateExternalStorageRequest(bucket=bucket, storage_type=storage_type, gcs_credentials=gcs_credentials, path=path, aws_s3=aws_s3, azure_blob=azure_blob).to_dict() - return self.put("/api/v2/external_storage/{name}", UpdateExternalStorageResponse, path_params=path_params, json=json) - + json = UpdateExternalStorageRequest( + bucket=bucket, + storage_type=storage_type, + gcs_credentials=gcs_credentials, + path=path, + aws_s3=aws_s3, + azure_blob=azure_blob, + ).to_dict() + return self.put( + "/api/v2/external_storage/{name}", + UpdateExternalStorageResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.check_external_storage") - def check_external_storage(self, name: str) -> StreamResponse[CheckExternalStorageResponse]: + def check_external_storage( + self, name: str + ) -> StreamResponse[CheckExternalStorageResponse]: path_params = { - "name": name, + "name": name, } - return self.get("/api/v2/external_storage/{name}/check", CheckExternalStorageResponse, path_params=path_params) - + return self.get( + "/api/v2/external_storage/{name}/check", + CheckExternalStorageResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.create_guest") def create_guest(self, user: UserRequest) -> StreamResponse[CreateGuestResponse]: json = CreateGuestRequest(user=user).to_dict() return self.post("/api/v2/guest", CreateGuestResponse, json=json) - + @telemetry.operation_name("getstream.api.common.create_import_url") - def create_import_url(self, filename: Optional[str] = None) -> StreamResponse[CreateImportURLResponse]: + def create_import_url( + self, filename: Optional[str] = None + ) -> StreamResponse[CreateImportURLResponse]: json = CreateImportURLRequest(filename=filename).to_dict() return self.post("/api/v2/import_urls", CreateImportURLResponse, json=json) - + @telemetry.operation_name("getstream.api.common.list_imports") def list_imports(self) -> StreamResponse[ListImportsResponse]: return self.get("/api/v2/imports", ListImportsResponse) - + @telemetry.operation_name("getstream.api.common.create_import") - def create_import(self, mode: str, path: str, merge_custom: Optional[bool] = None) -> StreamResponse[CreateImportResponse]: - json = CreateImportRequest(mode=mode, path=path, merge_custom=merge_custom).to_dict() + def create_import( + self, mode: str, path: str, merge_custom: Optional[bool] = None + ) -> StreamResponse[CreateImportResponse]: + json = CreateImportRequest( + mode=mode, path=path, merge_custom=merge_custom + ).to_dict() return self.post("/api/v2/imports", CreateImportResponse, json=json) - + @telemetry.operation_name("getstream.api.common.list_import_v2_tasks") - def list_import_v2_tasks(self, state: Optional[int] = None) -> StreamResponse[ListImportV2TasksResponse]: + def list_import_v2_tasks( + self, state: Optional[int] = None + ) -> StreamResponse[ListImportV2TasksResponse]: query_params = build_query_param(state=state) - return self.get("/api/v2/imports/v2", ListImportV2TasksResponse, query_params=query_params) - + return self.get( + "/api/v2/imports/v2", ListImportV2TasksResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.common.create_import_v2_task") - def create_import_v2_task(self, product: str, settings: ImportV2TaskSettings, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CreateImportV2TaskResponse]: - json = CreateImportV2TaskRequest(product=product, settings=settings, user_id=user_id, user=user).to_dict() + def create_import_v2_task( + self, + product: str, + settings: ImportV2TaskSettings, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[CreateImportV2TaskResponse]: + json = CreateImportV2TaskRequest( + product=product, settings=settings, user_id=user_id, user=user + ).to_dict() return self.post("/api/v2/imports/v2", CreateImportV2TaskResponse, json=json) - + @telemetry.operation_name("getstream.api.common.delete_importer_external_storage") - def delete_importer_external_storage(self) -> StreamResponse[DeleteExternalStorageResponse]: - return self.delete("/api/v2/imports/v2/external-storage", DeleteExternalStorageResponse) - + def delete_importer_external_storage( + self, + ) -> StreamResponse[DeleteExternalStorageResponse]: + return self.delete( + "/api/v2/imports/v2/external-storage", DeleteExternalStorageResponse + ) + @telemetry.operation_name("getstream.api.common.get_importer_external_storage") - def get_importer_external_storage(self) -> StreamResponse[GetExternalStorageResponse]: - return self.get("/api/v2/imports/v2/external-storage", GetExternalStorageResponse) - + def get_importer_external_storage( + self, + ) -> StreamResponse[GetExternalStorageResponse]: + return self.get( + "/api/v2/imports/v2/external-storage", GetExternalStorageResponse + ) + @telemetry.operation_name("getstream.api.common.upsert_importer_external_storage") - def upsert_importer_external_storage(self, type: str, aws_s3: Optional[UpsertExternalStorageAWSS3Request] = None, gcs: Optional[UpsertExternalStorageGCSRequest] = None) -> StreamResponse[UpsertExternalStorageResponse]: + def upsert_importer_external_storage( + self, + type: str, + aws_s3: Optional[UpsertExternalStorageAWSS3Request] = None, + gcs: Optional[UpsertExternalStorageGCSRequest] = None, + ) -> StreamResponse[UpsertExternalStorageResponse]: json = UpsertExternalStorageRequest(type=type, aws_s3=aws_s3, gcs=gcs).to_dict() - return self.put("/api/v2/imports/v2/external-storage", UpsertExternalStorageResponse, json=json) - + return self.put( + "/api/v2/imports/v2/external-storage", + UpsertExternalStorageResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.common.validate_importer_external_storage") - def validate_importer_external_storage(self) -> StreamResponse[ValidateExternalStorageResponse]: - return self.post("/api/v2/imports/v2/external-storage/validate", ValidateExternalStorageResponse) - + def validate_importer_external_storage( + self, + ) -> StreamResponse[ValidateExternalStorageResponse]: + return self.post( + "/api/v2/imports/v2/external-storage/validate", + ValidateExternalStorageResponse, + ) + @telemetry.operation_name("getstream.api.common.delete_import_v2_task") - def delete_import_v2_task(self, id: str) -> StreamResponse[DeleteImportV2TaskResponse]: + def delete_import_v2_task( + self, id: str + ) -> StreamResponse[DeleteImportV2TaskResponse]: path_params = { - "id": id, + "id": id, } - return self.delete("/api/v2/imports/v2/{id}", DeleteImportV2TaskResponse, path_params=path_params) - + return self.delete( + "/api/v2/imports/v2/{id}", + DeleteImportV2TaskResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.get_import_v2_task") def get_import_v2_task(self, id: str) -> StreamResponse[GetImportV2TaskResponse]: path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/imports/v2/{id}", GetImportV2TaskResponse, path_params=path_params) - + return self.get( + "/api/v2/imports/v2/{id}", GetImportV2TaskResponse, path_params=path_params + ) + @telemetry.operation_name("getstream.api.common.cancel_import_v2_task") - def cancel_import_v2_task(self, id: str) -> StreamResponse[CancelImportV2TaskResponse]: + def cancel_import_v2_task( + self, id: str + ) -> StreamResponse[CancelImportV2TaskResponse]: path_params = { - "id": id, + "id": id, } - return self.post("/api/v2/imports/v2/{id}/cancel", CancelImportV2TaskResponse, path_params=path_params) - + return self.post( + "/api/v2/imports/v2/{id}/cancel", + CancelImportV2TaskResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.get_import") def get_import(self, id: str) -> StreamResponse[GetImportResponse]: path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/imports/{id}", GetImportResponse, path_params=path_params) - + return self.get( + "/api/v2/imports/{id}", GetImportResponse, path_params=path_params + ) + @telemetry.operation_name("getstream.api.common.get_og") def get_og(self, url: str) -> StreamResponse[GetOGResponse]: query_params = build_query_param(url=url) return self.get("/api/v2/og", GetOGResponse, query_params=query_params) - + @telemetry.operation_name("getstream.api.common.list_permissions") def list_permissions(self) -> StreamResponse[ListPermissionsResponse]: return self.get("/api/v2/permissions", ListPermissionsResponse) - + @telemetry.operation_name("getstream.api.common.create_permission") - def create_permission(self, action: str, id: str, name: str, condition: Dict[str, object], description: Optional[str] = None, owner: Optional[bool] = None, same_team: Optional[bool] = None) -> StreamResponse[Response]: - json = CreatePermissionRequest(action=action, id=id, name=name, condition=condition, description=description, owner=owner, same_team=same_team).to_dict() + def create_permission( + self, + action: str, + id: str, + name: str, + condition: Dict[str, object], + description: Optional[str] = None, + owner: Optional[bool] = None, + same_team: Optional[bool] = None, + ) -> StreamResponse[Response]: + json = CreatePermissionRequest( + action=action, + id=id, + name=name, + condition=condition, + description=description, + owner=owner, + same_team=same_team, + ).to_dict() return self.post("/api/v2/permissions", Response, json=json) - + @telemetry.operation_name("getstream.api.common.delete_permission") def delete_permission(self, id: str) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - return self.delete("/api/v2/permissions/{id}", Response, path_params=path_params) - + return self.delete( + "/api/v2/permissions/{id}", Response, path_params=path_params + ) + @telemetry.operation_name("getstream.api.common.get_permission") def get_permission(self, id: str) -> StreamResponse[GetCustomPermissionResponse]: path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/permissions/{id}", GetCustomPermissionResponse, path_params=path_params) - + return self.get( + "/api/v2/permissions/{id}", + GetCustomPermissionResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.update_permission") - def update_permission(self, id: str, action: str, name: str, condition: Dict[str, object], description: Optional[str] = None, owner: Optional[bool] = None, same_team: Optional[bool] = None) -> StreamResponse[Response]: + def update_permission( + self, + id: str, + action: str, + name: str, + condition: Dict[str, object], + description: Optional[str] = None, + owner: Optional[bool] = None, + same_team: Optional[bool] = None, + ) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - json = PermissionRequest(action=action, name=name, condition=condition, description=description, owner=owner, same_team=same_team).to_dict() - return self.put("/api/v2/permissions/{id}", Response, path_params=path_params, json=json) - + json = PermissionRequest( + action=action, + name=name, + condition=condition, + description=description, + owner=owner, + same_team=same_team, + ).to_dict() + return self.put( + "/api/v2/permissions/{id}", Response, path_params=path_params, json=json + ) + @telemetry.operation_name("getstream.api.common.create_poll") - def create_poll(self, name: str, allow_answers: Optional[bool] = None, allow_user_suggested_options: Optional[bool] = None, description: Optional[str] = None, enforce_unique_vote: Optional[bool] = None, id: Optional[str] = None, is_closed: Optional[bool] = None, max_votes_allowed: Optional[int] = None, user_id: Optional[str] = None, voting_visibility: Optional[str] = None, options: Optional[List[PollOptionInput]] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollResponse]: - json = CreatePollRequest(name=name, allow_answers=allow_answers, allow_user_suggested_options=allow_user_suggested_options, description=description, enforce_unique_vote=enforce_unique_vote, id=id, is_closed=is_closed, max_votes_allowed=max_votes_allowed, user_id=user_id, voting_visibility=voting_visibility, options=options, custom=custom, user=user).to_dict() + def create_poll( + self, + name: str, + allow_answers: Optional[bool] = None, + allow_user_suggested_options: Optional[bool] = None, + description: Optional[str] = None, + enforce_unique_vote: Optional[bool] = None, + id: Optional[str] = None, + is_closed: Optional[bool] = None, + max_votes_allowed: Optional[int] = None, + user_id: Optional[str] = None, + voting_visibility: Optional[str] = None, + options: Optional[List[PollOptionInput]] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[PollResponse]: + json = CreatePollRequest( + name=name, + allow_answers=allow_answers, + allow_user_suggested_options=allow_user_suggested_options, + description=description, + enforce_unique_vote=enforce_unique_vote, + id=id, + is_closed=is_closed, + max_votes_allowed=max_votes_allowed, + user_id=user_id, + voting_visibility=voting_visibility, + options=options, + custom=custom, + user=user, + ).to_dict() return self.post("/api/v2/polls", PollResponse, json=json) - + @telemetry.operation_name("getstream.api.common.update_poll") - def update_poll(self, id: str, name: str, allow_answers: Optional[bool] = None, allow_user_suggested_options: Optional[bool] = None, description: Optional[str] = None, enforce_unique_vote: Optional[bool] = None, is_closed: Optional[bool] = None, max_votes_allowed: Optional[int] = None, user_id: Optional[str] = None, voting_visibility: Optional[str] = None, options: Optional[List[PollOptionRequest]] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollResponse]: - json = UpdatePollRequest(id=id, name=name, allow_answers=allow_answers, allow_user_suggested_options=allow_user_suggested_options, description=description, enforce_unique_vote=enforce_unique_vote, is_closed=is_closed, max_votes_allowed=max_votes_allowed, user_id=user_id, voting_visibility=voting_visibility, options=options, custom=custom, user=user).to_dict() + def update_poll( + self, + id: str, + name: str, + allow_answers: Optional[bool] = None, + allow_user_suggested_options: Optional[bool] = None, + description: Optional[str] = None, + enforce_unique_vote: Optional[bool] = None, + is_closed: Optional[bool] = None, + max_votes_allowed: Optional[int] = None, + user_id: Optional[str] = None, + voting_visibility: Optional[str] = None, + options: Optional[List[PollOptionRequest]] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[PollResponse]: + json = UpdatePollRequest( + id=id, + name=name, + allow_answers=allow_answers, + allow_user_suggested_options=allow_user_suggested_options, + description=description, + enforce_unique_vote=enforce_unique_vote, + is_closed=is_closed, + max_votes_allowed=max_votes_allowed, + user_id=user_id, + voting_visibility=voting_visibility, + options=options, + custom=custom, + user=user, + ).to_dict() return self.put("/api/v2/polls", PollResponse, json=json) - + @telemetry.operation_name("getstream.api.common.query_polls") - def query_polls(self, user_id: Optional[str] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryPollsResponse]: + def query_polls( + self, + user_id: Optional[str] = None, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryPollsResponse]: query_params = build_query_param(user_id=user_id) - json = QueryPollsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() - return self.post("/api/v2/polls/query", QueryPollsResponse, query_params=query_params, json=json) - + json = QueryPollsRequest( + limit=limit, next=next, prev=prev, sort=sort, filter=filter + ).to_dict() + return self.post( + "/api/v2/polls/query", + QueryPollsResponse, + query_params=query_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.delete_poll") - def delete_poll(self, poll_id: str, user_id: Optional[str] = None) -> StreamResponse[Response]: + def delete_poll( + self, poll_id: str, user_id: Optional[str] = None + ) -> StreamResponse[Response]: query_params = build_query_param(user_id=user_id) path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - return self.delete("/api/v2/polls/{poll_id}", Response, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/polls/{poll_id}", + Response, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.get_poll") - def get_poll(self, poll_id: str, user_id: Optional[str] = None) -> StreamResponse[PollResponse]: + def get_poll( + self, poll_id: str, user_id: Optional[str] = None + ) -> StreamResponse[PollResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - return self.get("/api/v2/polls/{poll_id}", PollResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/polls/{poll_id}", + PollResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.update_poll_partial") - def update_poll_partial(self, poll_id: str, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollResponse]: + def update_poll_partial( + self, + poll_id: str, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[PollResponse]: path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - json = UpdatePollPartialRequest(user_id=user_id, unset=unset, set=set, user=user).to_dict() - return self.patch("/api/v2/polls/{poll_id}", PollResponse, path_params=path_params, json=json) - + json = UpdatePollPartialRequest( + user_id=user_id, unset=unset, set=set, user=user + ).to_dict() + return self.patch( + "/api/v2/polls/{poll_id}", PollResponse, path_params=path_params, json=json + ) + @telemetry.operation_name("getstream.api.common.create_poll_option") - def create_poll_option(self, poll_id: str, text: str, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollOptionResponse]: + def create_poll_option( + self, + poll_id: str, + text: str, + user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[PollOptionResponse]: path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - json = CreatePollOptionRequest(text=text, user_id=user_id, custom=custom, user=user).to_dict() - return self.post("/api/v2/polls/{poll_id}/options", PollOptionResponse, path_params=path_params, json=json) - + json = CreatePollOptionRequest( + text=text, user_id=user_id, custom=custom, user=user + ).to_dict() + return self.post( + "/api/v2/polls/{poll_id}/options", + PollOptionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.update_poll_option") - def update_poll_option(self, poll_id: str, id: str, text: str, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[PollOptionResponse]: + def update_poll_option( + self, + poll_id: str, + id: str, + text: str, + user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[PollOptionResponse]: path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - json = UpdatePollOptionRequest(id=id, text=text, user_id=user_id, custom=custom, user=user).to_dict() - return self.put("/api/v2/polls/{poll_id}/options", PollOptionResponse, path_params=path_params, json=json) - + json = UpdatePollOptionRequest( + id=id, text=text, user_id=user_id, custom=custom, user=user + ).to_dict() + return self.put( + "/api/v2/polls/{poll_id}/options", + PollOptionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.delete_poll_option") - def delete_poll_option(self, poll_id: str, option_id: str, user_id: Optional[str] = None) -> StreamResponse[Response]: + def delete_poll_option( + self, poll_id: str, option_id: str, user_id: Optional[str] = None + ) -> StreamResponse[Response]: query_params = build_query_param(user_id=user_id) path_params = { - "poll_id": poll_id, "option_id": option_id, + "poll_id": poll_id, + "option_id": option_id, } - return self.delete("/api/v2/polls/{poll_id}/options/{option_id}", Response, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/polls/{poll_id}/options/{option_id}", + Response, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.get_poll_option") - def get_poll_option(self, poll_id: str, option_id: str) -> StreamResponse[PollOptionResponse]: + def get_poll_option( + self, poll_id: str, option_id: str + ) -> StreamResponse[PollOptionResponse]: path_params = { - "poll_id": poll_id, "option_id": option_id, + "poll_id": poll_id, + "option_id": option_id, } - return self.get("/api/v2/polls/{poll_id}/options/{option_id}", PollOptionResponse, path_params=path_params) - + return self.get( + "/api/v2/polls/{poll_id}/options/{option_id}", + PollOptionResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.query_poll_votes") - def query_poll_votes(self, poll_id: str, user_id: Optional[str] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[PollVotesResponse]: + def query_poll_votes( + self, + poll_id: str, + user_id: Optional[str] = None, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[PollVotesResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "poll_id": poll_id, + "poll_id": poll_id, } - json = QueryPollVotesRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() - return self.post("/api/v2/polls/{poll_id}/votes", PollVotesResponse, query_params=query_params, path_params=path_params, json=json) - - @telemetry.operation_name("getstream.api.common.update_push_notification_preferences") - def update_push_notification_preferences(self, preferences: List[PushPreferenceInput]) -> StreamResponse[UpsertPushPreferencesResponse]: + json = QueryPollVotesRequest( + limit=limit, next=next, prev=prev, sort=sort, filter=filter + ).to_dict() + return self.post( + "/api/v2/polls/{poll_id}/votes", + PollVotesResponse, + query_params=query_params, + path_params=path_params, + json=json, + ) + + @telemetry.operation_name( + "getstream.api.common.update_push_notification_preferences" + ) + def update_push_notification_preferences( + self, preferences: List[PushPreferenceInput] + ) -> StreamResponse[UpsertPushPreferencesResponse]: json = UpsertPushPreferencesRequest(preferences=preferences).to_dict() - return self.post("/api/v2/push_preferences", UpsertPushPreferencesResponse, json=json) - + return self.post( + "/api/v2/push_preferences", UpsertPushPreferencesResponse, json=json + ) + @telemetry.operation_name("getstream.api.common.list_push_providers") def list_push_providers(self) -> StreamResponse[ListPushProvidersResponse]: return self.get("/api/v2/push_providers", ListPushProvidersResponse) - + @telemetry.operation_name("getstream.api.common.upsert_push_provider") - def upsert_push_provider(self, push_provider: Optional[PushProviderRequest] = None) -> StreamResponse[UpsertPushProviderResponse]: + def upsert_push_provider( + self, push_provider: Optional[PushProviderRequest] = None + ) -> StreamResponse[UpsertPushProviderResponse]: json = UpsertPushProviderRequest(push_provider=push_provider).to_dict() - return self.post("/api/v2/push_providers", UpsertPushProviderResponse, json=json) - + return self.post( + "/api/v2/push_providers", UpsertPushProviderResponse, json=json + ) + @telemetry.operation_name("getstream.api.common.delete_push_provider") def delete_push_provider(self, type: str, name: str) -> StreamResponse[Response]: path_params = { - "type": type, "name": name, + "type": type, + "name": name, } - return self.delete("/api/v2/push_providers/{type}/{name}", Response, path_params=path_params) - + return self.delete( + "/api/v2/push_providers/{type}/{name}", Response, path_params=path_params + ) + @telemetry.operation_name("getstream.api.common.get_push_templates") - def get_push_templates(self, push_provider_type: str, push_provider_name: Optional[str] = None) -> StreamResponse[GetPushTemplatesResponse]: - query_params = build_query_param(push_provider_type=push_provider_type, push_provider_name=push_provider_name) - return self.get("/api/v2/push_templates", GetPushTemplatesResponse, query_params=query_params) - + def get_push_templates( + self, push_provider_type: str, push_provider_name: Optional[str] = None + ) -> StreamResponse[GetPushTemplatesResponse]: + query_params = build_query_param( + push_provider_type=push_provider_type, push_provider_name=push_provider_name + ) + return self.get( + "/api/v2/push_templates", + GetPushTemplatesResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.common.upsert_push_template") - def upsert_push_template(self, event_type: str, push_provider_type: str, enable_push: Optional[bool] = None, push_provider_name: Optional[str] = None, template: Optional[str] = None) -> StreamResponse[UpsertPushTemplateResponse]: - json = UpsertPushTemplateRequest(event_type=event_type, push_provider_type=push_provider_type, enable_push=enable_push, push_provider_name=push_provider_name, template=template).to_dict() - return self.post("/api/v2/push_templates", UpsertPushTemplateResponse, json=json) - + def upsert_push_template( + self, + event_type: str, + push_provider_type: str, + enable_push: Optional[bool] = None, + push_provider_name: Optional[str] = None, + template: Optional[str] = None, + ) -> StreamResponse[UpsertPushTemplateResponse]: + json = UpsertPushTemplateRequest( + event_type=event_type, + push_provider_type=push_provider_type, + enable_push=enable_push, + push_provider_name=push_provider_name, + template=template, + ).to_dict() + return self.post( + "/api/v2/push_templates", UpsertPushTemplateResponse, json=json + ) + @telemetry.operation_name("getstream.api.common.get_rate_limits") - def get_rate_limits(self, server_side: Optional[bool] = None, android: Optional[bool] = None, ios: Optional[bool] = None, web: Optional[bool] = None, unity: Optional[bool] = None, endpoints: Optional[str] = None) -> StreamResponse[GetRateLimitsResponse]: - query_params = build_query_param(server_side=server_side, android=android, ios=ios, web=web, unity=unity, endpoints=endpoints) - return self.get("/api/v2/rate_limits", GetRateLimitsResponse, query_params=query_params) - + def get_rate_limits( + self, + server_side: Optional[bool] = None, + android: Optional[bool] = None, + ios: Optional[bool] = None, + web: Optional[bool] = None, + unity: Optional[bool] = None, + endpoints: Optional[str] = None, + ) -> StreamResponse[GetRateLimitsResponse]: + query_params = build_query_param( + server_side=server_side, + android=android, + ios=ios, + web=web, + unity=unity, + endpoints=endpoints, + ) + return self.get( + "/api/v2/rate_limits", GetRateLimitsResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.common.list_roles") def list_roles(self) -> StreamResponse[ListRolesResponse]: return self.get("/api/v2/roles", ListRolesResponse) - + @telemetry.operation_name("getstream.api.common.create_role") def create_role(self, name: str) -> StreamResponse[CreateRoleResponse]: json = CreateRoleRequest(name=name).to_dict() return self.post("/api/v2/roles", CreateRoleResponse, json=json) - + @telemetry.operation_name("getstream.api.common.search_roles") - def search_roles(self, query: str, limit: Optional[int] = None, name_gt: Optional[str] = None, role_type: Optional[str] = None, include_global_roles: Optional[bool] = None) -> StreamResponse[SearchRolesResponse]: - query_params = build_query_param(query=query, limit=limit, name_gt=name_gt, role_type=role_type, include_global_roles=include_global_roles) - return self.get("/api/v2/roles/search", SearchRolesResponse, query_params=query_params) - + def search_roles( + self, + query: str, + limit: Optional[int] = None, + name_gt: Optional[str] = None, + role_type: Optional[str] = None, + include_global_roles: Optional[bool] = None, + ) -> StreamResponse[SearchRolesResponse]: + query_params = build_query_param( + query=query, + limit=limit, + name_gt=name_gt, + role_type=role_type, + include_global_roles=include_global_roles, + ) + return self.get( + "/api/v2/roles/search", SearchRolesResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.common.delete_role") def delete_role(self, name: str) -> StreamResponse[Response]: path_params = { - "name": name, + "name": name, } return self.delete("/api/v2/roles/{name}", Response, path_params=path_params) - + @telemetry.operation_name("getstream.api.common.get_task") def get_task(self, id: str) -> StreamResponse[GetTaskResponse]: path_params = { - "id": id, + "id": id, } return self.get("/api/v2/tasks/{id}", GetTaskResponse, path_params=path_params) - + @telemetry.operation_name("getstream.api.common.delete_file") def delete_file(self, url: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(url=url) return self.delete("/api/v2/uploads/file", Response, query_params=query_params) - + @telemetry.operation_name("getstream.api.common.upload_file") - def upload_file(self, file: Optional[str] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[FileUploadResponse]: + def upload_file( + self, file: Optional[str] = None, user: Optional[OnlyUserID] = None + ) -> StreamResponse[FileUploadResponse]: json = FileUploadRequest(file=file, user=user).to_dict() return self.post("/api/v2/uploads/file", FileUploadResponse, json=json) - + @telemetry.operation_name("getstream.api.common.delete_image") def delete_image(self, url: Optional[str] = None) -> StreamResponse[Response]: query_params = build_query_param(url=url) return self.delete("/api/v2/uploads/image", Response, query_params=query_params) - + @telemetry.operation_name("getstream.api.common.upload_image") - def upload_image(self, file: Optional[str] = None, upload_sizes: Optional[List[ImageSize]] = None, user: Optional[OnlyUserID] = None) -> StreamResponse[ImageUploadResponse]: - json = ImageUploadRequest(file=file, upload_sizes=upload_sizes, user=user).to_dict() + def upload_image( + self, + file: Optional[str] = None, + upload_sizes: Optional[List[ImageSize]] = None, + user: Optional[OnlyUserID] = None, + ) -> StreamResponse[ImageUploadResponse]: + json = ImageUploadRequest( + file=file, upload_sizes=upload_sizes, user=user + ).to_dict() return self.post("/api/v2/uploads/image", ImageUploadResponse, json=json) - + @telemetry.operation_name("getstream.api.common.list_user_groups") - def list_user_groups(self, limit: Optional[int] = None, id_gt: Optional[str] = None, created_at_gt: Optional[str] = None, team_id: Optional[str] = None) -> StreamResponse[ListUserGroupsResponse]: - query_params = build_query_param(limit=limit, id_gt=id_gt, created_at_gt=created_at_gt, team_id=team_id) - return self.get("/api/v2/usergroups", ListUserGroupsResponse, query_params=query_params) - + def list_user_groups( + self, + limit: Optional[int] = None, + id_gt: Optional[str] = None, + created_at_gt: Optional[str] = None, + team_id: Optional[str] = None, + ) -> StreamResponse[ListUserGroupsResponse]: + query_params = build_query_param( + limit=limit, id_gt=id_gt, created_at_gt=created_at_gt, team_id=team_id + ) + return self.get( + "/api/v2/usergroups", ListUserGroupsResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.common.create_user_group") - def create_user_group(self, name: str, description: Optional[str] = None, id: Optional[str] = None, team_id: Optional[str] = None, member_ids: Optional[List[str]] = None) -> StreamResponse[CreateUserGroupResponse]: - json = CreateUserGroupRequest(name=name, description=description, id=id, team_id=team_id, member_ids=member_ids).to_dict() + def create_user_group( + self, + name: str, + description: Optional[str] = None, + id: Optional[str] = None, + team_id: Optional[str] = None, + member_ids: Optional[List[str]] = None, + ) -> StreamResponse[CreateUserGroupResponse]: + json = CreateUserGroupRequest( + name=name, + description=description, + id=id, + team_id=team_id, + member_ids=member_ids, + ).to_dict() return self.post("/api/v2/usergroups", CreateUserGroupResponse, json=json) - + @telemetry.operation_name("getstream.api.common.search_user_groups") - def search_user_groups(self, query: str, limit: Optional[int] = None, name_gt: Optional[str] = None, id_gt: Optional[str] = None, team_id: Optional[str] = None) -> StreamResponse[SearchUserGroupsResponse]: - query_params = build_query_param(query=query, limit=limit, name_gt=name_gt, id_gt=id_gt, team_id=team_id) - return self.get("/api/v2/usergroups/search", SearchUserGroupsResponse, query_params=query_params) - + def search_user_groups( + self, + query: str, + limit: Optional[int] = None, + name_gt: Optional[str] = None, + id_gt: Optional[str] = None, + team_id: Optional[str] = None, + ) -> StreamResponse[SearchUserGroupsResponse]: + query_params = build_query_param( + query=query, limit=limit, name_gt=name_gt, id_gt=id_gt, team_id=team_id + ) + return self.get( + "/api/v2/usergroups/search", + SearchUserGroupsResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.common.delete_user_group") - def delete_user_group(self, id: str, team_id: Optional[str] = None) -> StreamResponse[Response]: + def delete_user_group( + self, id: str, team_id: Optional[str] = None + ) -> StreamResponse[Response]: query_params = build_query_param(team_id=team_id) path_params = { - "id": id, + "id": id, } - return self.delete("/api/v2/usergroups/{id}", Response, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/usergroups/{id}", + Response, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.get_user_group") - def get_user_group(self, id: str, team_id: Optional[str] = None) -> StreamResponse[GetUserGroupResponse]: + def get_user_group( + self, id: str, team_id: Optional[str] = None + ) -> StreamResponse[GetUserGroupResponse]: query_params = build_query_param(team_id=team_id) path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/usergroups/{id}", GetUserGroupResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/usergroups/{id}", + GetUserGroupResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.update_user_group") - def update_user_group(self, id: str, description: Optional[str] = None, name: Optional[str] = None, team_id: Optional[str] = None) -> StreamResponse[UpdateUserGroupResponse]: + def update_user_group( + self, + id: str, + description: Optional[str] = None, + name: Optional[str] = None, + team_id: Optional[str] = None, + ) -> StreamResponse[UpdateUserGroupResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateUserGroupRequest(description=description, name=name, team_id=team_id).to_dict() - return self.put("/api/v2/usergroups/{id}", UpdateUserGroupResponse, path_params=path_params, json=json) - + json = UpdateUserGroupRequest( + description=description, name=name, team_id=team_id + ).to_dict() + return self.put( + "/api/v2/usergroups/{id}", + UpdateUserGroupResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.add_user_group_members") - def add_user_group_members(self, id: str, member_ids: List[str], as_admin: Optional[bool] = None, team_id: Optional[str] = None) -> StreamResponse[AddUserGroupMembersResponse]: + def add_user_group_members( + self, + id: str, + member_ids: List[str], + as_admin: Optional[bool] = None, + team_id: Optional[str] = None, + ) -> StreamResponse[AddUserGroupMembersResponse]: path_params = { - "id": id, + "id": id, } - json = AddUserGroupMembersRequest(member_ids=member_ids, as_admin=as_admin, team_id=team_id).to_dict() - return self.post("/api/v2/usergroups/{id}/members", AddUserGroupMembersResponse, path_params=path_params, json=json) - + json = AddUserGroupMembersRequest( + member_ids=member_ids, as_admin=as_admin, team_id=team_id + ).to_dict() + return self.post( + "/api/v2/usergroups/{id}/members", + AddUserGroupMembersResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.remove_user_group_members") - def remove_user_group_members(self, id: str, member_ids: List[str], team_id: Optional[str] = None) -> StreamResponse[RemoveUserGroupMembersResponse]: + def remove_user_group_members( + self, id: str, member_ids: List[str], team_id: Optional[str] = None + ) -> StreamResponse[RemoveUserGroupMembersResponse]: path_params = { - "id": id, + "id": id, } - json = RemoveUserGroupMembersRequest(member_ids=member_ids, team_id=team_id).to_dict() - return self.post("/api/v2/usergroups/{id}/members/delete", RemoveUserGroupMembersResponse, path_params=path_params, json=json) - + json = RemoveUserGroupMembersRequest( + member_ids=member_ids, team_id=team_id + ).to_dict() + return self.post( + "/api/v2/usergroups/{id}/members/delete", + RemoveUserGroupMembersResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.query_users") - def query_users(self, payload: Optional[QueryUsersPayload] = None) -> StreamResponse[QueryUsersResponse]: + def query_users( + self, payload: Optional[QueryUsersPayload] = None + ) -> StreamResponse[QueryUsersResponse]: query_params = build_query_param(payload=payload) return self.get("/api/v2/users", QueryUsersResponse, query_params=query_params) - + @telemetry.operation_name("getstream.api.common.update_users_partial") - def update_users_partial(self, users: List[UpdateUserPartialRequest]) -> StreamResponse[UpdateUsersResponse]: + def update_users_partial( + self, users: List[UpdateUserPartialRequest] + ) -> StreamResponse[UpdateUsersResponse]: json = UpdateUsersPartialRequest(users=users).to_dict() return self.patch("/api/v2/users", UpdateUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.update_users") - def update_users(self, users: Dict[str, UserRequest]) -> StreamResponse[UpdateUsersResponse]: + def update_users( + self, users: Dict[str, UserRequest] + ) -> StreamResponse[UpdateUsersResponse]: json = UpdateUsersRequest(users=users).to_dict() return self.post("/api/v2/users", UpdateUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.get_blocked_users") - def get_blocked_users(self, user_id: Optional[str] = None) -> StreamResponse[GetBlockedUsersResponse]: + def get_blocked_users( + self, user_id: Optional[str] = None + ) -> StreamResponse[GetBlockedUsersResponse]: query_params = build_query_param(user_id=user_id) - return self.get("/api/v2/users/block", GetBlockedUsersResponse, query_params=query_params) - + return self.get( + "/api/v2/users/block", GetBlockedUsersResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.common.block_users") - def block_users(self, blocked_user_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[BlockUsersResponse]: - json = BlockUsersRequest(blocked_user_id=blocked_user_id, user_id=user_id, user=user).to_dict() + def block_users( + self, + blocked_user_id: str, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[BlockUsersResponse]: + json = BlockUsersRequest( + blocked_user_id=blocked_user_id, user_id=user_id, user=user + ).to_dict() return self.post("/api/v2/users/block", BlockUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.deactivate_users") - def deactivate_users(self, user_ids: List[str], created_by_id: Optional[str] = None, mark_channels_deleted: Optional[bool] = None, mark_messages_deleted: Optional[bool] = None) -> StreamResponse[DeactivateUsersResponse]: - json = DeactivateUsersRequest(user_ids=user_ids, created_by_id=created_by_id, mark_channels_deleted=mark_channels_deleted, mark_messages_deleted=mark_messages_deleted).to_dict() + def deactivate_users( + self, + user_ids: List[str], + created_by_id: Optional[str] = None, + mark_channels_deleted: Optional[bool] = None, + mark_messages_deleted: Optional[bool] = None, + ) -> StreamResponse[DeactivateUsersResponse]: + json = DeactivateUsersRequest( + user_ids=user_ids, + created_by_id=created_by_id, + mark_channels_deleted=mark_channels_deleted, + mark_messages_deleted=mark_messages_deleted, + ).to_dict() return self.post("/api/v2/users/deactivate", DeactivateUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.delete_users") - def delete_users(self, user_ids: List[str], calls: Optional[str] = None, conversations: Optional[str] = None, files: Optional[bool] = None, messages: Optional[str] = None, new_call_owner_id: Optional[str] = None, new_channel_owner_id: Optional[str] = None, user: Optional[str] = None) -> StreamResponse[DeleteUsersResponse]: - json = DeleteUsersRequest(user_ids=user_ids, calls=calls, conversations=conversations, files=files, messages=messages, new_call_owner_id=new_call_owner_id, new_channel_owner_id=new_channel_owner_id, user=user).to_dict() + def delete_users( + self, + user_ids: List[str], + calls: Optional[str] = None, + conversations: Optional[str] = None, + files: Optional[bool] = None, + messages: Optional[str] = None, + new_call_owner_id: Optional[str] = None, + new_channel_owner_id: Optional[str] = None, + user: Optional[str] = None, + ) -> StreamResponse[DeleteUsersResponse]: + json = DeleteUsersRequest( + user_ids=user_ids, + calls=calls, + conversations=conversations, + files=files, + messages=messages, + new_call_owner_id=new_call_owner_id, + new_channel_owner_id=new_channel_owner_id, + user=user, + ).to_dict() return self.post("/api/v2/users/delete", DeleteUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.get_user_live_locations") - def get_user_live_locations(self, user_id: Optional[str] = None) -> StreamResponse[SharedLocationsResponse]: + def get_user_live_locations( + self, user_id: Optional[str] = None + ) -> StreamResponse[SharedLocationsResponse]: query_params = build_query_param(user_id=user_id) - return self.get("/api/v2/users/live_locations", SharedLocationsResponse, query_params=query_params) - + return self.get( + "/api/v2/users/live_locations", + SharedLocationsResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.common.update_live_location") - def update_live_location(self, message_id: str, end_at: Optional[datetime] = None, latitude: Optional[float] = None, longitude: Optional[float] = None, user_id: Optional[str] = None) -> StreamResponse[SharedLocationResponse]: + def update_live_location( + self, + message_id: str, + end_at: Optional[datetime] = None, + latitude: Optional[float] = None, + longitude: Optional[float] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[SharedLocationResponse]: query_params = build_query_param(user_id=user_id) - json = UpdateLiveLocationRequest(message_id=message_id, end_at=end_at, latitude=latitude, longitude=longitude).to_dict() - return self.put("/api/v2/users/live_locations", SharedLocationResponse, query_params=query_params, json=json) - + json = UpdateLiveLocationRequest( + message_id=message_id, end_at=end_at, latitude=latitude, longitude=longitude + ).to_dict() + return self.put( + "/api/v2/users/live_locations", + SharedLocationResponse, + query_params=query_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.reactivate_users") - def reactivate_users(self, user_ids: List[str], created_by_id: Optional[str] = None, restore_channels: Optional[bool] = None, restore_messages: Optional[bool] = None) -> StreamResponse[ReactivateUsersResponse]: - json = ReactivateUsersRequest(user_ids=user_ids, created_by_id=created_by_id, restore_channels=restore_channels, restore_messages=restore_messages).to_dict() + def reactivate_users( + self, + user_ids: List[str], + created_by_id: Optional[str] = None, + restore_channels: Optional[bool] = None, + restore_messages: Optional[bool] = None, + ) -> StreamResponse[ReactivateUsersResponse]: + json = ReactivateUsersRequest( + user_ids=user_ids, + created_by_id=created_by_id, + restore_channels=restore_channels, + restore_messages=restore_messages, + ).to_dict() return self.post("/api/v2/users/reactivate", ReactivateUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.restore_users") def restore_users(self, user_ids: List[str]) -> StreamResponse[Response]: json = RestoreUsersRequest(user_ids=user_ids).to_dict() return self.post("/api/v2/users/restore", Response, json=json) - + @telemetry.operation_name("getstream.api.common.unblock_users") - def unblock_users(self, blocked_user_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[UnblockUsersResponse]: - json = UnblockUsersRequest(blocked_user_id=blocked_user_id, user_id=user_id, user=user).to_dict() + def unblock_users( + self, + blocked_user_id: str, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UnblockUsersResponse]: + json = UnblockUsersRequest( + blocked_user_id=blocked_user_id, user_id=user_id, user=user + ).to_dict() return self.post("/api/v2/users/unblock", UnblockUsersResponse, json=json) - + @telemetry.operation_name("getstream.api.common.deactivate_user") - def deactivate_user(self, user_id: str, created_by_id: Optional[str] = None, mark_messages_deleted: Optional[bool] = None) -> StreamResponse[DeactivateUserResponse]: + def deactivate_user( + self, + user_id: str, + created_by_id: Optional[str] = None, + mark_messages_deleted: Optional[bool] = None, + ) -> StreamResponse[DeactivateUserResponse]: path_params = { - "user_id": user_id, + "user_id": user_id, } - json = DeactivateUserRequest(created_by_id=created_by_id, mark_messages_deleted=mark_messages_deleted).to_dict() - return self.post("/api/v2/users/{user_id}/deactivate", DeactivateUserResponse, path_params=path_params, json=json) - + json = DeactivateUserRequest( + created_by_id=created_by_id, mark_messages_deleted=mark_messages_deleted + ).to_dict() + return self.post( + "/api/v2/users/{user_id}/deactivate", + DeactivateUserResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.common.export_user") def export_user(self, user_id: str) -> StreamResponse[ExportUserResponse]: path_params = { - "user_id": user_id, + "user_id": user_id, } - return self.get("/api/v2/users/{user_id}/export", ExportUserResponse, path_params=path_params) - + return self.get( + "/api/v2/users/{user_id}/export", + ExportUserResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.common.reactivate_user") - def reactivate_user(self, user_id: str, created_by_id: Optional[str] = None, name: Optional[str] = None, restore_messages: Optional[bool] = None) -> StreamResponse[ReactivateUserResponse]: + def reactivate_user( + self, + user_id: str, + created_by_id: Optional[str] = None, + name: Optional[str] = None, + restore_messages: Optional[bool] = None, + ) -> StreamResponse[ReactivateUserResponse]: path_params = { - "user_id": user_id, + "user_id": user_id, } - json = ReactivateUserRequest(created_by_id=created_by_id, name=name, restore_messages=restore_messages).to_dict() - return self.post("/api/v2/users/{user_id}/reactivate", ReactivateUserResponse, path_params=path_params, json=json) - \ No newline at end of file + json = ReactivateUserRequest( + created_by_id=created_by_id, name=name, restore_messages=restore_messages + ).to_dict() + return self.post( + "/api/v2/users/{user_id}/reactivate", + ReactivateUserResponse, + path_params=path_params, + json=json, + ) diff --git a/getstream/feeds/feeds.py b/getstream/feeds/feeds.py index f9d0a64e..3ad3d7b5 100644 --- a/getstream/feeds/feeds.py +++ b/getstream/feeds/feeds.py @@ -4,7 +4,6 @@ class Feed: - def __init__(self, client, feed_group: str, feed_id: str, custom_data: Dict = None): self.id = feed_id self.feed_group = feed_group @@ -12,78 +11,261 @@ def __init__(self, client, feed_group: str, feed_id: str, custom_data: Dict = No self.custom_data = custom_data or {} def _sync_from_response(self, data): - if hasattr(data, 'feed') and isinstance(data.feed, FeedResponse): + if hasattr(data, "feed") and isinstance(data.feed, FeedResponse): self.custom_data = data.feed.custom - - def delete(self, hard_delete: Optional[bool] = None, purge_user_activities: Optional[bool] = None) -> StreamResponse[DeleteFeedResponse]: - response = self.client.delete_feed(feed_group_id=self.feed_group, feed_id=self.id, hard_delete=hard_delete, purge_user_activities=purge_user_activities) + def delete( + self, + hard_delete: Optional[bool] = None, + purge_user_activities: Optional[bool] = None, + ) -> StreamResponse[DeleteFeedResponse]: + response = self.client.delete_feed( + feed_group_id=self.feed_group, + feed_id=self.id, + hard_delete=hard_delete, + purge_user_activities=purge_user_activities, + ) self._sync_from_response(response.data) return response - def get_or_create(self, language: Optional[str] = None, translate_text: Optional[bool] = None, id_around: Optional[str] = None, limit: Optional[int] = None, next: Optional[str] = None, overwrite_interest_weights: Optional[bool] = None, prev: Optional[str] = None, user_id: Optional[str] = None, view: Optional[str] = None, watch: Optional[bool] = None, data: Optional[FeedInput] = None, enrichment_options: Optional[EnrichmentOptions] = None, external_ranking: Optional[Dict[str, object]] = None, filter: Optional[Dict[str, object]] = None, followers_pagination: Optional[PagerRequest] = None, following_pagination: Optional[PagerRequest] = None, friend_reactions_options: Optional[FriendReactionsOptions] = None, interest_weights: Optional[Dict[str, float]] = None, member_pagination: Optional[PagerRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[GetOrCreateFeedResponse]: - response = self.client.get_or_create_feed(feed_group_id=self.feed_group, feed_id=self.id, language=language, translate_text=translate_text, id_around=id_around, limit=limit, next=next, overwrite_interest_weights=overwrite_interest_weights, prev=prev, user_id=user_id, view=view, watch=watch, data=data, enrichment_options=enrichment_options, external_ranking=external_ranking, filter=filter, followers_pagination=followers_pagination, following_pagination=following_pagination, friend_reactions_options=friend_reactions_options, interest_weights=interest_weights, member_pagination=member_pagination, user=user) + def get_or_create( + self, + language: Optional[str] = None, + translate_text: Optional[bool] = None, + id_around: Optional[str] = None, + limit: Optional[int] = None, + next: Optional[str] = None, + overwrite_interest_weights: Optional[bool] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + view: Optional[str] = None, + watch: Optional[bool] = None, + data: Optional[FeedInput] = None, + enrichment_options: Optional[EnrichmentOptions] = None, + external_ranking: Optional[Dict[str, object]] = None, + filter: Optional[Dict[str, object]] = None, + followers_pagination: Optional[PagerRequest] = None, + following_pagination: Optional[PagerRequest] = None, + friend_reactions_options: Optional[FriendReactionsOptions] = None, + interest_weights: Optional[Dict[str, float]] = None, + member_pagination: Optional[PagerRequest] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[GetOrCreateFeedResponse]: + response = self.client.get_or_create_feed( + feed_group_id=self.feed_group, + feed_id=self.id, + language=language, + translate_text=translate_text, + id_around=id_around, + limit=limit, + next=next, + overwrite_interest_weights=overwrite_interest_weights, + prev=prev, + user_id=user_id, + view=view, + watch=watch, + data=data, + enrichment_options=enrichment_options, + external_ranking=external_ranking, + filter=filter, + followers_pagination=followers_pagination, + following_pagination=following_pagination, + friend_reactions_options=friend_reactions_options, + interest_weights=interest_weights, + member_pagination=member_pagination, + user=user, + ) self._sync_from_response(response.data) return response - def update(self, clear_location: Optional[bool] = None, created_by_id: Optional[str] = None, description: Optional[str] = None, enrich_own_fields: Optional[bool] = None, name: Optional[str] = None, filter_tags: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, location: Optional[Location] = None) -> StreamResponse[UpdateFeedResponse]: - response = self.client.update_feed(feed_group_id=self.feed_group, feed_id=self.id, clear_location=clear_location, created_by_id=created_by_id, description=description, enrich_own_fields=enrich_own_fields, name=name, filter_tags=filter_tags, custom=custom, location=location) + def update( + self, + clear_location: Optional[bool] = None, + created_by_id: Optional[str] = None, + description: Optional[str] = None, + enrich_own_fields: Optional[bool] = None, + name: Optional[str] = None, + filter_tags: Optional[List[str]] = None, + custom: Optional[Dict[str, object]] = None, + location: Optional[Location] = None, + ) -> StreamResponse[UpdateFeedResponse]: + response = self.client.update_feed( + feed_group_id=self.feed_group, + feed_id=self.id, + clear_location=clear_location, + created_by_id=created_by_id, + description=description, + enrich_own_fields=enrich_own_fields, + name=name, + filter_tags=filter_tags, + custom=custom, + location=location, + ) self._sync_from_response(response.data) return response - def mark_activity(self, mark_all_read: Optional[bool] = None, mark_all_seen: Optional[bool] = None, user_id: Optional[str] = None, mark_read: Optional[List[str]] = None, mark_seen: Optional[List[str]] = None, mark_watched: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[Response]: - response = self.client.mark_activity(feed_group_id=self.feed_group, feed_id=self.id, mark_all_read=mark_all_read, mark_all_seen=mark_all_seen, user_id=user_id, mark_read=mark_read, mark_seen=mark_seen, mark_watched=mark_watched, user=user) + def mark_activity( + self, + mark_all_read: Optional[bool] = None, + mark_all_seen: Optional[bool] = None, + user_id: Optional[str] = None, + mark_read: Optional[List[str]] = None, + mark_seen: Optional[List[str]] = None, + mark_watched: Optional[List[str]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[Response]: + response = self.client.mark_activity( + feed_group_id=self.feed_group, + feed_id=self.id, + mark_all_read=mark_all_read, + mark_all_seen=mark_all_seen, + user_id=user_id, + mark_read=mark_read, + mark_seen=mark_seen, + mark_watched=mark_watched, + user=user, + ) self._sync_from_response(response.data) return response - def unpin_activity(self, activity_id: str, enrich_own_fields: Optional[bool] = None, user_id: Optional[str] = None) -> StreamResponse[UnpinActivityResponse]: - response = self.client.unpin_activity(feed_group_id=self.feed_group, feed_id=self.id, activity_id=activity_id, enrich_own_fields=enrich_own_fields, user_id=user_id) + def unpin_activity( + self, + activity_id: str, + enrich_own_fields: Optional[bool] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[UnpinActivityResponse]: + response = self.client.unpin_activity( + feed_group_id=self.feed_group, + feed_id=self.id, + activity_id=activity_id, + enrich_own_fields=enrich_own_fields, + user_id=user_id, + ) self._sync_from_response(response.data) return response - def pin_activity(self, activity_id: str, enrich_own_fields: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[PinActivityResponse]: - response = self.client.pin_activity(feed_group_id=self.feed_group, feed_id=self.id, activity_id=activity_id, enrich_own_fields=enrich_own_fields, user_id=user_id, user=user) + def pin_activity( + self, + activity_id: str, + enrich_own_fields: Optional[bool] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[PinActivityResponse]: + response = self.client.pin_activity( + feed_group_id=self.feed_group, + feed_id=self.id, + activity_id=activity_id, + enrich_own_fields=enrich_own_fields, + user_id=user_id, + user=user, + ) self._sync_from_response(response.data) return response - def change_feed_visibility(self, visibility: str, pending_follows_action: Optional[str] = None) -> StreamResponse[ChangeFeedVisibilityResponse]: - response = self.client.change_feed_visibility(feed_group_id=self.feed_group, feed_id=self.id, visibility=visibility, pending_follows_action=pending_follows_action) + def change_feed_visibility( + self, visibility: str, pending_follows_action: Optional[str] = None + ) -> StreamResponse[ChangeFeedVisibilityResponse]: + response = self.client.change_feed_visibility( + feed_group_id=self.feed_group, + feed_id=self.id, + visibility=visibility, + pending_follows_action=pending_follows_action, + ) self._sync_from_response(response.data) return response def get_feed_counts(self) -> StreamResponse[GetFeedCountsResponse]: - response = self.client.get_feed_counts(feed_group_id=self.feed_group, feed_id=self.id) + response = self.client.get_feed_counts( + feed_group_id=self.feed_group, feed_id=self.id + ) self._sync_from_response(response.data) return response - def update_feed_members(self, operation: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, members: Optional[List[FeedMemberRequest]] = None) -> StreamResponse[UpdateFeedMembersResponse]: - response = self.client.update_feed_members(feed_group_id=self.feed_group, feed_id=self.id, operation=operation, limit=limit, next=next, prev=prev, members=members) + def update_feed_members( + self, + operation: str, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + members: Optional[List[FeedMemberRequest]] = None, + ) -> StreamResponse[UpdateFeedMembersResponse]: + response = self.client.update_feed_members( + feed_group_id=self.feed_group, + feed_id=self.id, + operation=operation, + limit=limit, + next=next, + prev=prev, + members=members, + ) self._sync_from_response(response.data) return response - def accept_feed_member_invite(self, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[AcceptFeedMemberInviteResponse]: - response = self.client.accept_feed_member_invite(feed_group_id=self.feed_group, feed_id=self.id, user_id=user_id, user=user) + def accept_feed_member_invite( + self, user_id: Optional[str] = None, user: Optional[UserRequest] = None + ) -> StreamResponse[AcceptFeedMemberInviteResponse]: + response = self.client.accept_feed_member_invite( + feed_group_id=self.feed_group, feed_id=self.id, user_id=user_id, user=user + ) self._sync_from_response(response.data) return response - def query_feed_members(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryFeedMembersResponse]: - response = self.client.query_feed_members(feed_group_id=self.feed_group, feed_id=self.id, limit=limit, next=next, prev=prev, sort=sort, filter=filter) + def query_feed_members( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryFeedMembersResponse]: + response = self.client.query_feed_members( + feed_group_id=self.feed_group, + feed_id=self.id, + limit=limit, + next=next, + prev=prev, + sort=sort, + filter=filter, + ) self._sync_from_response(response.data) return response - def reject_feed_member_invite(self, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[RejectFeedMemberInviteResponse]: - response = self.client.reject_feed_member_invite(feed_group_id=self.feed_group, feed_id=self.id, user_id=user_id, user=user) + def reject_feed_member_invite( + self, user_id: Optional[str] = None, user: Optional[UserRequest] = None + ) -> StreamResponse[RejectFeedMemberInviteResponse]: + response = self.client.reject_feed_member_invite( + feed_group_id=self.feed_group, feed_id=self.id, user_id=user_id, user=user + ) self._sync_from_response(response.data) return response - def query_pinned_activities(self, language: Optional[str] = None, translate_text: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryPinnedActivitiesResponse]: - response = self.client.query_pinned_activities(feed_group_id=self.feed_group, feed_id=self.id, language=language, translate_text=translate_text, enrich_own_fields=enrich_own_fields, limit=limit, next=next, prev=prev, sort=sort, filter=filter) + def query_pinned_activities( + self, + language: Optional[str] = None, + translate_text: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryPinnedActivitiesResponse]: + response = self.client.query_pinned_activities( + feed_group_id=self.feed_group, + feed_id=self.id, + language=language, + translate_text=translate_text, + enrich_own_fields=enrich_own_fields, + limit=limit, + next=next, + prev=prev, + sort=sort, + filter=filter, + ) self._sync_from_response(response.data) return response - - def get_feed_identifier(self): return self.feed_group + ":" + self.id - create = get_or_create \ No newline at end of file + create = get_or_create diff --git a/getstream/feeds/rest_client.py b/getstream/feeds/rest_client.py index 6fe1e410..97f8a127 100644 --- a/getstream/feeds/rest_client.py +++ b/getstream/feeds/rest_client.py @@ -1,4 +1,3 @@ - # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import BaseClient from getstream.common import telemetry @@ -8,8 +7,14 @@ class FeedsRestClient(BaseClient): - - def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): + def __init__( + self, + api_key: str, + base_url: str, + timeout: float, + token: str, + user_agent: str = None, + ): """ Initializes FeedsClient with BaseClient instance :param api_key: A string representing the client's API key @@ -26,721 +31,2420 @@ def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user user_agent=user_agent, ) - @telemetry.operation_name("getstream.api.feeds.add_activity") - def add_activity(self, type: str, feeds: List[str], copy_custom_to_notification: Optional[bool] = None, create_notification_activity: Optional[bool] = None, create_users: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, expires_at: Optional[str] = None, force_moderation: Optional[bool] = None, id: Optional[str] = None, parent_id: Optional[str] = None, poll_id: Optional[str] = None, restrict_replies: Optional[str] = None, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, text: Optional[str] = None, user_id: Optional[str] = None, visibility: Optional[str] = None, visibility_tag: Optional[str] = None, attachments: Optional[List[Attachment]] = None, collection_refs: Optional[List[str]] = None, collections: Optional[List[CollectionRequest]] = None, filter_tags: Optional[List[str]] = None, interest_tags: Optional[List[str]] = None, mentioned_user_ids: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, location: Optional[Location] = None, search_data: Optional[Dict[str, object]] = None) -> StreamResponse[AddActivityResponse]: - json = AddActivityRequest(type=type, feeds=feeds, copy_custom_to_notification=copy_custom_to_notification, create_notification_activity=create_notification_activity, create_users=create_users, enrich_own_fields=enrich_own_fields, expires_at=expires_at, force_moderation=force_moderation, id=id, parent_id=parent_id, poll_id=poll_id, restrict_replies=restrict_replies, skip_enrich_url=skip_enrich_url, skip_push=skip_push, text=text, user_id=user_id, visibility=visibility, visibility_tag=visibility_tag, attachments=attachments, collection_refs=collection_refs, collections=collections, filter_tags=filter_tags, interest_tags=interest_tags, mentioned_user_ids=mentioned_user_ids, custom=custom, location=location, search_data=search_data).to_dict() + def add_activity( + self, + type: str, + feeds: List[str], + copy_custom_to_notification: Optional[bool] = None, + create_notification_activity: Optional[bool] = None, + create_users: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + expires_at: Optional[str] = None, + force_moderation: Optional[bool] = None, + id: Optional[str] = None, + parent_id: Optional[str] = None, + poll_id: Optional[str] = None, + restrict_replies: Optional[str] = None, + skip_enrich_url: Optional[bool] = None, + skip_push: Optional[bool] = None, + text: Optional[str] = None, + user_id: Optional[str] = None, + visibility: Optional[str] = None, + visibility_tag: Optional[str] = None, + attachments: Optional[List[Attachment]] = None, + collection_refs: Optional[List[str]] = None, + collections: Optional[List[CollectionRequest]] = None, + filter_tags: Optional[List[str]] = None, + interest_tags: Optional[List[str]] = None, + mentioned_user_ids: Optional[List[str]] = None, + custom: Optional[Dict[str, object]] = None, + location: Optional[Location] = None, + search_data: Optional[Dict[str, object]] = None, + ) -> StreamResponse[AddActivityResponse]: + json = AddActivityRequest( + type=type, + feeds=feeds, + copy_custom_to_notification=copy_custom_to_notification, + create_notification_activity=create_notification_activity, + create_users=create_users, + enrich_own_fields=enrich_own_fields, + expires_at=expires_at, + force_moderation=force_moderation, + id=id, + parent_id=parent_id, + poll_id=poll_id, + restrict_replies=restrict_replies, + skip_enrich_url=skip_enrich_url, + skip_push=skip_push, + text=text, + user_id=user_id, + visibility=visibility, + visibility_tag=visibility_tag, + attachments=attachments, + collection_refs=collection_refs, + collections=collections, + filter_tags=filter_tags, + interest_tags=interest_tags, + mentioned_user_ids=mentioned_user_ids, + custom=custom, + location=location, + search_data=search_data, + ).to_dict() return self.post("/api/v2/feeds/activities", AddActivityResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.upsert_activities") - def upsert_activities(self, activities: List[ActivityRequest], create_users: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, force_moderation: Optional[bool] = None) -> StreamResponse[UpsertActivitiesResponse]: - json = UpsertActivitiesRequest(activities=activities, create_users=create_users, enrich_own_fields=enrich_own_fields, force_moderation=force_moderation).to_dict() - return self.post("/api/v2/feeds/activities/batch", UpsertActivitiesResponse, json=json) - + def upsert_activities( + self, + activities: List[ActivityRequest], + create_users: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + force_moderation: Optional[bool] = None, + ) -> StreamResponse[UpsertActivitiesResponse]: + json = UpsertActivitiesRequest( + activities=activities, + create_users=create_users, + enrich_own_fields=enrich_own_fields, + force_moderation=force_moderation, + ).to_dict() + return self.post( + "/api/v2/feeds/activities/batch", UpsertActivitiesResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.update_activities_partial_batch") - def update_activities_partial_batch(self, changes: List[UpdateActivityPartialChangeRequest], force_moderation: Optional[bool] = None) -> StreamResponse[UpdateActivitiesPartialBatchResponse]: - json = UpdateActivitiesPartialBatchRequest(changes=changes, force_moderation=force_moderation).to_dict() - return self.patch("/api/v2/feeds/activities/batch/partial", UpdateActivitiesPartialBatchResponse, json=json) - + def update_activities_partial_batch( + self, + changes: List[UpdateActivityPartialChangeRequest], + force_moderation: Optional[bool] = None, + ) -> StreamResponse[UpdateActivitiesPartialBatchResponse]: + json = UpdateActivitiesPartialBatchRequest( + changes=changes, force_moderation=force_moderation + ).to_dict() + return self.patch( + "/api/v2/feeds/activities/batch/partial", + UpdateActivitiesPartialBatchResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.delete_activities") - def delete_activities(self, ids: List[str], delete_notification_activity: Optional[bool] = None, hard_delete: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[DeleteActivitiesResponse]: - json = DeleteActivitiesRequest(ids=ids, delete_notification_activity=delete_notification_activity, hard_delete=hard_delete, user_id=user_id, user=user).to_dict() - return self.post("/api/v2/feeds/activities/delete", DeleteActivitiesResponse, json=json) - + def delete_activities( + self, + ids: List[str], + delete_notification_activity: Optional[bool] = None, + hard_delete: Optional[bool] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[DeleteActivitiesResponse]: + json = DeleteActivitiesRequest( + ids=ids, + delete_notification_activity=delete_notification_activity, + hard_delete=hard_delete, + user_id=user_id, + user=user, + ).to_dict() + return self.post( + "/api/v2/feeds/activities/delete", DeleteActivitiesResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.track_activity_metrics") - def track_activity_metrics(self, events: List[TrackActivityMetricsEvent], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[TrackActivityMetricsResponse]: - json = TrackActivityMetricsRequest(events=events, user_id=user_id, user=user).to_dict() - return self.post("/api/v2/feeds/activities/metrics/track", TrackActivityMetricsResponse, json=json) - + def track_activity_metrics( + self, + events: List[TrackActivityMetricsEvent], + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[TrackActivityMetricsResponse]: + json = TrackActivityMetricsRequest( + events=events, user_id=user_id, user=user + ).to_dict() + return self.post( + "/api/v2/feeds/activities/metrics/track", + TrackActivityMetricsResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.query_activities") - def query_activities(self, language: Optional[str] = None, translate_text: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, include_expired_activities: Optional[bool] = None, include_private_activities: Optional[bool] = None, include_soft_deleted_activities: Optional[bool] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryActivitiesResponse]: - query_params = build_query_param(language=language, translate_text=translate_text) - json = QueryActivitiesRequest(enrich_own_fields=enrich_own_fields, include_expired_activities=include_expired_activities, include_private_activities=include_private_activities, include_soft_deleted_activities=include_soft_deleted_activities, limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return self.post("/api/v2/feeds/activities/query", QueryActivitiesResponse, query_params=query_params, json=json) - + def query_activities( + self, + language: Optional[str] = None, + translate_text: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + include_expired_activities: Optional[bool] = None, + include_private_activities: Optional[bool] = None, + include_soft_deleted_activities: Optional[bool] = None, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryActivitiesResponse]: + query_params = build_query_param( + language=language, translate_text=translate_text + ) + json = QueryActivitiesRequest( + enrich_own_fields=enrich_own_fields, + include_expired_activities=include_expired_activities, + include_private_activities=include_private_activities, + include_soft_deleted_activities=include_soft_deleted_activities, + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return self.post( + "/api/v2/feeds/activities/query", + QueryActivitiesResponse, + query_params=query_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.batch_query_activity_reactions") - def batch_query_activity_reactions(self, activity_ids: List[str], limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[BatchQueryActivityReactionsResponse]: - json = BatchQueryActivityReactionsRequest(activity_ids=activity_ids, limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return self.post("/api/v2/feeds/activities/reactions/query", BatchQueryActivityReactionsResponse, json=json) - + def batch_query_activity_reactions( + self, + activity_ids: List[str], + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[BatchQueryActivityReactionsResponse]: + json = BatchQueryActivityReactionsRequest( + activity_ids=activity_ids, + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return self.post( + "/api/v2/feeds/activities/reactions/query", + BatchQueryActivityReactionsResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.delete_bookmark") - def delete_bookmark(self, activity_id: str, folder_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[DeleteBookmarkResponse]: + def delete_bookmark( + self, + activity_id: str, + folder_id: Optional[str] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[DeleteBookmarkResponse]: query_params = build_query_param(folder_id=folder_id, user_id=user_id) path_params = { - "activity_id": activity_id, + "activity_id": activity_id, } - return self.delete("/api/v2/feeds/activities/{activity_id}/bookmarks", DeleteBookmarkResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/feeds/activities/{activity_id}/bookmarks", + DeleteBookmarkResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.update_bookmark") - def update_bookmark(self, activity_id: str, folder_id: Optional[str] = None, new_folder_id: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, new_folder: Optional[AddFolderRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateBookmarkResponse]: + def update_bookmark( + self, + activity_id: str, + folder_id: Optional[str] = None, + new_folder_id: Optional[str] = None, + user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + new_folder: Optional[AddFolderRequest] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateBookmarkResponse]: path_params = { - "activity_id": activity_id, + "activity_id": activity_id, } - json = UpdateBookmarkRequest(folder_id=folder_id, new_folder_id=new_folder_id, user_id=user_id, custom=custom, new_folder=new_folder, user=user).to_dict() - return self.patch("/api/v2/feeds/activities/{activity_id}/bookmarks", UpdateBookmarkResponse, path_params=path_params, json=json) - + json = UpdateBookmarkRequest( + folder_id=folder_id, + new_folder_id=new_folder_id, + user_id=user_id, + custom=custom, + new_folder=new_folder, + user=user, + ).to_dict() + return self.patch( + "/api/v2/feeds/activities/{activity_id}/bookmarks", + UpdateBookmarkResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.add_bookmark") - def add_bookmark(self, activity_id: str, folder_id: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, new_folder: Optional[AddFolderRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[AddBookmarkResponse]: + def add_bookmark( + self, + activity_id: str, + folder_id: Optional[str] = None, + user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + new_folder: Optional[AddFolderRequest] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[AddBookmarkResponse]: path_params = { - "activity_id": activity_id, + "activity_id": activity_id, } - json = AddBookmarkRequest(folder_id=folder_id, user_id=user_id, custom=custom, new_folder=new_folder, user=user).to_dict() - return self.post("/api/v2/feeds/activities/{activity_id}/bookmarks", AddBookmarkResponse, path_params=path_params, json=json) - + json = AddBookmarkRequest( + folder_id=folder_id, + user_id=user_id, + custom=custom, + new_folder=new_folder, + user=user, + ).to_dict() + return self.post( + "/api/v2/feeds/activities/{activity_id}/bookmarks", + AddBookmarkResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.activity_feedback") - def activity_feedback(self, activity_id: str, hide: Optional[bool] = None, show_less: Optional[bool] = None, show_more: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[ActivityFeedbackResponse]: + def activity_feedback( + self, + activity_id: str, + hide: Optional[bool] = None, + show_less: Optional[bool] = None, + show_more: Optional[bool] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[ActivityFeedbackResponse]: path_params = { - "activity_id": activity_id, + "activity_id": activity_id, } - json = ActivityFeedbackRequest(hide=hide, show_less=show_less, show_more=show_more, user_id=user_id, user=user).to_dict() - return self.post("/api/v2/feeds/activities/{activity_id}/feedback", ActivityFeedbackResponse, path_params=path_params, json=json) - + json = ActivityFeedbackRequest( + hide=hide, + show_less=show_less, + show_more=show_more, + user_id=user_id, + user=user, + ).to_dict() + return self.post( + "/api/v2/feeds/activities/{activity_id}/feedback", + ActivityFeedbackResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.cast_poll_vote") - def cast_poll_vote(self, activity_id: str, poll_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None, vote: Optional[VoteData] = None) -> StreamResponse[PollVoteResponse]: + def cast_poll_vote( + self, + activity_id: str, + poll_id: str, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + vote: Optional[VoteData] = None, + ) -> StreamResponse[PollVoteResponse]: path_params = { - "activity_id": activity_id, "poll_id": poll_id, + "activity_id": activity_id, + "poll_id": poll_id, } json = CastPollVoteRequest(user_id=user_id, user=user, vote=vote).to_dict() - return self.post("/api/v2/feeds/activities/{activity_id}/polls/{poll_id}/vote", PollVoteResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/feeds/activities/{activity_id}/polls/{poll_id}/vote", + PollVoteResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.delete_poll_vote") - def delete_poll_vote(self, activity_id: str, poll_id: str, vote_id: str, user_id: Optional[str] = None) -> StreamResponse[PollVoteResponse]: + def delete_poll_vote( + self, + activity_id: str, + poll_id: str, + vote_id: str, + user_id: Optional[str] = None, + ) -> StreamResponse[PollVoteResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "activity_id": activity_id, "poll_id": poll_id, "vote_id": vote_id, + "activity_id": activity_id, + "poll_id": poll_id, + "vote_id": vote_id, } - return self.delete("/api/v2/feeds/activities/{activity_id}/polls/{poll_id}/vote/{vote_id}", PollVoteResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/feeds/activities/{activity_id}/polls/{poll_id}/vote/{vote_id}", + PollVoteResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.add_activity_reaction") - def add_activity_reaction(self, activity_id: str, type: str, copy_custom_to_notification: Optional[bool] = None, create_notification_activity: Optional[bool] = None, create_users: Optional[bool] = None, enforce_unique: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, target_feeds: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[AddReactionResponse]: + def add_activity_reaction( + self, + activity_id: str, + type: str, + copy_custom_to_notification: Optional[bool] = None, + create_notification_activity: Optional[bool] = None, + create_users: Optional[bool] = None, + enforce_unique: Optional[bool] = None, + skip_push: Optional[bool] = None, + user_id: Optional[str] = None, + target_feeds: Optional[List[str]] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[AddReactionResponse]: path_params = { - "activity_id": activity_id, + "activity_id": activity_id, } - json = AddReactionRequest(type=type, copy_custom_to_notification=copy_custom_to_notification, create_notification_activity=create_notification_activity, create_users=create_users, enforce_unique=enforce_unique, skip_push=skip_push, user_id=user_id, target_feeds=target_feeds, custom=custom, user=user).to_dict() - return self.post("/api/v2/feeds/activities/{activity_id}/reactions", AddReactionResponse, path_params=path_params, json=json) - + json = AddReactionRequest( + type=type, + copy_custom_to_notification=copy_custom_to_notification, + create_notification_activity=create_notification_activity, + create_users=create_users, + enforce_unique=enforce_unique, + skip_push=skip_push, + user_id=user_id, + target_feeds=target_feeds, + custom=custom, + user=user, + ).to_dict() + return self.post( + "/api/v2/feeds/activities/{activity_id}/reactions", + AddReactionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.query_activity_reactions") - def query_activity_reactions(self, activity_id: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryActivityReactionsResponse]: + def query_activity_reactions( + self, + activity_id: str, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryActivityReactionsResponse]: path_params = { - "activity_id": activity_id, + "activity_id": activity_id, } - json = QueryActivityReactionsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() - return self.post("/api/v2/feeds/activities/{activity_id}/reactions/query", QueryActivityReactionsResponse, path_params=path_params, json=json) - + json = QueryActivityReactionsRequest( + limit=limit, next=next, prev=prev, sort=sort, filter=filter + ).to_dict() + return self.post( + "/api/v2/feeds/activities/{activity_id}/reactions/query", + QueryActivityReactionsResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.delete_activity_reaction") - def delete_activity_reaction(self, activity_id: str, type: str, delete_notification_activity: Optional[bool] = None, user_id: Optional[str] = None) -> StreamResponse[DeleteActivityReactionResponse]: - query_params = build_query_param(delete_notification_activity=delete_notification_activity, user_id=user_id) + def delete_activity_reaction( + self, + activity_id: str, + type: str, + delete_notification_activity: Optional[bool] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[DeleteActivityReactionResponse]: + query_params = build_query_param( + delete_notification_activity=delete_notification_activity, user_id=user_id + ) path_params = { - "activity_id": activity_id, "type": type, + "activity_id": activity_id, + "type": type, } - return self.delete("/api/v2/feeds/activities/{activity_id}/reactions/{type}", DeleteActivityReactionResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/feeds/activities/{activity_id}/reactions/{type}", + DeleteActivityReactionResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.query_activity_shares") - def query_activity_shares(self, activity_id: str, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None) -> StreamResponse[QueryActivitySharesResponse]: + def query_activity_shares( + self, + activity_id: str, + limit: Optional[int] = None, + prev: Optional[str] = None, + next: Optional[str] = None, + ) -> StreamResponse[QueryActivitySharesResponse]: query_params = build_query_param(limit=limit, prev=prev, next=next) path_params = { - "activity_id": activity_id, + "activity_id": activity_id, } - return self.get("/api/v2/feeds/activities/{activity_id}/shares", QueryActivitySharesResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/feeds/activities/{activity_id}/shares", + QueryActivitySharesResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.delete_activity") - def delete_activity(self, id: str, hard_delete: Optional[bool] = None, delete_notification_activity: Optional[bool] = None) -> StreamResponse[DeleteActivityResponse]: - query_params = build_query_param(hard_delete=hard_delete, delete_notification_activity=delete_notification_activity) + def delete_activity( + self, + id: str, + hard_delete: Optional[bool] = None, + delete_notification_activity: Optional[bool] = None, + ) -> StreamResponse[DeleteActivityResponse]: + query_params = build_query_param( + hard_delete=hard_delete, + delete_notification_activity=delete_notification_activity, + ) path_params = { - "id": id, + "id": id, } - return self.delete("/api/v2/feeds/activities/{id}", DeleteActivityResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/feeds/activities/{id}", + DeleteActivityResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.get_activity") - def get_activity(self, id: str, comment_sort: Optional[str] = None, comment_limit: Optional[int] = None, user_id: Optional[str] = None, language: Optional[str] = None, translate_text: Optional[bool] = None) -> StreamResponse[GetActivityResponse]: - query_params = build_query_param(comment_sort=comment_sort, comment_limit=comment_limit, user_id=user_id, language=language, translate_text=translate_text) + def get_activity( + self, + id: str, + comment_sort: Optional[str] = None, + comment_limit: Optional[int] = None, + user_id: Optional[str] = None, + language: Optional[str] = None, + translate_text: Optional[bool] = None, + ) -> StreamResponse[GetActivityResponse]: + query_params = build_query_param( + comment_sort=comment_sort, + comment_limit=comment_limit, + user_id=user_id, + language=language, + translate_text=translate_text, + ) path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/feeds/activities/{id}", GetActivityResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/feeds/activities/{id}", + GetActivityResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.update_activity_partial") - def update_activity_partial(self, id: str, copy_custom_to_notification: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, force_moderation: Optional[bool] = None, handle_mention_notifications: Optional[bool] = None, run_activity_processors: Optional[bool] = None, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateActivityPartialResponse]: + def update_activity_partial( + self, + id: str, + copy_custom_to_notification: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + force_moderation: Optional[bool] = None, + handle_mention_notifications: Optional[bool] = None, + run_activity_processors: Optional[bool] = None, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateActivityPartialResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateActivityPartialRequest(copy_custom_to_notification=copy_custom_to_notification, enrich_own_fields=enrich_own_fields, force_moderation=force_moderation, handle_mention_notifications=handle_mention_notifications, run_activity_processors=run_activity_processors, user_id=user_id, unset=unset, set=set, user=user).to_dict() - return self.patch("/api/v2/feeds/activities/{id}", UpdateActivityPartialResponse, path_params=path_params, json=json) - + json = UpdateActivityPartialRequest( + copy_custom_to_notification=copy_custom_to_notification, + enrich_own_fields=enrich_own_fields, + force_moderation=force_moderation, + handle_mention_notifications=handle_mention_notifications, + run_activity_processors=run_activity_processors, + user_id=user_id, + unset=unset, + set=set, + user=user, + ).to_dict() + return self.patch( + "/api/v2/feeds/activities/{id}", + UpdateActivityPartialResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.update_activity") - def update_activity(self, id: str, copy_custom_to_notification: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, expires_at: Optional[datetime] = None, force_moderation: Optional[bool] = None, handle_mention_notifications: Optional[bool] = None, poll_id: Optional[str] = None, restrict_replies: Optional[str] = None, run_activity_processors: Optional[bool] = None, skip_enrich_url: Optional[bool] = None, text: Optional[str] = None, user_id: Optional[str] = None, visibility: Optional[str] = None, visibility_tag: Optional[str] = None, attachments: Optional[List[Attachment]] = None, collection_refs: Optional[List[str]] = None, feeds: Optional[List[str]] = None, filter_tags: Optional[List[str]] = None, interest_tags: Optional[List[str]] = None, mentioned_user_ids: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, location: Optional[Location] = None, search_data: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateActivityResponse]: + def update_activity( + self, + id: str, + copy_custom_to_notification: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + expires_at: Optional[datetime] = None, + force_moderation: Optional[bool] = None, + handle_mention_notifications: Optional[bool] = None, + poll_id: Optional[str] = None, + restrict_replies: Optional[str] = None, + run_activity_processors: Optional[bool] = None, + skip_enrich_url: Optional[bool] = None, + text: Optional[str] = None, + user_id: Optional[str] = None, + visibility: Optional[str] = None, + visibility_tag: Optional[str] = None, + attachments: Optional[List[Attachment]] = None, + collection_refs: Optional[List[str]] = None, + feeds: Optional[List[str]] = None, + filter_tags: Optional[List[str]] = None, + interest_tags: Optional[List[str]] = None, + mentioned_user_ids: Optional[List[str]] = None, + custom: Optional[Dict[str, object]] = None, + location: Optional[Location] = None, + search_data: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateActivityResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateActivityRequest(copy_custom_to_notification=copy_custom_to_notification, enrich_own_fields=enrich_own_fields, expires_at=expires_at, force_moderation=force_moderation, handle_mention_notifications=handle_mention_notifications, poll_id=poll_id, restrict_replies=restrict_replies, run_activity_processors=run_activity_processors, skip_enrich_url=skip_enrich_url, text=text, user_id=user_id, visibility=visibility, visibility_tag=visibility_tag, attachments=attachments, collection_refs=collection_refs, feeds=feeds, filter_tags=filter_tags, interest_tags=interest_tags, mentioned_user_ids=mentioned_user_ids, custom=custom, location=location, search_data=search_data, user=user).to_dict() - return self.put("/api/v2/feeds/activities/{id}", UpdateActivityResponse, path_params=path_params, json=json) - + json = UpdateActivityRequest( + copy_custom_to_notification=copy_custom_to_notification, + enrich_own_fields=enrich_own_fields, + expires_at=expires_at, + force_moderation=force_moderation, + handle_mention_notifications=handle_mention_notifications, + poll_id=poll_id, + restrict_replies=restrict_replies, + run_activity_processors=run_activity_processors, + skip_enrich_url=skip_enrich_url, + text=text, + user_id=user_id, + visibility=visibility, + visibility_tag=visibility_tag, + attachments=attachments, + collection_refs=collection_refs, + feeds=feeds, + filter_tags=filter_tags, + interest_tags=interest_tags, + mentioned_user_ids=mentioned_user_ids, + custom=custom, + location=location, + search_data=search_data, + user=user, + ).to_dict() + return self.put( + "/api/v2/feeds/activities/{id}", + UpdateActivityResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.restore_activity") - def restore_activity(self, id: str, enrich_own_fields: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[RestoreActivityResponse]: + def restore_activity( + self, + id: str, + enrich_own_fields: Optional[bool] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[RestoreActivityResponse]: query_params = build_query_param(enrich_own_fields=enrich_own_fields) path_params = { - "id": id, + "id": id, } json = RestoreActivityRequest(user_id=user_id, user=user).to_dict() - return self.post("/api/v2/feeds/activities/{id}/restore", RestoreActivityResponse, query_params=query_params, path_params=path_params, json=json) - + return self.post( + "/api/v2/feeds/activities/{id}/restore", + RestoreActivityResponse, + query_params=query_params, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.translate_activity") - def translate_activity(self, id: str, language: str) -> StreamResponse[TranslateActivityResponse]: + def translate_activity( + self, id: str, language: str + ) -> StreamResponse[TranslateActivityResponse]: path_params = { - "id": id, + "id": id, } json = TranslateActivityRequest(language=language).to_dict() - return self.post("/api/v2/feeds/activities/{id}/translate", TranslateActivityResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/feeds/activities/{id}/translate", + TranslateActivityResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.query_bookmark_folders") - def query_bookmark_folders(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryBookmarkFoldersResponse]: - json = QueryBookmarkFoldersRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() - return self.post("/api/v2/feeds/bookmark_folders/query", QueryBookmarkFoldersResponse, json=json) - + def query_bookmark_folders( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryBookmarkFoldersResponse]: + json = QueryBookmarkFoldersRequest( + limit=limit, next=next, prev=prev, sort=sort, filter=filter + ).to_dict() + return self.post( + "/api/v2/feeds/bookmark_folders/query", + QueryBookmarkFoldersResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.delete_bookmark_folder") - def delete_bookmark_folder(self, folder_id: str) -> StreamResponse[DeleteBookmarkFolderResponse]: + def delete_bookmark_folder( + self, folder_id: str + ) -> StreamResponse[DeleteBookmarkFolderResponse]: path_params = { - "folder_id": folder_id, + "folder_id": folder_id, } - return self.delete("/api/v2/feeds/bookmark_folders/{folder_id}", DeleteBookmarkFolderResponse, path_params=path_params) - + return self.delete( + "/api/v2/feeds/bookmark_folders/{folder_id}", + DeleteBookmarkFolderResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.update_bookmark_folder") - def update_bookmark_folder(self, folder_id: str, name: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateBookmarkFolderResponse]: + def update_bookmark_folder( + self, + folder_id: str, + name: Optional[str] = None, + user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateBookmarkFolderResponse]: path_params = { - "folder_id": folder_id, + "folder_id": folder_id, } - json = UpdateBookmarkFolderRequest(name=name, user_id=user_id, custom=custom, user=user).to_dict() - return self.patch("/api/v2/feeds/bookmark_folders/{folder_id}", UpdateBookmarkFolderResponse, path_params=path_params, json=json) - + json = UpdateBookmarkFolderRequest( + name=name, user_id=user_id, custom=custom, user=user + ).to_dict() + return self.patch( + "/api/v2/feeds/bookmark_folders/{folder_id}", + UpdateBookmarkFolderResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.query_bookmarks") - def query_bookmarks(self, language: Optional[str] = None, translate_text: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryBookmarksResponse]: - query_params = build_query_param(language=language, translate_text=translate_text) - json = QueryBookmarksRequest(enrich_own_fields=enrich_own_fields, limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return self.post("/api/v2/feeds/bookmarks/query", QueryBookmarksResponse, query_params=query_params, json=json) - + def query_bookmarks( + self, + language: Optional[str] = None, + translate_text: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryBookmarksResponse]: + query_params = build_query_param( + language=language, translate_text=translate_text + ) + json = QueryBookmarksRequest( + enrich_own_fields=enrich_own_fields, + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return self.post( + "/api/v2/feeds/bookmarks/query", + QueryBookmarksResponse, + query_params=query_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.delete_collections") - def delete_collections(self, collection_refs: List[str]) -> StreamResponse[DeleteCollectionsResponse]: + def delete_collections( + self, collection_refs: List[str] + ) -> StreamResponse[DeleteCollectionsResponse]: query_params = build_query_param(collection_refs=collection_refs) - return self.delete("/api/v2/feeds/collections", DeleteCollectionsResponse, query_params=query_params) - + return self.delete( + "/api/v2/feeds/collections", + DeleteCollectionsResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.feeds.read_collections") - def read_collections(self, user_id: Optional[str] = None, collection_refs: Optional[List[str]] = None) -> StreamResponse[ReadCollectionsResponse]: - query_params = build_query_param(user_id=user_id, collection_refs=collection_refs) - return self.get("/api/v2/feeds/collections", ReadCollectionsResponse, query_params=query_params) - + def read_collections( + self, user_id: Optional[str] = None, collection_refs: Optional[List[str]] = None + ) -> StreamResponse[ReadCollectionsResponse]: + query_params = build_query_param( + user_id=user_id, collection_refs=collection_refs + ) + return self.get( + "/api/v2/feeds/collections", + ReadCollectionsResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.feeds.update_collections") - def update_collections(self, collections: List[UpdateCollectionRequest], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateCollectionsResponse]: - json = UpdateCollectionsRequest(collections=collections, user_id=user_id, user=user).to_dict() - return self.patch("/api/v2/feeds/collections", UpdateCollectionsResponse, json=json) - + def update_collections( + self, + collections: List[UpdateCollectionRequest], + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateCollectionsResponse]: + json = UpdateCollectionsRequest( + collections=collections, user_id=user_id, user=user + ).to_dict() + return self.patch( + "/api/v2/feeds/collections", UpdateCollectionsResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.create_collections") - def create_collections(self, collections: List[CollectionRequest], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[CreateCollectionsResponse]: - json = CreateCollectionsRequest(collections=collections, user_id=user_id, user=user).to_dict() - return self.post("/api/v2/feeds/collections", CreateCollectionsResponse, json=json) - + def create_collections( + self, + collections: List[CollectionRequest], + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[CreateCollectionsResponse]: + json = CreateCollectionsRequest( + collections=collections, user_id=user_id, user=user + ).to_dict() + return self.post( + "/api/v2/feeds/collections", CreateCollectionsResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.upsert_collections") - def upsert_collections(self, collections: List[CollectionRequest]) -> StreamResponse[UpsertCollectionsResponse]: + def upsert_collections( + self, collections: List[CollectionRequest] + ) -> StreamResponse[UpsertCollectionsResponse]: json = UpsertCollectionsRequest(collections=collections).to_dict() - return self.put("/api/v2/feeds/collections", UpsertCollectionsResponse, json=json) - + return self.put( + "/api/v2/feeds/collections", UpsertCollectionsResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.query_collections") - def query_collections(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryCollectionsResponse]: - json = QueryCollectionsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return self.post("/api/v2/feeds/collections/query", QueryCollectionsResponse, json=json) - + def query_collections( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryCollectionsResponse]: + json = QueryCollectionsRequest( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return self.post( + "/api/v2/feeds/collections/query", QueryCollectionsResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.get_comments") - def get_comments(self, object_id: str, object_type: str, depth: Optional[int] = None, sort: Optional[str] = None, replies_limit: Optional[int] = None, id_around: Optional[str] = None, language: Optional[str] = None, translate_text: Optional[bool] = None, user_id: Optional[str] = None, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None) -> StreamResponse[GetCommentsResponse]: - query_params = build_query_param(object_id=object_id, object_type=object_type, depth=depth, sort=sort, replies_limit=replies_limit, id_around=id_around, language=language, translate_text=translate_text, user_id=user_id, limit=limit, prev=prev, next=next) - return self.get("/api/v2/feeds/comments", GetCommentsResponse, query_params=query_params) - + def get_comments( + self, + object_id: str, + object_type: str, + depth: Optional[int] = None, + sort: Optional[str] = None, + replies_limit: Optional[int] = None, + id_around: Optional[str] = None, + language: Optional[str] = None, + translate_text: Optional[bool] = None, + user_id: Optional[str] = None, + limit: Optional[int] = None, + prev: Optional[str] = None, + next: Optional[str] = None, + ) -> StreamResponse[GetCommentsResponse]: + query_params = build_query_param( + object_id=object_id, + object_type=object_type, + depth=depth, + sort=sort, + replies_limit=replies_limit, + id_around=id_around, + language=language, + translate_text=translate_text, + user_id=user_id, + limit=limit, + prev=prev, + next=next, + ) + return self.get( + "/api/v2/feeds/comments", GetCommentsResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.feeds.add_comment") - def add_comment(self, comment: Optional[str] = None, copy_custom_to_notification: Optional[bool] = None, create_notification_activity: Optional[bool] = None, force_moderation: Optional[bool] = None, id: Optional[str] = None, object_id: Optional[str] = None, object_type: Optional[str] = None, parent_id: Optional[str] = None, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, attachments: Optional[List[Attachment]] = None, mentioned_user_ids: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[AddCommentResponse]: - json = AddCommentRequest(comment=comment, copy_custom_to_notification=copy_custom_to_notification, create_notification_activity=create_notification_activity, force_moderation=force_moderation, id=id, object_id=object_id, object_type=object_type, parent_id=parent_id, skip_enrich_url=skip_enrich_url, skip_push=skip_push, user_id=user_id, attachments=attachments, mentioned_user_ids=mentioned_user_ids, custom=custom, user=user).to_dict() + def add_comment( + self, + comment: Optional[str] = None, + copy_custom_to_notification: Optional[bool] = None, + create_notification_activity: Optional[bool] = None, + force_moderation: Optional[bool] = None, + id: Optional[str] = None, + object_id: Optional[str] = None, + object_type: Optional[str] = None, + parent_id: Optional[str] = None, + skip_enrich_url: Optional[bool] = None, + skip_push: Optional[bool] = None, + user_id: Optional[str] = None, + attachments: Optional[List[Attachment]] = None, + mentioned_user_ids: Optional[List[str]] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[AddCommentResponse]: + json = AddCommentRequest( + comment=comment, + copy_custom_to_notification=copy_custom_to_notification, + create_notification_activity=create_notification_activity, + force_moderation=force_moderation, + id=id, + object_id=object_id, + object_type=object_type, + parent_id=parent_id, + skip_enrich_url=skip_enrich_url, + skip_push=skip_push, + user_id=user_id, + attachments=attachments, + mentioned_user_ids=mentioned_user_ids, + custom=custom, + user=user, + ).to_dict() return self.post("/api/v2/feeds/comments", AddCommentResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.add_comments_batch") - def add_comments_batch(self, comments: List[AddCommentRequest]) -> StreamResponse[AddCommentsBatchResponse]: + def add_comments_batch( + self, comments: List[AddCommentRequest] + ) -> StreamResponse[AddCommentsBatchResponse]: json = AddCommentsBatchRequest(comments=comments).to_dict() - return self.post("/api/v2/feeds/comments/batch", AddCommentsBatchResponse, json=json) - + return self.post( + "/api/v2/feeds/comments/batch", AddCommentsBatchResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.query_comments") - def query_comments(self, filter: Dict[str, object], id_around: Optional[str] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[str] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None, language: Optional[str] = None, translate_text: Optional[bool] = None) -> StreamResponse[QueryCommentsResponse]: - query_params = build_query_param(language=language, translate_text=translate_text) - json = QueryCommentsRequest(filter=filter, id_around=id_around, limit=limit, next=next, prev=prev, sort=sort, user_id=user_id, user=user).to_dict() - return self.post("/api/v2/feeds/comments/query", QueryCommentsResponse, query_params=query_params, json=json) - + def query_comments( + self, + filter: Dict[str, object], + id_around: Optional[str] = None, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[str] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + language: Optional[str] = None, + translate_text: Optional[bool] = None, + ) -> StreamResponse[QueryCommentsResponse]: + query_params = build_query_param( + language=language, translate_text=translate_text + ) + json = QueryCommentsRequest( + filter=filter, + id_around=id_around, + limit=limit, + next=next, + prev=prev, + sort=sort, + user_id=user_id, + user=user, + ).to_dict() + return self.post( + "/api/v2/feeds/comments/query", + QueryCommentsResponse, + query_params=query_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.batch_query_comment_reactions") - def batch_query_comment_reactions(self, comment_ids: List[str], limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[BatchQueryCommentReactionsResponse]: - json = BatchQueryCommentReactionsRequest(comment_ids=comment_ids, limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return self.post("/api/v2/feeds/comments/reactions/query", BatchQueryCommentReactionsResponse, json=json) - + def batch_query_comment_reactions( + self, + comment_ids: List[str], + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[BatchQueryCommentReactionsResponse]: + json = BatchQueryCommentReactionsRequest( + comment_ids=comment_ids, + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return self.post( + "/api/v2/feeds/comments/reactions/query", + BatchQueryCommentReactionsResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.delete_comment_bookmark") - def delete_comment_bookmark(self, comment_id: str, folder_id: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[DeleteCommentBookmarkResponse]: + def delete_comment_bookmark( + self, + comment_id: str, + folder_id: Optional[str] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[DeleteCommentBookmarkResponse]: query_params = build_query_param(folder_id=folder_id, user_id=user_id) path_params = { - "comment_id": comment_id, + "comment_id": comment_id, } - return self.delete("/api/v2/feeds/comments/{comment_id}/bookmarks", DeleteCommentBookmarkResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/feeds/comments/{comment_id}/bookmarks", + DeleteCommentBookmarkResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.update_comment_bookmark") - def update_comment_bookmark(self, comment_id: str, folder_id: Optional[str] = None, new_folder_id: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, new_folder: Optional[AddFolderRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateCommentBookmarkResponse]: + def update_comment_bookmark( + self, + comment_id: str, + folder_id: Optional[str] = None, + new_folder_id: Optional[str] = None, + user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + new_folder: Optional[AddFolderRequest] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateCommentBookmarkResponse]: path_params = { - "comment_id": comment_id, + "comment_id": comment_id, } - json = UpdateCommentBookmarkRequest(folder_id=folder_id, new_folder_id=new_folder_id, user_id=user_id, custom=custom, new_folder=new_folder, user=user).to_dict() - return self.patch("/api/v2/feeds/comments/{comment_id}/bookmarks", UpdateCommentBookmarkResponse, path_params=path_params, json=json) - + json = UpdateCommentBookmarkRequest( + folder_id=folder_id, + new_folder_id=new_folder_id, + user_id=user_id, + custom=custom, + new_folder=new_folder, + user=user, + ).to_dict() + return self.patch( + "/api/v2/feeds/comments/{comment_id}/bookmarks", + UpdateCommentBookmarkResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.add_comment_bookmark") - def add_comment_bookmark(self, comment_id: str, folder_id: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, new_folder: Optional[AddFolderRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[AddCommentBookmarkResponse]: + def add_comment_bookmark( + self, + comment_id: str, + folder_id: Optional[str] = None, + user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + new_folder: Optional[AddFolderRequest] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[AddCommentBookmarkResponse]: path_params = { - "comment_id": comment_id, + "comment_id": comment_id, } - json = AddCommentBookmarkRequest(folder_id=folder_id, user_id=user_id, custom=custom, new_folder=new_folder, user=user).to_dict() - return self.post("/api/v2/feeds/comments/{comment_id}/bookmarks", AddCommentBookmarkResponse, path_params=path_params, json=json) - + json = AddCommentBookmarkRequest( + folder_id=folder_id, + user_id=user_id, + custom=custom, + new_folder=new_folder, + user=user, + ).to_dict() + return self.post( + "/api/v2/feeds/comments/{comment_id}/bookmarks", + AddCommentBookmarkResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.delete_comment") - def delete_comment(self, id: str, hard_delete: Optional[bool] = None, delete_notification_activity: Optional[bool] = None) -> StreamResponse[DeleteCommentResponse]: - query_params = build_query_param(hard_delete=hard_delete, delete_notification_activity=delete_notification_activity) + def delete_comment( + self, + id: str, + hard_delete: Optional[bool] = None, + delete_notification_activity: Optional[bool] = None, + ) -> StreamResponse[DeleteCommentResponse]: + query_params = build_query_param( + hard_delete=hard_delete, + delete_notification_activity=delete_notification_activity, + ) path_params = { - "id": id, + "id": id, } - return self.delete("/api/v2/feeds/comments/{id}", DeleteCommentResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/feeds/comments/{id}", + DeleteCommentResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.get_comment") - def get_comment(self, id: str, user_id: Optional[str] = None, language: Optional[str] = None, translate_text: Optional[bool] = None) -> StreamResponse[GetCommentResponse]: - query_params = build_query_param(user_id=user_id, language=language, translate_text=translate_text) + def get_comment( + self, + id: str, + user_id: Optional[str] = None, + language: Optional[str] = None, + translate_text: Optional[bool] = None, + ) -> StreamResponse[GetCommentResponse]: + query_params = build_query_param( + user_id=user_id, language=language, translate_text=translate_text + ) path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/feeds/comments/{id}", GetCommentResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/feeds/comments/{id}", + GetCommentResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.update_comment") - def update_comment(self, id: str, comment: Optional[str] = None, copy_custom_to_notification: Optional[bool] = None, force_moderation: Optional[bool] = None, handle_mention_notifications: Optional[bool] = None, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, attachments: Optional[List[Attachment]] = None, mentioned_user_ids: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateCommentResponse]: + def update_comment( + self, + id: str, + comment: Optional[str] = None, + copy_custom_to_notification: Optional[bool] = None, + force_moderation: Optional[bool] = None, + handle_mention_notifications: Optional[bool] = None, + skip_enrich_url: Optional[bool] = None, + skip_push: Optional[bool] = None, + user_id: Optional[str] = None, + attachments: Optional[List[Attachment]] = None, + mentioned_user_ids: Optional[List[str]] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateCommentResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateCommentRequest(comment=comment, copy_custom_to_notification=copy_custom_to_notification, force_moderation=force_moderation, handle_mention_notifications=handle_mention_notifications, skip_enrich_url=skip_enrich_url, skip_push=skip_push, user_id=user_id, attachments=attachments, mentioned_user_ids=mentioned_user_ids, custom=custom, user=user).to_dict() - return self.patch("/api/v2/feeds/comments/{id}", UpdateCommentResponse, path_params=path_params, json=json) - + json = UpdateCommentRequest( + comment=comment, + copy_custom_to_notification=copy_custom_to_notification, + force_moderation=force_moderation, + handle_mention_notifications=handle_mention_notifications, + skip_enrich_url=skip_enrich_url, + skip_push=skip_push, + user_id=user_id, + attachments=attachments, + mentioned_user_ids=mentioned_user_ids, + custom=custom, + user=user, + ).to_dict() + return self.patch( + "/api/v2/feeds/comments/{id}", + UpdateCommentResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.update_comment_partial") - def update_comment_partial(self, id: str, copy_custom_to_notification: Optional[bool] = None, force_moderation: Optional[bool] = None, handle_mention_notifications: Optional[bool] = None, skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpdateCommentPartialResponse]: + def update_comment_partial( + self, + id: str, + copy_custom_to_notification: Optional[bool] = None, + force_moderation: Optional[bool] = None, + handle_mention_notifications: Optional[bool] = None, + skip_enrich_url: Optional[bool] = None, + skip_push: Optional[bool] = None, + user_id: Optional[str] = None, + unset: Optional[List[str]] = None, + set: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpdateCommentPartialResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateCommentPartialRequest(copy_custom_to_notification=copy_custom_to_notification, force_moderation=force_moderation, handle_mention_notifications=handle_mention_notifications, skip_enrich_url=skip_enrich_url, skip_push=skip_push, user_id=user_id, unset=unset, set=set, user=user).to_dict() - return self.post("/api/v2/feeds/comments/{id}/partial", UpdateCommentPartialResponse, path_params=path_params, json=json) - + json = UpdateCommentPartialRequest( + copy_custom_to_notification=copy_custom_to_notification, + force_moderation=force_moderation, + handle_mention_notifications=handle_mention_notifications, + skip_enrich_url=skip_enrich_url, + skip_push=skip_push, + user_id=user_id, + unset=unset, + set=set, + user=user, + ).to_dict() + return self.post( + "/api/v2/feeds/comments/{id}/partial", + UpdateCommentPartialResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.add_comment_reaction") - def add_comment_reaction(self, id: str, type: str, copy_custom_to_notification: Optional[bool] = None, create_notification_activity: Optional[bool] = None, enforce_unique: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, target_feeds: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[AddCommentReactionResponse]: + def add_comment_reaction( + self, + id: str, + type: str, + copy_custom_to_notification: Optional[bool] = None, + create_notification_activity: Optional[bool] = None, + enforce_unique: Optional[bool] = None, + skip_push: Optional[bool] = None, + user_id: Optional[str] = None, + target_feeds: Optional[List[str]] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[AddCommentReactionResponse]: path_params = { - "id": id, + "id": id, } - json = AddCommentReactionRequest(type=type, copy_custom_to_notification=copy_custom_to_notification, create_notification_activity=create_notification_activity, enforce_unique=enforce_unique, skip_push=skip_push, user_id=user_id, target_feeds=target_feeds, custom=custom, user=user).to_dict() - return self.post("/api/v2/feeds/comments/{id}/reactions", AddCommentReactionResponse, path_params=path_params, json=json) - + json = AddCommentReactionRequest( + type=type, + copy_custom_to_notification=copy_custom_to_notification, + create_notification_activity=create_notification_activity, + enforce_unique=enforce_unique, + skip_push=skip_push, + user_id=user_id, + target_feeds=target_feeds, + custom=custom, + user=user, + ).to_dict() + return self.post( + "/api/v2/feeds/comments/{id}/reactions", + AddCommentReactionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.query_comment_reactions") - def query_comment_reactions(self, id: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCommentReactionsResponse]: + def query_comment_reactions( + self, + id: str, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCommentReactionsResponse]: path_params = { - "id": id, + "id": id, } - json = QueryCommentReactionsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() - return self.post("/api/v2/feeds/comments/{id}/reactions/query", QueryCommentReactionsResponse, path_params=path_params, json=json) - + json = QueryCommentReactionsRequest( + limit=limit, next=next, prev=prev, sort=sort, filter=filter + ).to_dict() + return self.post( + "/api/v2/feeds/comments/{id}/reactions/query", + QueryCommentReactionsResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.delete_comment_reaction") - def delete_comment_reaction(self, id: str, type: str, delete_notification_activity: Optional[bool] = None, user_id: Optional[str] = None) -> StreamResponse[DeleteCommentReactionResponse]: - query_params = build_query_param(delete_notification_activity=delete_notification_activity, user_id=user_id) + def delete_comment_reaction( + self, + id: str, + type: str, + delete_notification_activity: Optional[bool] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[DeleteCommentReactionResponse]: + query_params = build_query_param( + delete_notification_activity=delete_notification_activity, user_id=user_id + ) path_params = { - "id": id, "type": type, + "id": id, + "type": type, } - return self.delete("/api/v2/feeds/comments/{id}/reactions/{type}", DeleteCommentReactionResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/feeds/comments/{id}/reactions/{type}", + DeleteCommentReactionResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.get_comment_replies") - def get_comment_replies(self, id: str, depth: Optional[int] = None, sort: Optional[str] = None, replies_limit: Optional[int] = None, id_around: Optional[str] = None, language: Optional[str] = None, translate_text: Optional[bool] = None, user_id: Optional[str] = None, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None) -> StreamResponse[GetCommentRepliesResponse]: - query_params = build_query_param(depth=depth, sort=sort, replies_limit=replies_limit, id_around=id_around, language=language, translate_text=translate_text, user_id=user_id, limit=limit, prev=prev, next=next) + def get_comment_replies( + self, + id: str, + depth: Optional[int] = None, + sort: Optional[str] = None, + replies_limit: Optional[int] = None, + id_around: Optional[str] = None, + language: Optional[str] = None, + translate_text: Optional[bool] = None, + user_id: Optional[str] = None, + limit: Optional[int] = None, + prev: Optional[str] = None, + next: Optional[str] = None, + ) -> StreamResponse[GetCommentRepliesResponse]: + query_params = build_query_param( + depth=depth, + sort=sort, + replies_limit=replies_limit, + id_around=id_around, + language=language, + translate_text=translate_text, + user_id=user_id, + limit=limit, + prev=prev, + next=next, + ) path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/feeds/comments/{id}/replies", GetCommentRepliesResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/feeds/comments/{id}/replies", + GetCommentRepliesResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.restore_comment") - def restore_comment(self, id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[RestoreCommentResponse]: + def restore_comment( + self, id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None + ) -> StreamResponse[RestoreCommentResponse]: path_params = { - "id": id, + "id": id, } json = RestoreCommentRequest(user_id=user_id, user=user).to_dict() - return self.post("/api/v2/feeds/comments/{id}/restore", RestoreCommentResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/feeds/comments/{id}/restore", + RestoreCommentResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.translate_comment") - def translate_comment(self, id: str, language: str) -> StreamResponse[TranslateCommentResponse]: + def translate_comment( + self, id: str, language: str + ) -> StreamResponse[TranslateCommentResponse]: path_params = { - "id": id, + "id": id, } json = TranslateCommentRequest(language=language).to_dict() - return self.post("/api/v2/feeds/comments/{id}/translate", TranslateCommentResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/feeds/comments/{id}/translate", + TranslateCommentResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.list_feed_groups") - def list_feed_groups(self, include_soft_deleted: Optional[bool] = None) -> StreamResponse[ListFeedGroupsResponse]: + def list_feed_groups( + self, include_soft_deleted: Optional[bool] = None + ) -> StreamResponse[ListFeedGroupsResponse]: query_params = build_query_param(include_soft_deleted=include_soft_deleted) - return self.get("/api/v2/feeds/feed_groups", ListFeedGroupsResponse, query_params=query_params) - + return self.get( + "/api/v2/feeds/feed_groups", + ListFeedGroupsResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.feeds.create_feed_group") - def create_feed_group(self, id: str, default_follower_role: Optional[str] = None, default_visibility: Optional[str] = None, activity_processors: Optional[List[ActivityProcessorConfig]] = None, activity_selectors: Optional[List[ActivitySelectorConfig]] = None, activity_filter: Optional[ActivityFilterConfig] = None, activity_processing: Optional[ActivityProcessingConfig] = None, aggregation: Optional[AggregationConfig] = None, custom: Optional[Dict[str, object]] = None, notification: Optional[NotificationConfig] = None, push_notification: Optional[PushNotificationConfig] = None, ranking: Optional[RankingConfig] = None, stories: Optional[StoriesConfig] = None) -> StreamResponse[CreateFeedGroupResponse]: - json = CreateFeedGroupRequest(id=id, default_follower_role=default_follower_role, default_visibility=default_visibility, activity_processors=activity_processors, activity_selectors=activity_selectors, activity_filter=activity_filter, activity_processing=activity_processing, aggregation=aggregation, custom=custom, notification=notification, push_notification=push_notification, ranking=ranking, stories=stories).to_dict() - return self.post("/api/v2/feeds/feed_groups", CreateFeedGroupResponse, json=json) - + def create_feed_group( + self, + id: str, + default_follower_role: Optional[str] = None, + default_visibility: Optional[str] = None, + activity_processors: Optional[List[ActivityProcessorConfig]] = None, + activity_selectors: Optional[List[ActivitySelectorConfig]] = None, + activity_filter: Optional[ActivityFilterConfig] = None, + activity_processing: Optional[ActivityProcessingConfig] = None, + aggregation: Optional[AggregationConfig] = None, + custom: Optional[Dict[str, object]] = None, + notification: Optional[NotificationConfig] = None, + push_notification: Optional[PushNotificationConfig] = None, + ranking: Optional[RankingConfig] = None, + stories: Optional[StoriesConfig] = None, + ) -> StreamResponse[CreateFeedGroupResponse]: + json = CreateFeedGroupRequest( + id=id, + default_follower_role=default_follower_role, + default_visibility=default_visibility, + activity_processors=activity_processors, + activity_selectors=activity_selectors, + activity_filter=activity_filter, + activity_processing=activity_processing, + aggregation=aggregation, + custom=custom, + notification=notification, + push_notification=push_notification, + ranking=ranking, + stories=stories, + ).to_dict() + return self.post( + "/api/v2/feeds/feed_groups", CreateFeedGroupResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.delete_feed") - def delete_feed(self, feed_group_id: str, feed_id: str, hard_delete: Optional[bool] = None, purge_user_activities: Optional[bool] = None) -> StreamResponse[DeleteFeedResponse]: - query_params = build_query_param(hard_delete=hard_delete, purge_user_activities=purge_user_activities) + def delete_feed( + self, + feed_group_id: str, + feed_id: str, + hard_delete: Optional[bool] = None, + purge_user_activities: Optional[bool] = None, + ) -> StreamResponse[DeleteFeedResponse]: + query_params = build_query_param( + hard_delete=hard_delete, purge_user_activities=purge_user_activities + ) path_params = { - "feed_group_id": feed_group_id, "feed_id": feed_id, + "feed_group_id": feed_group_id, + "feed_id": feed_id, } - return self.delete("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}", DeleteFeedResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}", + DeleteFeedResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.get_or_create_feed") - def get_or_create_feed(self, feed_group_id: str, feed_id: str, language: Optional[str] = None, translate_text: Optional[bool] = None, id_around: Optional[str] = None, limit: Optional[int] = None, next: Optional[str] = None, overwrite_interest_weights: Optional[bool] = None, prev: Optional[str] = None, user_id: Optional[str] = None, view: Optional[str] = None, watch: Optional[bool] = None, data: Optional[FeedInput] = None, enrichment_options: Optional[EnrichmentOptions] = None, external_ranking: Optional[Dict[str, object]] = None, filter: Optional[Dict[str, object]] = None, followers_pagination: Optional[PagerRequest] = None, following_pagination: Optional[PagerRequest] = None, friend_reactions_options: Optional[FriendReactionsOptions] = None, interest_weights: Optional[Dict[str, float]] = None, member_pagination: Optional[PagerRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[GetOrCreateFeedResponse]: - query_params = build_query_param(language=language, translate_text=translate_text) + def get_or_create_feed( + self, + feed_group_id: str, + feed_id: str, + language: Optional[str] = None, + translate_text: Optional[bool] = None, + id_around: Optional[str] = None, + limit: Optional[int] = None, + next: Optional[str] = None, + overwrite_interest_weights: Optional[bool] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + view: Optional[str] = None, + watch: Optional[bool] = None, + data: Optional[FeedInput] = None, + enrichment_options: Optional[EnrichmentOptions] = None, + external_ranking: Optional[Dict[str, object]] = None, + filter: Optional[Dict[str, object]] = None, + followers_pagination: Optional[PagerRequest] = None, + following_pagination: Optional[PagerRequest] = None, + friend_reactions_options: Optional[FriendReactionsOptions] = None, + interest_weights: Optional[Dict[str, float]] = None, + member_pagination: Optional[PagerRequest] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[GetOrCreateFeedResponse]: + query_params = build_query_param( + language=language, translate_text=translate_text + ) path_params = { - "feed_group_id": feed_group_id, "feed_id": feed_id, + "feed_group_id": feed_group_id, + "feed_id": feed_id, } - json = GetOrCreateFeedRequest(id_around=id_around, limit=limit, next=next, overwrite_interest_weights=overwrite_interest_weights, prev=prev, user_id=user_id, view=view, watch=watch, data=data, enrichment_options=enrichment_options, external_ranking=external_ranking, filter=filter, followers_pagination=followers_pagination, following_pagination=following_pagination, friend_reactions_options=friend_reactions_options, interest_weights=interest_weights, member_pagination=member_pagination, user=user).to_dict() - return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}", GetOrCreateFeedResponse, query_params=query_params, path_params=path_params, json=json) - + json = GetOrCreateFeedRequest( + id_around=id_around, + limit=limit, + next=next, + overwrite_interest_weights=overwrite_interest_weights, + prev=prev, + user_id=user_id, + view=view, + watch=watch, + data=data, + enrichment_options=enrichment_options, + external_ranking=external_ranking, + filter=filter, + followers_pagination=followers_pagination, + following_pagination=following_pagination, + friend_reactions_options=friend_reactions_options, + interest_weights=interest_weights, + member_pagination=member_pagination, + user=user, + ).to_dict() + return self.post( + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}", + GetOrCreateFeedResponse, + query_params=query_params, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.update_feed") - def update_feed(self, feed_group_id: str, feed_id: str, clear_location: Optional[bool] = None, created_by_id: Optional[str] = None, description: Optional[str] = None, enrich_own_fields: Optional[bool] = None, name: Optional[str] = None, filter_tags: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, location: Optional[Location] = None) -> StreamResponse[UpdateFeedResponse]: + def update_feed( + self, + feed_group_id: str, + feed_id: str, + clear_location: Optional[bool] = None, + created_by_id: Optional[str] = None, + description: Optional[str] = None, + enrich_own_fields: Optional[bool] = None, + name: Optional[str] = None, + filter_tags: Optional[List[str]] = None, + custom: Optional[Dict[str, object]] = None, + location: Optional[Location] = None, + ) -> StreamResponse[UpdateFeedResponse]: path_params = { - "feed_group_id": feed_group_id, "feed_id": feed_id, + "feed_group_id": feed_group_id, + "feed_id": feed_id, } - json = UpdateFeedRequest(clear_location=clear_location, created_by_id=created_by_id, description=description, enrich_own_fields=enrich_own_fields, name=name, filter_tags=filter_tags, custom=custom, location=location).to_dict() - return self.put("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}", UpdateFeedResponse, path_params=path_params, json=json) - + json = UpdateFeedRequest( + clear_location=clear_location, + created_by_id=created_by_id, + description=description, + enrich_own_fields=enrich_own_fields, + name=name, + filter_tags=filter_tags, + custom=custom, + location=location, + ).to_dict() + return self.put( + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}", + UpdateFeedResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.mark_activity") - def mark_activity(self, feed_group_id: str, feed_id: str, mark_all_read: Optional[bool] = None, mark_all_seen: Optional[bool] = None, user_id: Optional[str] = None, mark_read: Optional[List[str]] = None, mark_seen: Optional[List[str]] = None, mark_watched: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[Response]: + def mark_activity( + self, + feed_group_id: str, + feed_id: str, + mark_all_read: Optional[bool] = None, + mark_all_seen: Optional[bool] = None, + user_id: Optional[str] = None, + mark_read: Optional[List[str]] = None, + mark_seen: Optional[List[str]] = None, + mark_watched: Optional[List[str]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[Response]: path_params = { - "feed_group_id": feed_group_id, "feed_id": feed_id, + "feed_group_id": feed_group_id, + "feed_id": feed_id, } - json = MarkActivityRequest(mark_all_read=mark_all_read, mark_all_seen=mark_all_seen, user_id=user_id, mark_read=mark_read, mark_seen=mark_seen, mark_watched=mark_watched, user=user).to_dict() - return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/mark/batch", Response, path_params=path_params, json=json) - + json = MarkActivityRequest( + mark_all_read=mark_all_read, + mark_all_seen=mark_all_seen, + user_id=user_id, + mark_read=mark_read, + mark_seen=mark_seen, + mark_watched=mark_watched, + user=user, + ).to_dict() + return self.post( + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/mark/batch", + Response, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.unpin_activity") - def unpin_activity(self, feed_group_id: str, feed_id: str, activity_id: str, enrich_own_fields: Optional[bool] = None, user_id: Optional[str] = None) -> StreamResponse[UnpinActivityResponse]: - query_params = build_query_param(enrich_own_fields=enrich_own_fields, user_id=user_id) + def unpin_activity( + self, + feed_group_id: str, + feed_id: str, + activity_id: str, + enrich_own_fields: Optional[bool] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[UnpinActivityResponse]: + query_params = build_query_param( + enrich_own_fields=enrich_own_fields, user_id=user_id + ) path_params = { - "feed_group_id": feed_group_id, "feed_id": feed_id, "activity_id": activity_id, + "feed_group_id": feed_group_id, + "feed_id": feed_id, + "activity_id": activity_id, } - return self.delete("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/{activity_id}/pin", UnpinActivityResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/{activity_id}/pin", + UnpinActivityResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.pin_activity") - def pin_activity(self, feed_group_id: str, feed_id: str, activity_id: str, enrich_own_fields: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[PinActivityResponse]: + def pin_activity( + self, + feed_group_id: str, + feed_id: str, + activity_id: str, + enrich_own_fields: Optional[bool] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[PinActivityResponse]: path_params = { - "feed_group_id": feed_group_id, "feed_id": feed_id, "activity_id": activity_id, + "feed_group_id": feed_group_id, + "feed_id": feed_id, + "activity_id": activity_id, } - json = PinActivityRequest(enrich_own_fields=enrich_own_fields, user_id=user_id, user=user).to_dict() - return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/{activity_id}/pin", PinActivityResponse, path_params=path_params, json=json) - + json = PinActivityRequest( + enrich_own_fields=enrich_own_fields, user_id=user_id, user=user + ).to_dict() + return self.post( + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/{activity_id}/pin", + PinActivityResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.change_feed_visibility") - def change_feed_visibility(self, feed_group_id: str, feed_id: str, visibility: str, pending_follows_action: Optional[str] = None) -> StreamResponse[ChangeFeedVisibilityResponse]: + def change_feed_visibility( + self, + feed_group_id: str, + feed_id: str, + visibility: str, + pending_follows_action: Optional[str] = None, + ) -> StreamResponse[ChangeFeedVisibilityResponse]: path_params = { - "feed_group_id": feed_group_id, "feed_id": feed_id, + "feed_group_id": feed_group_id, + "feed_id": feed_id, } - json = ChangeFeedVisibilityRequest(visibility=visibility, pending_follows_action=pending_follows_action).to_dict() - return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/change_visibility", ChangeFeedVisibilityResponse, path_params=path_params, json=json) - + json = ChangeFeedVisibilityRequest( + visibility=visibility, pending_follows_action=pending_follows_action + ).to_dict() + return self.post( + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/change_visibility", + ChangeFeedVisibilityResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.get_feed_counts") - def get_feed_counts(self, feed_group_id: str, feed_id: str) -> StreamResponse[GetFeedCountsResponse]: + def get_feed_counts( + self, feed_group_id: str, feed_id: str + ) -> StreamResponse[GetFeedCountsResponse]: path_params = { - "feed_group_id": feed_group_id, "feed_id": feed_id, + "feed_group_id": feed_group_id, + "feed_id": feed_id, } - return self.get("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/counts", GetFeedCountsResponse, path_params=path_params) - + return self.get( + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/counts", + GetFeedCountsResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.update_feed_members") - def update_feed_members(self, feed_group_id: str, feed_id: str, operation: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, members: Optional[List[FeedMemberRequest]] = None) -> StreamResponse[UpdateFeedMembersResponse]: + def update_feed_members( + self, + feed_group_id: str, + feed_id: str, + operation: str, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + members: Optional[List[FeedMemberRequest]] = None, + ) -> StreamResponse[UpdateFeedMembersResponse]: path_params = { - "feed_group_id": feed_group_id, "feed_id": feed_id, + "feed_group_id": feed_group_id, + "feed_id": feed_id, } - json = UpdateFeedMembersRequest(operation=operation, limit=limit, next=next, prev=prev, members=members).to_dict() - return self.patch("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members", UpdateFeedMembersResponse, path_params=path_params, json=json) - + json = UpdateFeedMembersRequest( + operation=operation, limit=limit, next=next, prev=prev, members=members + ).to_dict() + return self.patch( + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members", + UpdateFeedMembersResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.accept_feed_member_invite") - def accept_feed_member_invite(self, feed_id: str, feed_group_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[AcceptFeedMemberInviteResponse]: + def accept_feed_member_invite( + self, + feed_id: str, + feed_group_id: str, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[AcceptFeedMemberInviteResponse]: path_params = { - "feed_id": feed_id, "feed_group_id": feed_group_id, + "feed_id": feed_id, + "feed_group_id": feed_group_id, } json = AcceptFeedMemberInviteRequest(user_id=user_id, user=user).to_dict() - return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/accept", AcceptFeedMemberInviteResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/accept", + AcceptFeedMemberInviteResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.query_feed_members") - def query_feed_members(self, feed_group_id: str, feed_id: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryFeedMembersResponse]: + def query_feed_members( + self, + feed_group_id: str, + feed_id: str, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryFeedMembersResponse]: path_params = { - "feed_group_id": feed_group_id, "feed_id": feed_id, + "feed_group_id": feed_group_id, + "feed_id": feed_id, } - json = QueryFeedMembersRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() - return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/query", QueryFeedMembersResponse, path_params=path_params, json=json) - + json = QueryFeedMembersRequest( + limit=limit, next=next, prev=prev, sort=sort, filter=filter + ).to_dict() + return self.post( + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/query", + QueryFeedMembersResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.reject_feed_member_invite") - def reject_feed_member_invite(self, feed_group_id: str, feed_id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[RejectFeedMemberInviteResponse]: + def reject_feed_member_invite( + self, + feed_group_id: str, + feed_id: str, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[RejectFeedMemberInviteResponse]: path_params = { - "feed_group_id": feed_group_id, "feed_id": feed_id, + "feed_group_id": feed_group_id, + "feed_id": feed_id, } json = RejectFeedMemberInviteRequest(user_id=user_id, user=user).to_dict() - return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/reject", RejectFeedMemberInviteResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/reject", + RejectFeedMemberInviteResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.query_pinned_activities") - def query_pinned_activities(self, feed_group_id: str, feed_id: str, language: Optional[str] = None, translate_text: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryPinnedActivitiesResponse]: - query_params = build_query_param(language=language, translate_text=translate_text) + def query_pinned_activities( + self, + feed_group_id: str, + feed_id: str, + language: Optional[str] = None, + translate_text: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryPinnedActivitiesResponse]: + query_params = build_query_param( + language=language, translate_text=translate_text + ) path_params = { - "feed_group_id": feed_group_id, "feed_id": feed_id, + "feed_group_id": feed_group_id, + "feed_id": feed_id, } - json = QueryPinnedActivitiesRequest(enrich_own_fields=enrich_own_fields, limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() - return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/pinned_activities/query", QueryPinnedActivitiesResponse, query_params=query_params, path_params=path_params, json=json) - + json = QueryPinnedActivitiesRequest( + enrich_own_fields=enrich_own_fields, + limit=limit, + next=next, + prev=prev, + sort=sort, + filter=filter, + ).to_dict() + return self.post( + "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/pinned_activities/query", + QueryPinnedActivitiesResponse, + query_params=query_params, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.get_follow_suggestions") - def get_follow_suggestions(self, feed_group_id: str, limit: Optional[int] = None, user_id: Optional[str] = None) -> StreamResponse[GetFollowSuggestionsResponse]: + def get_follow_suggestions( + self, + feed_group_id: str, + limit: Optional[int] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[GetFollowSuggestionsResponse]: query_params = build_query_param(limit=limit, user_id=user_id) path_params = { - "feed_group_id": feed_group_id, + "feed_group_id": feed_group_id, } - return self.get("/api/v2/feeds/feed_groups/{feed_group_id}/follow_suggestions", GetFollowSuggestionsResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/feeds/feed_groups/{feed_group_id}/follow_suggestions", + GetFollowSuggestionsResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.restore_feed_group") - def restore_feed_group(self, feed_group_id: str) -> StreamResponse[RestoreFeedGroupResponse]: + def restore_feed_group( + self, feed_group_id: str + ) -> StreamResponse[RestoreFeedGroupResponse]: path_params = { - "feed_group_id": feed_group_id, + "feed_group_id": feed_group_id, } - return self.post("/api/v2/feeds/feed_groups/{feed_group_id}/restore", RestoreFeedGroupResponse, path_params=path_params) - + return self.post( + "/api/v2/feeds/feed_groups/{feed_group_id}/restore", + RestoreFeedGroupResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.delete_feed_group") - def delete_feed_group(self, id: str, hard_delete: Optional[bool] = None) -> StreamResponse[DeleteFeedGroupResponse]: + def delete_feed_group( + self, id: str, hard_delete: Optional[bool] = None + ) -> StreamResponse[DeleteFeedGroupResponse]: query_params = build_query_param(hard_delete=hard_delete) path_params = { - "id": id, + "id": id, } - return self.delete("/api/v2/feeds/feed_groups/{id}", DeleteFeedGroupResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/feeds/feed_groups/{id}", + DeleteFeedGroupResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.get_feed_group") - def get_feed_group(self, id: str, include_soft_deleted: Optional[bool] = None) -> StreamResponse[GetFeedGroupResponse]: + def get_feed_group( + self, id: str, include_soft_deleted: Optional[bool] = None + ) -> StreamResponse[GetFeedGroupResponse]: query_params = build_query_param(include_soft_deleted=include_soft_deleted) path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/feeds/feed_groups/{id}", GetFeedGroupResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/feeds/feed_groups/{id}", + GetFeedGroupResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.get_or_create_feed_group") - def get_or_create_feed_group(self, id: str, default_follower_role: Optional[str] = None, default_visibility: Optional[str] = None, activity_processors: Optional[List[ActivityProcessorConfig]] = None, activity_selectors: Optional[List[ActivitySelectorConfig]] = None, activity_filter: Optional[ActivityFilterConfig] = None, activity_processing: Optional[ActivityProcessingConfig] = None, aggregation: Optional[AggregationConfig] = None, custom: Optional[Dict[str, object]] = None, notification: Optional[NotificationConfig] = None, push_notification: Optional[PushNotificationConfig] = None, ranking: Optional[RankingConfig] = None, stories: Optional[StoriesConfig] = None) -> StreamResponse[GetOrCreateFeedGroupResponse]: + def get_or_create_feed_group( + self, + id: str, + default_follower_role: Optional[str] = None, + default_visibility: Optional[str] = None, + activity_processors: Optional[List[ActivityProcessorConfig]] = None, + activity_selectors: Optional[List[ActivitySelectorConfig]] = None, + activity_filter: Optional[ActivityFilterConfig] = None, + activity_processing: Optional[ActivityProcessingConfig] = None, + aggregation: Optional[AggregationConfig] = None, + custom: Optional[Dict[str, object]] = None, + notification: Optional[NotificationConfig] = None, + push_notification: Optional[PushNotificationConfig] = None, + ranking: Optional[RankingConfig] = None, + stories: Optional[StoriesConfig] = None, + ) -> StreamResponse[GetOrCreateFeedGroupResponse]: path_params = { - "id": id, + "id": id, } - json = GetOrCreateFeedGroupRequest(default_follower_role=default_follower_role, default_visibility=default_visibility, activity_processors=activity_processors, activity_selectors=activity_selectors, activity_filter=activity_filter, activity_processing=activity_processing, aggregation=aggregation, custom=custom, notification=notification, push_notification=push_notification, ranking=ranking, stories=stories).to_dict() - return self.post("/api/v2/feeds/feed_groups/{id}", GetOrCreateFeedGroupResponse, path_params=path_params, json=json) - + json = GetOrCreateFeedGroupRequest( + default_follower_role=default_follower_role, + default_visibility=default_visibility, + activity_processors=activity_processors, + activity_selectors=activity_selectors, + activity_filter=activity_filter, + activity_processing=activity_processing, + aggregation=aggregation, + custom=custom, + notification=notification, + push_notification=push_notification, + ranking=ranking, + stories=stories, + ).to_dict() + return self.post( + "/api/v2/feeds/feed_groups/{id}", + GetOrCreateFeedGroupResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.update_feed_group") - def update_feed_group(self, id: str, default_follower_role: Optional[str] = None, default_visibility: Optional[str] = None, activity_processors: Optional[List[ActivityProcessorConfig]] = None, activity_selectors: Optional[List[ActivitySelectorConfig]] = None, activity_filter: Optional[ActivityFilterConfig] = None, activity_processing: Optional[ActivityProcessingConfig] = None, aggregation: Optional[AggregationConfig] = None, custom: Optional[Dict[str, object]] = None, notification: Optional[NotificationConfig] = None, push_notification: Optional[PushNotificationConfig] = None, ranking: Optional[RankingConfig] = None, stories: Optional[StoriesConfig] = None) -> StreamResponse[UpdateFeedGroupResponse]: + def update_feed_group( + self, + id: str, + default_follower_role: Optional[str] = None, + default_visibility: Optional[str] = None, + activity_processors: Optional[List[ActivityProcessorConfig]] = None, + activity_selectors: Optional[List[ActivitySelectorConfig]] = None, + activity_filter: Optional[ActivityFilterConfig] = None, + activity_processing: Optional[ActivityProcessingConfig] = None, + aggregation: Optional[AggregationConfig] = None, + custom: Optional[Dict[str, object]] = None, + notification: Optional[NotificationConfig] = None, + push_notification: Optional[PushNotificationConfig] = None, + ranking: Optional[RankingConfig] = None, + stories: Optional[StoriesConfig] = None, + ) -> StreamResponse[UpdateFeedGroupResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateFeedGroupRequest(default_follower_role=default_follower_role, default_visibility=default_visibility, activity_processors=activity_processors, activity_selectors=activity_selectors, activity_filter=activity_filter, activity_processing=activity_processing, aggregation=aggregation, custom=custom, notification=notification, push_notification=push_notification, ranking=ranking, stories=stories).to_dict() - return self.put("/api/v2/feeds/feed_groups/{id}", UpdateFeedGroupResponse, path_params=path_params, json=json) - + json = UpdateFeedGroupRequest( + default_follower_role=default_follower_role, + default_visibility=default_visibility, + activity_processors=activity_processors, + activity_selectors=activity_selectors, + activity_filter=activity_filter, + activity_processing=activity_processing, + aggregation=aggregation, + custom=custom, + notification=notification, + push_notification=push_notification, + ranking=ranking, + stories=stories, + ).to_dict() + return self.put( + "/api/v2/feeds/feed_groups/{id}", + UpdateFeedGroupResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.list_feed_views") def list_feed_views(self) -> StreamResponse[ListFeedViewsResponse]: return self.get("/api/v2/feeds/feed_views", ListFeedViewsResponse) - + @telemetry.operation_name("getstream.api.feeds.create_feed_view") - def create_feed_view(self, id: str, activity_selectors: Optional[List[ActivitySelectorConfig]] = None, aggregation: Optional[AggregationConfig] = None, ranking: Optional[RankingConfig] = None) -> StreamResponse[CreateFeedViewResponse]: - json = CreateFeedViewRequest(id=id, activity_selectors=activity_selectors, aggregation=aggregation, ranking=ranking).to_dict() + def create_feed_view( + self, + id: str, + activity_selectors: Optional[List[ActivitySelectorConfig]] = None, + aggregation: Optional[AggregationConfig] = None, + ranking: Optional[RankingConfig] = None, + ) -> StreamResponse[CreateFeedViewResponse]: + json = CreateFeedViewRequest( + id=id, + activity_selectors=activity_selectors, + aggregation=aggregation, + ranking=ranking, + ).to_dict() return self.post("/api/v2/feeds/feed_views", CreateFeedViewResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.delete_feed_view") def delete_feed_view(self, id: str) -> StreamResponse[DeleteFeedViewResponse]: path_params = { - "id": id, + "id": id, } - return self.delete("/api/v2/feeds/feed_views/{id}", DeleteFeedViewResponse, path_params=path_params) - + return self.delete( + "/api/v2/feeds/feed_views/{id}", + DeleteFeedViewResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.get_feed_view") def get_feed_view(self, id: str) -> StreamResponse[GetFeedViewResponse]: path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/feeds/feed_views/{id}", GetFeedViewResponse, path_params=path_params) - + return self.get( + "/api/v2/feeds/feed_views/{id}", + GetFeedViewResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.get_or_create_feed_view") - def get_or_create_feed_view(self, id: str, activity_selectors: Optional[List[ActivitySelectorConfig]] = None, aggregation: Optional[AggregationConfig] = None, ranking: Optional[RankingConfig] = None) -> StreamResponse[GetOrCreateFeedViewResponse]: + def get_or_create_feed_view( + self, + id: str, + activity_selectors: Optional[List[ActivitySelectorConfig]] = None, + aggregation: Optional[AggregationConfig] = None, + ranking: Optional[RankingConfig] = None, + ) -> StreamResponse[GetOrCreateFeedViewResponse]: path_params = { - "id": id, + "id": id, } - json = GetOrCreateFeedViewRequest(activity_selectors=activity_selectors, aggregation=aggregation, ranking=ranking).to_dict() - return self.post("/api/v2/feeds/feed_views/{id}", GetOrCreateFeedViewResponse, path_params=path_params, json=json) - + json = GetOrCreateFeedViewRequest( + activity_selectors=activity_selectors, + aggregation=aggregation, + ranking=ranking, + ).to_dict() + return self.post( + "/api/v2/feeds/feed_views/{id}", + GetOrCreateFeedViewResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.update_feed_view") - def update_feed_view(self, id: str, activity_selectors: Optional[List[ActivitySelectorConfig]] = None, aggregation: Optional[AggregationConfig] = None, ranking: Optional[RankingConfig] = None) -> StreamResponse[UpdateFeedViewResponse]: + def update_feed_view( + self, + id: str, + activity_selectors: Optional[List[ActivitySelectorConfig]] = None, + aggregation: Optional[AggregationConfig] = None, + ranking: Optional[RankingConfig] = None, + ) -> StreamResponse[UpdateFeedViewResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateFeedViewRequest(activity_selectors=activity_selectors, aggregation=aggregation, ranking=ranking).to_dict() - return self.put("/api/v2/feeds/feed_views/{id}", UpdateFeedViewResponse, path_params=path_params, json=json) - + json = UpdateFeedViewRequest( + activity_selectors=activity_selectors, + aggregation=aggregation, + ranking=ranking, + ).to_dict() + return self.put( + "/api/v2/feeds/feed_views/{id}", + UpdateFeedViewResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.list_feed_visibilities") def list_feed_visibilities(self) -> StreamResponse[ListFeedVisibilitiesResponse]: return self.get("/api/v2/feeds/feed_visibilities", ListFeedVisibilitiesResponse) - + @telemetry.operation_name("getstream.api.feeds.get_feed_visibility") - def get_feed_visibility(self, name: str) -> StreamResponse[GetFeedVisibilityResponse]: + def get_feed_visibility( + self, name: str + ) -> StreamResponse[GetFeedVisibilityResponse]: path_params = { - "name": name, + "name": name, } - return self.get("/api/v2/feeds/feed_visibilities/{name}", GetFeedVisibilityResponse, path_params=path_params) - + return self.get( + "/api/v2/feeds/feed_visibilities/{name}", + GetFeedVisibilityResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.update_feed_visibility") - def update_feed_visibility(self, name: str, grants: Optional[Dict[str, List[str]]] = None) -> StreamResponse[UpdateFeedVisibilityResponse]: + def update_feed_visibility( + self, name: str, grants: Optional[Dict[str, List[str]]] = None + ) -> StreamResponse[UpdateFeedVisibilityResponse]: path_params = { - "name": name, + "name": name, } json = UpdateFeedVisibilityRequest(grants=grants).to_dict() - return self.put("/api/v2/feeds/feed_visibilities/{name}", UpdateFeedVisibilityResponse, path_params=path_params, json=json) - + return self.put( + "/api/v2/feeds/feed_visibilities/{name}", + UpdateFeedVisibilityResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.create_feeds_batch") - def create_feeds_batch(self, feeds: List[FeedRequest], create_users: Optional[bool] = None, enrich_own_fields: Optional[bool] = None) -> StreamResponse[CreateFeedsBatchResponse]: - json = CreateFeedsBatchRequest(feeds=feeds, create_users=create_users, enrich_own_fields=enrich_own_fields).to_dict() - return self.post("/api/v2/feeds/feeds/batch", CreateFeedsBatchResponse, json=json) - + def create_feeds_batch( + self, + feeds: List[FeedRequest], + create_users: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + ) -> StreamResponse[CreateFeedsBatchResponse]: + json = CreateFeedsBatchRequest( + feeds=feeds, create_users=create_users, enrich_own_fields=enrich_own_fields + ).to_dict() + return self.post( + "/api/v2/feeds/feeds/batch", CreateFeedsBatchResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.delete_feeds_batch") - def delete_feeds_batch(self, feeds: List[str], hard_delete: Optional[bool] = None, purge_user_activities: Optional[bool] = None) -> StreamResponse[DeleteFeedsBatchResponse]: - json = DeleteFeedsBatchRequest(feeds=feeds, hard_delete=hard_delete, purge_user_activities=purge_user_activities).to_dict() - return self.post("/api/v2/feeds/feeds/delete", DeleteFeedsBatchResponse, json=json) - + def delete_feeds_batch( + self, + feeds: List[str], + hard_delete: Optional[bool] = None, + purge_user_activities: Optional[bool] = None, + ) -> StreamResponse[DeleteFeedsBatchResponse]: + json = DeleteFeedsBatchRequest( + feeds=feeds, + hard_delete=hard_delete, + purge_user_activities=purge_user_activities, + ).to_dict() + return self.post( + "/api/v2/feeds/feeds/delete", DeleteFeedsBatchResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.own_batch") - def own_batch(self, feeds: List[str], user_id: Optional[str] = None, fields: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[OwnBatchResponse]: - json = OwnBatchRequest(feeds=feeds, user_id=user_id, fields=fields, user=user).to_dict() + def own_batch( + self, + feeds: List[str], + user_id: Optional[str] = None, + fields: Optional[List[str]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[OwnBatchResponse]: + json = OwnBatchRequest( + feeds=feeds, user_id=user_id, fields=fields, user=user + ).to_dict() return self.post("/api/v2/feeds/feeds/own/batch", OwnBatchResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.query_feeds") - def query_feeds(self, enrich_own_fields: Optional[bool] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, watch: Optional[bool] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryFeedsResponse]: - json = QueryFeedsRequest(enrich_own_fields=enrich_own_fields, limit=limit, next=next, prev=prev, watch=watch, sort=sort, filter=filter).to_dict() + def query_feeds( + self, + enrich_own_fields: Optional[bool] = None, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + watch: Optional[bool] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryFeedsResponse]: + json = QueryFeedsRequest( + enrich_own_fields=enrich_own_fields, + limit=limit, + next=next, + prev=prev, + watch=watch, + sort=sort, + filter=filter, + ).to_dict() return self.post("/api/v2/feeds/feeds/query", QueryFeedsResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.get_feeds_rate_limits") - def get_feeds_rate_limits(self, endpoints: Optional[str] = None, android: Optional[bool] = None, ios: Optional[bool] = None, web: Optional[bool] = None, unity: Optional[bool] = None, server_side: Optional[bool] = None) -> StreamResponse[GetFeedsRateLimitsResponse]: - query_params = build_query_param(endpoints=endpoints, android=android, ios=ios, web=web, unity=unity, server_side=server_side) - return self.get("/api/v2/feeds/feeds/rate_limits", GetFeedsRateLimitsResponse, query_params=query_params) - + def get_feeds_rate_limits( + self, + endpoints: Optional[str] = None, + android: Optional[bool] = None, + ios: Optional[bool] = None, + web: Optional[bool] = None, + unity: Optional[bool] = None, + server_side: Optional[bool] = None, + ) -> StreamResponse[GetFeedsRateLimitsResponse]: + query_params = build_query_param( + endpoints=endpoints, + android=android, + ios=ios, + web=web, + unity=unity, + server_side=server_side, + ) + return self.get( + "/api/v2/feeds/feeds/rate_limits", + GetFeedsRateLimitsResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.feeds.update_follow") - def update_follow(self, source: str, target: str, activity_copy_limit: Optional[int] = None, copy_custom_to_notification: Optional[bool] = None, create_notification_activity: Optional[bool] = None, create_users: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, follower_role: Optional[str] = None, push_preference: Optional[str] = None, skip_push: Optional[bool] = None, status: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[UpdateFollowResponse]: - json = UpdateFollowRequest(source=source, target=target, activity_copy_limit=activity_copy_limit, copy_custom_to_notification=copy_custom_to_notification, create_notification_activity=create_notification_activity, create_users=create_users, enrich_own_fields=enrich_own_fields, follower_role=follower_role, push_preference=push_preference, skip_push=skip_push, status=status, custom=custom).to_dict() + def update_follow( + self, + source: str, + target: str, + activity_copy_limit: Optional[int] = None, + copy_custom_to_notification: Optional[bool] = None, + create_notification_activity: Optional[bool] = None, + create_users: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + follower_role: Optional[str] = None, + push_preference: Optional[str] = None, + skip_push: Optional[bool] = None, + status: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + ) -> StreamResponse[UpdateFollowResponse]: + json = UpdateFollowRequest( + source=source, + target=target, + activity_copy_limit=activity_copy_limit, + copy_custom_to_notification=copy_custom_to_notification, + create_notification_activity=create_notification_activity, + create_users=create_users, + enrich_own_fields=enrich_own_fields, + follower_role=follower_role, + push_preference=push_preference, + skip_push=skip_push, + status=status, + custom=custom, + ).to_dict() return self.patch("/api/v2/feeds/follows", UpdateFollowResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.follow") - def follow(self, source: str, target: str, activity_copy_limit: Optional[int] = None, copy_custom_to_notification: Optional[bool] = None, create_notification_activity: Optional[bool] = None, create_users: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, push_preference: Optional[str] = None, skip_push: Optional[bool] = None, status: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[SingleFollowResponse]: - json = FollowRequest(source=source, target=target, activity_copy_limit=activity_copy_limit, copy_custom_to_notification=copy_custom_to_notification, create_notification_activity=create_notification_activity, create_users=create_users, enrich_own_fields=enrich_own_fields, push_preference=push_preference, skip_push=skip_push, status=status, custom=custom).to_dict() + def follow( + self, + source: str, + target: str, + activity_copy_limit: Optional[int] = None, + copy_custom_to_notification: Optional[bool] = None, + create_notification_activity: Optional[bool] = None, + create_users: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + push_preference: Optional[str] = None, + skip_push: Optional[bool] = None, + status: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + ) -> StreamResponse[SingleFollowResponse]: + json = FollowRequest( + source=source, + target=target, + activity_copy_limit=activity_copy_limit, + copy_custom_to_notification=copy_custom_to_notification, + create_notification_activity=create_notification_activity, + create_users=create_users, + enrich_own_fields=enrich_own_fields, + push_preference=push_preference, + skip_push=skip_push, + status=status, + custom=custom, + ).to_dict() return self.post("/api/v2/feeds/follows", SingleFollowResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.accept_follow") - def accept_follow(self, source: str, target: str, follower_role: Optional[str] = None) -> StreamResponse[AcceptFollowResponse]: - json = AcceptFollowRequest(source=source, target=target, follower_role=follower_role).to_dict() - return self.post("/api/v2/feeds/follows/accept", AcceptFollowResponse, json=json) - + def accept_follow( + self, source: str, target: str, follower_role: Optional[str] = None + ) -> StreamResponse[AcceptFollowResponse]: + json = AcceptFollowRequest( + source=source, target=target, follower_role=follower_role + ).to_dict() + return self.post( + "/api/v2/feeds/follows/accept", AcceptFollowResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.follow_batch") - def follow_batch(self, follows: List[FollowRequest], create_users: Optional[bool] = None, enrich_own_fields: Optional[bool] = None) -> StreamResponse[FollowBatchResponse]: - json = FollowBatchRequest(follows=follows, create_users=create_users, enrich_own_fields=enrich_own_fields).to_dict() + def follow_batch( + self, + follows: List[FollowRequest], + create_users: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + ) -> StreamResponse[FollowBatchResponse]: + json = FollowBatchRequest( + follows=follows, + create_users=create_users, + enrich_own_fields=enrich_own_fields, + ).to_dict() return self.post("/api/v2/feeds/follows/batch", FollowBatchResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.get_or_create_follows") - def get_or_create_follows(self, follows: List[FollowRequest], create_users: Optional[bool] = None, enrich_own_fields: Optional[bool] = None) -> StreamResponse[FollowBatchResponse]: - json = FollowBatchRequest(follows=follows, create_users=create_users, enrich_own_fields=enrich_own_fields).to_dict() - return self.post("/api/v2/feeds/follows/batch/upsert", FollowBatchResponse, json=json) - + def get_or_create_follows( + self, + follows: List[FollowRequest], + create_users: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + ) -> StreamResponse[FollowBatchResponse]: + json = FollowBatchRequest( + follows=follows, + create_users=create_users, + enrich_own_fields=enrich_own_fields, + ).to_dict() + return self.post( + "/api/v2/feeds/follows/batch/upsert", FollowBatchResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.query_follows") - def query_follows(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryFollowsResponse]: - json = QueryFollowsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() + def query_follows( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryFollowsResponse]: + json = QueryFollowsRequest( + limit=limit, next=next, prev=prev, sort=sort, filter=filter + ).to_dict() return self.post("/api/v2/feeds/follows/query", QueryFollowsResponse, json=json) - + @telemetry.operation_name("getstream.api.feeds.reject_follow") - def reject_follow(self, source: str, target: str) -> StreamResponse[RejectFollowResponse]: + def reject_follow( + self, source: str, target: str + ) -> StreamResponse[RejectFollowResponse]: json = RejectFollowRequest(source=source, target=target).to_dict() - return self.post("/api/v2/feeds/follows/reject", RejectFollowResponse, json=json) - + return self.post( + "/api/v2/feeds/follows/reject", RejectFollowResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.get_or_create_follow") - def get_or_create_follow(self, source: str, target: str, activity_copy_limit: Optional[int] = None, copy_custom_to_notification: Optional[bool] = None, create_notification_activity: Optional[bool] = None, create_users: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, push_preference: Optional[str] = None, skip_push: Optional[bool] = None, status: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[GetOrCreateFollowResponse]: - json = FollowRequest(source=source, target=target, activity_copy_limit=activity_copy_limit, copy_custom_to_notification=copy_custom_to_notification, create_notification_activity=create_notification_activity, create_users=create_users, enrich_own_fields=enrich_own_fields, push_preference=push_preference, skip_push=skip_push, status=status, custom=custom).to_dict() - return self.post("/api/v2/feeds/follows/upsert", GetOrCreateFollowResponse, json=json) - + def get_or_create_follow( + self, + source: str, + target: str, + activity_copy_limit: Optional[int] = None, + copy_custom_to_notification: Optional[bool] = None, + create_notification_activity: Optional[bool] = None, + create_users: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + push_preference: Optional[str] = None, + skip_push: Optional[bool] = None, + status: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + ) -> StreamResponse[GetOrCreateFollowResponse]: + json = FollowRequest( + source=source, + target=target, + activity_copy_limit=activity_copy_limit, + copy_custom_to_notification=copy_custom_to_notification, + create_notification_activity=create_notification_activity, + create_users=create_users, + enrich_own_fields=enrich_own_fields, + push_preference=push_preference, + skip_push=skip_push, + status=status, + custom=custom, + ).to_dict() + return self.post( + "/api/v2/feeds/follows/upsert", GetOrCreateFollowResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.unfollow") - def unfollow(self, source: str, target: str, delete_notification_activity: Optional[bool] = None, keep_history: Optional[bool] = None, enrich_own_fields: Optional[bool] = None) -> StreamResponse[UnfollowResponse]: - query_params = build_query_param(delete_notification_activity=delete_notification_activity, keep_history=keep_history, enrich_own_fields=enrich_own_fields) + def unfollow( + self, + source: str, + target: str, + delete_notification_activity: Optional[bool] = None, + keep_history: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + ) -> StreamResponse[UnfollowResponse]: + query_params = build_query_param( + delete_notification_activity=delete_notification_activity, + keep_history=keep_history, + enrich_own_fields=enrich_own_fields, + ) path_params = { - "source": source, "target": target, + "source": source, + "target": target, } - return self.delete("/api/v2/feeds/follows/{source}/{target}", UnfollowResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/feeds/follows/{source}/{target}", + UnfollowResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.create_membership_level") - def create_membership_level(self, id: str, name: str, description: Optional[str] = None, priority: Optional[int] = None, tags: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[CreateMembershipLevelResponse]: - json = CreateMembershipLevelRequest(id=id, name=name, description=description, priority=priority, tags=tags, custom=custom).to_dict() - return self.post("/api/v2/feeds/membership_levels", CreateMembershipLevelResponse, json=json) - + def create_membership_level( + self, + id: str, + name: str, + description: Optional[str] = None, + priority: Optional[int] = None, + tags: Optional[List[str]] = None, + custom: Optional[Dict[str, object]] = None, + ) -> StreamResponse[CreateMembershipLevelResponse]: + json = CreateMembershipLevelRequest( + id=id, + name=name, + description=description, + priority=priority, + tags=tags, + custom=custom, + ).to_dict() + return self.post( + "/api/v2/feeds/membership_levels", CreateMembershipLevelResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.query_membership_levels") - def query_membership_levels(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryMembershipLevelsResponse]: - json = QueryMembershipLevelsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() - return self.post("/api/v2/feeds/membership_levels/query", QueryMembershipLevelsResponse, json=json) - + def query_membership_levels( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryMembershipLevelsResponse]: + json = QueryMembershipLevelsRequest( + limit=limit, next=next, prev=prev, sort=sort, filter=filter + ).to_dict() + return self.post( + "/api/v2/feeds/membership_levels/query", + QueryMembershipLevelsResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.delete_membership_level") def delete_membership_level(self, id: str) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - return self.delete("/api/v2/feeds/membership_levels/{id}", Response, path_params=path_params) - + return self.delete( + "/api/v2/feeds/membership_levels/{id}", Response, path_params=path_params + ) + @telemetry.operation_name("getstream.api.feeds.update_membership_level") - def update_membership_level(self, id: str, description: Optional[str] = None, name: Optional[str] = None, priority: Optional[int] = None, tags: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[UpdateMembershipLevelResponse]: + def update_membership_level( + self, + id: str, + description: Optional[str] = None, + name: Optional[str] = None, + priority: Optional[int] = None, + tags: Optional[List[str]] = None, + custom: Optional[Dict[str, object]] = None, + ) -> StreamResponse[UpdateMembershipLevelResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateMembershipLevelRequest(description=description, name=name, priority=priority, tags=tags, custom=custom).to_dict() - return self.patch("/api/v2/feeds/membership_levels/{id}", UpdateMembershipLevelResponse, path_params=path_params, json=json) - + json = UpdateMembershipLevelRequest( + description=description, + name=name, + priority=priority, + tags=tags, + custom=custom, + ).to_dict() + return self.patch( + "/api/v2/feeds/membership_levels/{id}", + UpdateMembershipLevelResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.query_revision_history") - def query_revision_history(self, filter: Dict[str, object], limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None) -> StreamResponse[QueryRevisionHistoryResponse]: - json = QueryRevisionHistoryRequest(filter=filter, limit=limit, next=next, prev=prev, sort=sort).to_dict() - return self.post("/api/v2/feeds/revisions/query", QueryRevisionHistoryResponse, json=json) - + def query_revision_history( + self, + filter: Dict[str, object], + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + ) -> StreamResponse[QueryRevisionHistoryResponse]: + json = QueryRevisionHistoryRequest( + filter=filter, limit=limit, next=next, prev=prev, sort=sort + ).to_dict() + return self.post( + "/api/v2/feeds/revisions/query", QueryRevisionHistoryResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.query_feeds_usage_stats") - def query_feeds_usage_stats(self, _from: Optional[str] = None, to: Optional[str] = None) -> StreamResponse[QueryFeedsUsageStatsResponse]: + def query_feeds_usage_stats( + self, _from: Optional[str] = None, to: Optional[str] = None + ) -> StreamResponse[QueryFeedsUsageStatsResponse]: json = QueryFeedsUsageStatsRequest(_from=_from, to=to).to_dict() - return self.post("/api/v2/feeds/stats/usage", QueryFeedsUsageStatsResponse, json=json) - + return self.post( + "/api/v2/feeds/stats/usage", QueryFeedsUsageStatsResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.unfollow_batch") - def unfollow_batch(self, follows: List[UnfollowPair], delete_notification_activity: Optional[bool] = None, enrich_own_fields: Optional[bool] = None) -> StreamResponse[UnfollowBatchResponse]: - json = UnfollowBatchRequest(follows=follows, delete_notification_activity=delete_notification_activity, enrich_own_fields=enrich_own_fields).to_dict() - return self.post("/api/v2/feeds/unfollow/batch", UnfollowBatchResponse, json=json) - + def unfollow_batch( + self, + follows: List[UnfollowPair], + delete_notification_activity: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + ) -> StreamResponse[UnfollowBatchResponse]: + json = UnfollowBatchRequest( + follows=follows, + delete_notification_activity=delete_notification_activity, + enrich_own_fields=enrich_own_fields, + ).to_dict() + return self.post( + "/api/v2/feeds/unfollow/batch", UnfollowBatchResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.get_or_create_unfollows") - def get_or_create_unfollows(self, follows: List[UnfollowPair], delete_notification_activity: Optional[bool] = None, enrich_own_fields: Optional[bool] = None) -> StreamResponse[UnfollowBatchResponse]: - json = UnfollowBatchRequest(follows=follows, delete_notification_activity=delete_notification_activity, enrich_own_fields=enrich_own_fields).to_dict() - return self.post("/api/v2/feeds/unfollow/batch/upsert", UnfollowBatchResponse, json=json) - + def get_or_create_unfollows( + self, + follows: List[UnfollowPair], + delete_notification_activity: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + ) -> StreamResponse[UnfollowBatchResponse]: + json = UnfollowBatchRequest( + follows=follows, + delete_notification_activity=delete_notification_activity, + enrich_own_fields=enrich_own_fields, + ).to_dict() + return self.post( + "/api/v2/feeds/unfollow/batch/upsert", UnfollowBatchResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.get_or_create_unfollow") - def get_or_create_unfollow(self, source: str, target: str, delete_notification_activity: Optional[bool] = None, enrich_own_fields: Optional[bool] = None, keep_history: Optional[bool] = None) -> StreamResponse[GetOrCreateUnfollowResponse]: - json = GetOrCreateUnfollowRequest(source=source, target=target, delete_notification_activity=delete_notification_activity, enrich_own_fields=enrich_own_fields, keep_history=keep_history).to_dict() - return self.post("/api/v2/feeds/unfollow/upsert", GetOrCreateUnfollowResponse, json=json) - + def get_or_create_unfollow( + self, + source: str, + target: str, + delete_notification_activity: Optional[bool] = None, + enrich_own_fields: Optional[bool] = None, + keep_history: Optional[bool] = None, + ) -> StreamResponse[GetOrCreateUnfollowResponse]: + json = GetOrCreateUnfollowRequest( + source=source, + target=target, + delete_notification_activity=delete_notification_activity, + enrich_own_fields=enrich_own_fields, + keep_history=keep_history, + ).to_dict() + return self.post( + "/api/v2/feeds/unfollow/upsert", GetOrCreateUnfollowResponse, json=json + ) + @telemetry.operation_name("getstream.api.feeds.delete_feed_user_data") - def delete_feed_user_data(self, user_id: str, hard_delete: Optional[bool] = None) -> StreamResponse[DeleteFeedUserDataResponse]: + def delete_feed_user_data( + self, user_id: str, hard_delete: Optional[bool] = None + ) -> StreamResponse[DeleteFeedUserDataResponse]: path_params = { - "user_id": user_id, + "user_id": user_id, } json = DeleteFeedUserDataRequest(hard_delete=hard_delete).to_dict() - return self.post("/api/v2/feeds/users/{user_id}/delete", DeleteFeedUserDataResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/feeds/users/{user_id}/delete", + DeleteFeedUserDataResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.feeds.export_feed_user_data") - def export_feed_user_data(self, user_id: str) -> StreamResponse[ExportFeedUserDataResponse]: + def export_feed_user_data( + self, user_id: str + ) -> StreamResponse[ExportFeedUserDataResponse]: path_params = { - "user_id": user_id, + "user_id": user_id, } - return self.post("/api/v2/feeds/users/{user_id}/export", ExportFeedUserDataResponse, path_params=path_params) - + return self.post( + "/api/v2/feeds/users/{user_id}/export", + ExportFeedUserDataResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.feeds.get_user_interests") - def get_user_interests(self, user_id: str, limit: Optional[int] = None) -> StreamResponse[GetUserInterestsResponse]: + def get_user_interests( + self, user_id: str, limit: Optional[int] = None + ) -> StreamResponse[GetUserInterestsResponse]: query_params = build_query_param(limit=limit) path_params = { - "user_id": user_id, + "user_id": user_id, } - return self.get("/api/v2/feeds/users/{user_id}/interests", GetUserInterestsResponse, query_params=query_params, path_params=path_params) - \ No newline at end of file + return self.get( + "/api/v2/feeds/users/{user_id}/interests", + GetUserInterestsResponse, + query_params=query_params, + path_params=path_params, + ) diff --git a/getstream/models/__init__.py b/getstream/models/__init__.py index f3b8da95..86e33507 100644 --- a/getstream/models/__init__.py +++ b/getstream/models/__init__.py @@ -13,21 +13,34 @@ @dataclass class AIAudioConfigRequest(DataClassJsonMixin): - profile: str | None = dc_field(default=None, metadata=dc_config(field_name="profile")) - rules: 'list[BodyguardRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) + profile: str | None = dc_field( + default=None, metadata=dc_config(field_name="profile") + ) + rules: "list[BodyguardRule] | None" = dc_field( + default=None, metadata=dc_config(field_name="rules") + ) + @dataclass class AIAudioConfigResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) profile: str = dc_field(metadata=dc_config(field_name="profile")) - rules: 'list[BodyguardRule]' = dc_field(metadata=dc_config(field_name="rules")) + rules: "list[BodyguardRule]" = dc_field(metadata=dc_config(field_name="rules")) + @dataclass class AIImageConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - ocr_rules: 'list[OCRRule] | None' = dc_field(default=None, metadata=dc_config(field_name="ocr_rules")) - rules: 'list[AWSRekognitionRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + ocr_rules: "list[OCRRule] | None" = dc_field( + default=None, metadata=dc_config(field_name="ocr_rules") + ) + rules: "list[AWSRekognitionRule] | None" = dc_field( + default=None, metadata=dc_config(field_name="rules") + ) + @dataclass class AIImageLabelDefinition(DataClassJsonMixin): @@ -36,33 +49,56 @@ class AIImageLabelDefinition(DataClassJsonMixin): key: str = dc_field(metadata=dc_config(field_name="key")) label: str = dc_field(metadata=dc_config(field_name="label")) + @dataclass class AITextConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - profile: str | None = dc_field(default=None, metadata=dc_config(field_name="profile")) - rules: 'list[BodyguardRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) - severity_rules: 'list[BodyguardSeverityRule] | None' = dc_field(default=None, metadata=dc_config(field_name="severity_rules")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + profile: str | None = dc_field( + default=None, metadata=dc_config(field_name="profile") + ) + rules: "list[BodyguardRule] | None" = dc_field( + default=None, metadata=dc_config(field_name="rules") + ) + severity_rules: "list[BodyguardSeverityRule] | None" = dc_field( + default=None, metadata=dc_config(field_name="severity_rules") + ) + @dataclass class AIVideoConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - provider: str | None = dc_field(default=None, metadata=dc_config(field_name="provider")) - rules: 'list[AWSRekognitionRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + provider: str | None = dc_field( + default=None, metadata=dc_config(field_name="provider") + ) + rules: "list[AWSRekognitionRule] | None" = dc_field( + default=None, metadata=dc_config(field_name="rules") + ) + @dataclass class AIVideoConfigRequest(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - rules: 'list[AWSRekognitionRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + rules: "list[AWSRekognitionRule] | None" = dc_field( + default=None, metadata=dc_config(field_name="rules") + ) + @dataclass class AIVideoConfigResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - rules: 'list[AWSRekognitionRule]' = dc_field(metadata=dc_config(field_name="rules")) + rules: "list[AWSRekognitionRule]" = dc_field(metadata=dc_config(field_name="rules")) _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) + @dataclass class APIError(DataClassJsonMixin): # API error code @@ -76,78 +112,137 @@ class APIError(DataClassJsonMixin): # Response HTTP status code status_code: int = dc_field(metadata=dc_config(field_name="StatusCode")) # Additional error-specific information - details: 'list[int]' = dc_field(metadata=dc_config(field_name="details")) + details: "list[int]" = dc_field(metadata=dc_config(field_name="details")) # Flag that indicates if the error is unrecoverable, requests that return unrecoverable errors should not be retried, this error only applies to the request that caused it - unrecoverable: bool | None = dc_field(default=None, metadata=dc_config(field_name="unrecoverable")) + unrecoverable: bool | None = dc_field( + default=None, metadata=dc_config(field_name="unrecoverable") + ) # Additional error info - exception_fields: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="exception_fields")) + exception_fields: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="exception_fields") + ) + @dataclass class APNConfig(DataClassJsonMixin): - auth_key: str | None = dc_field(default=None, metadata=dc_config(field_name="auth_key")) - auth_type: str | None = dc_field(default=None, metadata=dc_config(field_name="auth_type")) - bundle_id: str | None = dc_field(default=None, metadata=dc_config(field_name="bundle_id")) - development: bool | None = dc_field(default=None, metadata=dc_config(field_name="development")) - disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="Disabled")) + auth_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="auth_key") + ) + auth_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="auth_type") + ) + bundle_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="bundle_id") + ) + development: bool | None = dc_field( + default=None, metadata=dc_config(field_name="development") + ) + disabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="Disabled") + ) host: str | None = dc_field(default=None, metadata=dc_config(field_name="host")) key_id: str | None = dc_field(default=None, metadata=dc_config(field_name="key_id")) - notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="notification_template")) - p12_cert: str | None = dc_field(default=None, metadata=dc_config(field_name="p12_cert")) - team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="team_id")) + notification_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="notification_template") + ) + p12_cert: str | None = dc_field( + default=None, metadata=dc_config(field_name="p12_cert") + ) + team_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="team_id") + ) + @dataclass class APNConfigFields(DataClassJsonMixin): development: bool = dc_field(metadata=dc_config(field_name="development")) enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - auth_key: str | None = dc_field(default=None, metadata=dc_config(field_name="auth_key")) - auth_type: str | None = dc_field(default=None, metadata=dc_config(field_name="auth_type")) - bundle_id: str | None = dc_field(default=None, metadata=dc_config(field_name="bundle_id")) + auth_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="auth_key") + ) + auth_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="auth_type") + ) + bundle_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="bundle_id") + ) host: str | None = dc_field(default=None, metadata=dc_config(field_name="host")) key_id: str | None = dc_field(default=None, metadata=dc_config(field_name="key_id")) - notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="notification_template")) - p12_cert: str | None = dc_field(default=None, metadata=dc_config(field_name="p12_cert")) - team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="team_id")) + notification_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="notification_template") + ) + p12_cert: str | None = dc_field( + default=None, metadata=dc_config(field_name="p12_cert") + ) + team_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="team_id") + ) + @dataclass class APNS(DataClassJsonMixin): body: str = dc_field(metadata=dc_config(field_name="body")) title: str = dc_field(metadata=dc_config(field_name="title")) - content_available: int | None = dc_field(default=None, metadata=dc_config(field_name="content-available")) - mutable_content: int | None = dc_field(default=None, metadata=dc_config(field_name="mutable-content")) + content_available: int | None = dc_field( + default=None, metadata=dc_config(field_name="content-available") + ) + mutable_content: int | None = dc_field( + default=None, metadata=dc_config(field_name="mutable-content") + ) sound: str | None = dc_field(default=None, metadata=dc_config(field_name="sound")) - data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) + data: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="data") + ) + @dataclass class APNSPayload(DataClassJsonMixin): body: str | None = dc_field(default=None, metadata=dc_config(field_name="body")) - content_available: int | None = dc_field(default=None, metadata=dc_config(field_name="content-available")) - mutable_content: int | None = dc_field(default=None, metadata=dc_config(field_name="mutable-content")) + content_available: int | None = dc_field( + default=None, metadata=dc_config(field_name="content-available") + ) + mutable_content: int | None = dc_field( + default=None, metadata=dc_config(field_name="mutable-content") + ) sound: str | None = dc_field(default=None, metadata=dc_config(field_name="sound")) title: str | None = dc_field(default=None, metadata=dc_config(field_name="title")) - data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) + data: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="data") + ) + @dataclass class AWSRekognitionRule(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) label: str = dc_field(metadata=dc_config(field_name="label")) min_confidence: float = dc_field(metadata=dc_config(field_name="min_confidence")) - subclassifications: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="subclassifications")) + subclassifications: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="subclassifications") + ) + @dataclass class AbsentMetric(DataClassJsonMixin): metric: str = dc_field(metadata=dc_config(field_name="metric")) reason: str = dc_field(metadata=dc_config(field_name="reason")) + @dataclass class AcceptFeedMemberInviteRequest(DataClassJsonMixin): - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class AcceptFeedMemberInviteResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - member: 'FeedMemberResponse' = dc_field(metadata=dc_config(field_name="member")) + member: "FeedMemberResponse" = dc_field(metadata=dc_config(field_name="member")) + @dataclass class AcceptFollowRequest(DataClassJsonMixin): @@ -156,12 +251,16 @@ class AcceptFollowRequest(DataClassJsonMixin): # Fully qualified ID of the target feed target: str = dc_field(metadata=dc_config(field_name="target")) # Optional role for the follower in the follow relationship. Server-side only. Either a built-in ('feed_follower' (the default) or 'feed_member_viewer') or any role your app has defined; grants are not inspected. - follower_role: str | None = dc_field(default=None, metadata=dc_config(field_name="follower_role")) + follower_role: str | None = dc_field( + default=None, metadata=dc_config(field_name="follower_role") + ) + @dataclass class AcceptFollowResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) + follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) + @dataclass class Action(DataClassJsonMixin): @@ -171,10 +270,18 @@ class Action(DataClassJsonMixin): style: str | None = dc_field(default=None, metadata=dc_config(field_name="style")) value: str | None = dc_field(default=None, metadata=dc_config(field_name="value")) + @dataclass class ActionLogResponse(DataClassJsonMixin): # Timestamp when the action was taken - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Unique identifier of the action log id: str = dc_field(metadata=dc_config(field_name="id")) # Reason for the moderation action @@ -190,27 +297,46 @@ class ActionLogResponse(DataClassJsonMixin): ai_providers: list[str] = dc_field(metadata=dc_config(field_name="ai_providers")) # Additional metadata about the action custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - review_queue_item: 'ReviewQueueItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="review_queue_item")) + review_queue_item: "ReviewQueueItemResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="review_queue_item") + ) # User response object - target_user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="target_user")) + target_user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="target_user") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ActionSequence(DataClassJsonMixin): action: str | None = dc_field(default=None, metadata=dc_config(field_name="action")) blur: bool | None = dc_field(default=None, metadata=dc_config(field_name="blur")) - cooldown_period: int | None = dc_field(default=None, metadata=dc_config(field_name="cooldown_period")) - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - time_window: int | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) - warning: bool | None = dc_field(default=None, metadata=dc_config(field_name="warning")) - warning_text: str | None = dc_field(default=None, metadata=dc_config(field_name="warning_text")) + cooldown_period: int | None = dc_field( + default=None, metadata=dc_config(field_name="cooldown_period") + ) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + time_window: int | None = dc_field( + default=None, metadata=dc_config(field_name="time_window") + ) + warning: bool | None = dc_field( + default=None, metadata=dc_config(field_name="warning") + ) + warning_text: str | None = dc_field( + default=None, metadata=dc_config(field_name="warning_text") + ) + @dataclass class ActiveCallsBitrateStats(DataClassJsonMixin): p10: float = dc_field(metadata=dc_config(field_name="p10")) p50: float = dc_field(metadata=dc_config(field_name="p50")) + @dataclass class ActiveCallsFPSStats(DataClassJsonMixin): p05: float = dc_field(metadata=dc_config(field_name="p05")) @@ -218,65 +344,146 @@ class ActiveCallsFPSStats(DataClassJsonMixin): p50: float = dc_field(metadata=dc_config(field_name="p50")) p90: float = dc_field(metadata=dc_config(field_name="p90")) + @dataclass class ActiveCallsLatencyStats(DataClassJsonMixin): p50: float = dc_field(metadata=dc_config(field_name="p50")) p90: float = dc_field(metadata=dc_config(field_name="p90")) + @dataclass class ActiveCallsMetrics(DataClassJsonMixin): - join_call_api: 'JoinCallAPIMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="join_call_api")) - publishers: 'PublishersMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="publishers")) - subscribers: 'SubscribersMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="subscribers")) + join_call_api: "JoinCallAPIMetrics | None" = dc_field( + default=None, metadata=dc_config(field_name="join_call_api") + ) + publishers: "PublishersMetrics | None" = dc_field( + default=None, metadata=dc_config(field_name="publishers") + ) + subscribers: "SubscribersMetrics | None" = dc_field( + default=None, metadata=dc_config(field_name="subscribers") + ) + @dataclass class ActiveCallsResolutionStats(DataClassJsonMixin): p10: float = dc_field(metadata=dc_config(field_name="p10")) p50: float = dc_field(metadata=dc_config(field_name="p50")) + @dataclass class ActiveCallsSummary(DataClassJsonMixin): active_calls: int = dc_field(metadata=dc_config(field_name="active_calls")) - active_publishers: int = dc_field(metadata=dc_config(field_name="active_publishers")) - active_subscribers: int = dc_field(metadata=dc_config(field_name="active_subscribers")) + active_publishers: int = dc_field( + metadata=dc_config(field_name="active_publishers") + ) + active_subscribers: int = dc_field( + metadata=dc_config(field_name="active_subscribers") + ) participants: int = dc_field(metadata=dc_config(field_name="participants")) + @dataclass class ActivityAddedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.activity.added" in this case - type: str = dc_field(default="feeds.activity.added", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.activity.added", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ActivityDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.activity.deleted" in this case - type: str = dc_field(default="feeds.activity.deleted", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.activity.deleted", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ActivityFeedbackEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - activity_feedback: 'ActivityFeedbackEventPayload' = dc_field(metadata=dc_config(field_name="activity_feedback")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + activity_feedback: "ActivityFeedbackEventPayload" = dc_field( + metadata=dc_config(field_name="activity_feedback") + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.activity.feedback" in this case - type: str = dc_field(default="feeds.activity.feedback", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.activity.feedback", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ActivityFeedbackEventPayload(DataClassJsonMixin): @@ -285,25 +492,49 @@ class ActivityFeedbackEventPayload(DataClassJsonMixin): # The activity that received feedback activity_id: str = dc_field(metadata=dc_config(field_name="activity_id")) # When the feedback was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # When the feedback was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The feedback value (true/false) value: str = dc_field(metadata=dc_config(field_name="value")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + @dataclass class ActivityFeedbackRequest(DataClassJsonMixin): # Whether to hide this activity hide: bool | None = dc_field(default=None, metadata=dc_config(field_name="hide")) # Whether to show less content like this - show_less: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_less")) + show_less: bool | None = dc_field( + default=None, metadata=dc_config(field_name="show_less") + ) # Whether to show more content like this - show_more: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_more")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + show_more: bool | None = dc_field( + default=None, metadata=dc_config(field_name="show_more") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ActivityFeedbackResponse(DataClassJsonMixin): @@ -311,129 +542,309 @@ class ActivityFeedbackResponse(DataClassJsonMixin): activity_id: str = dc_field(metadata=dc_config(field_name="activity_id")) duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class ActivityFilterConfig(DataClassJsonMixin): # When true, activities authored by the feed owner are excluded from feed reads - exclude_owner_activities: bool | None = dc_field(default=None, metadata=dc_config(field_name="exclude_owner_activities")) + exclude_owner_activities: bool | None = dc_field( + default=None, metadata=dc_config(field_name="exclude_owner_activities") + ) + @dataclass class ActivityMarkEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.activity.marked" in this case - type: str = dc_field(default="feeds.activity.marked", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) + type: str = dc_field( + default="feeds.activity.marked", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) # Whether all activities were marked as read - mark_all_read: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_all_read")) + mark_all_read: bool | None = dc_field( + default=None, metadata=dc_config(field_name="mark_all_read") + ) # Whether all activities were marked as seen - mark_all_seen: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_all_seen")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + mark_all_seen: bool | None = dc_field( + default=None, metadata=dc_config(field_name="mark_all_seen") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The IDs of activities marked as read - mark_read: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mark_read")) + mark_read: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mark_read") + ) # The IDs of activities marked as seen - mark_seen: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mark_seen")) + mark_seen: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mark_seen") + ) # The IDs of activities marked as watched - mark_watched: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mark_watched")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + mark_watched: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mark_watched") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ActivityPinResponse(DataClassJsonMixin): # When the pin was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # ID of the feed where activity is pinned feed: str = dc_field(metadata=dc_config(field_name="feed")) # When the pin was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + @dataclass class ActivityPinnedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The ID of the feed fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - pinned_activity: 'PinActivityResponse' = dc_field(metadata=dc_config(field_name="pinned_activity")) + pinned_activity: "PinActivityResponse" = dc_field( + metadata=dc_config(field_name="pinned_activity") + ) # The type of event: "feeds.activity.pinned" in this case - type: str = dc_field(default="feeds.activity.pinned", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.activity.pinned", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ActivityProcessingConfig(DataClassJsonMixin): # When set, the LLM activity processors may only write interest tags from this list. Tags are matched literally after lower-casing and trimming, so a generic vocabulary matches more often than in-house terms. Mutually exclusive with blocked_tags. - allowed_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_tags")) + allowed_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowed_tags") + ) # Interest tags the LLM activity processors are never allowed to write. Mutually exclusive with allowed_tags. - blocked_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="blocked_tags")) + blocked_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="blocked_tags") + ) + @dataclass class ActivityProcessorConfig(DataClassJsonMixin): # Type of activity processor (required) type: str = dc_field(metadata=dc_config(field_name="type")) # Minimum number of characters the activity text must have before this processor runs. 0 (the default) disables the check. Only applies to text_interest_tags. - min_text_length: int | None = dc_field(default=None, metadata=dc_config(field_name="min_text_length")) + min_text_length: int | None = dc_field( + default=None, metadata=dc_config(field_name="min_text_length") + ) # Minimum number of words the activity text must have before this processor runs. 0 (the default) disables the check. Only applies to text_interest_tags. Words are whitespace-separated, so scripts written without word spacing (Chinese, Japanese, Thai) always count as 1 word regardless of length — use min_text_length for those. - min_word_count: int | None = dc_field(default=None, metadata=dc_config(field_name="min_word_count")) + min_word_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="min_word_count") + ) + @dataclass class ActivityReactionAddedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) + reaction: "FeedsReactionResponse" = dc_field( + metadata=dc_config(field_name="reaction") + ) # The type of event: "feeds.activity.reaction.added" in this case - type: str = dc_field(default="feeds.activity.reaction.added", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.activity.reaction.added", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ActivityReactionDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) + reaction: "FeedsReactionResponse" = dc_field( + metadata=dc_config(field_name="reaction") + ) # The type of the reaction that was removed - type: str = dc_field(default="feeds.activity.reaction.deleted", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.activity.reaction.deleted", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ActivityReactionUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) + reaction: "FeedsReactionResponse" = dc_field( + metadata=dc_config(field_name="reaction") + ) # The type of event: "feeds.activity.reaction.updated" in this case - type: str = dc_field(default="feeds.activity.reaction.updated", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.activity.reaction.updated", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ActivityRemovedFromFeedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.activity.removed_from_feed" in this case - type: str = dc_field(default="feeds.activity.removed_from_feed", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.activity.removed_from_feed", + metadata=dc_config(field_name="type"), + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ActivityRequest(DataClassJsonMixin): @@ -443,48 +854,89 @@ class ActivityRequest(DataClassJsonMixin): feeds: list[str] = dc_field(metadata=dc_config(field_name="feeds")) # Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) + copy_custom_to_notification: bool | None = dc_field( + default=None, metadata=dc_config(field_name="copy_custom_to_notification") + ) # Whether to create notification activities for mentioned users - create_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_notification_activity")) + create_notification_activity: bool | None = dc_field( + default=None, metadata=dc_config(field_name="create_notification_activity") + ) # Expiration time for the activity - expires_at: str | None = dc_field(default=None, metadata=dc_config(field_name="expires_at")) + expires_at: str | None = dc_field( + default=None, metadata=dc_config(field_name="expires_at") + ) # Optional ID for the activity id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # ID of parent activity for replies/comments - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) # ID of a poll to attach to activity - poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) + poll_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="poll_id") + ) # Controls who can add comments/replies to this activity. One of: everyone, people_i_follow, nobody - restrict_replies: str | None = dc_field(default=None, metadata=dc_config(field_name="restrict_replies")) + restrict_replies: str | None = dc_field( + default=None, metadata=dc_config(field_name="restrict_replies") + ) # Whether to skip URL enrichment for the activity - skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) + skip_enrich_url: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_enrich_url") + ) # Whether to skip push notifications - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) # Text content of the activity text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) # ID of the user creating the activity - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Visibility setting for the activity. One of: public, private, tag - visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility")) + visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="visibility") + ) # If visibility is 'tag', this is the tag name and is required - visibility_tag: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility_tag")) + visibility_tag: str | None = dc_field( + default=None, metadata=dc_config(field_name="visibility_tag") + ) # List of attachments for the activity - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) # Collections that this activity references - collection_refs: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="collection_refs")) + collection_refs: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="collection_refs") + ) # Collections to create or update as part of this request, so an activity and the collections it references can be written in one call. Their refs (name:id) are added to collection_refs automatically; you do not need to restate them, and they count toward the same per-activity collection-reference limit, which is the effective cap here. A collection that already exists has its custom data updated. Use collection_refs instead when the collection already exists and you are only referencing it, which requires no collection permissions. - collections: 'list[CollectionRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="collections")) + collections: "list[CollectionRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="collections") + ) # Tags for filtering activities - filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) + filter_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_tags") + ) # Tags for indicating user interests - interest_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="interest_tags")) + interest_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="interest_tags") + ) # List of users mentioned in the activity - mentioned_user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_user_ids")) + mentioned_user_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_user_ids") + ) # Custom data for the activity - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + location: "Location | None" = dc_field( + default=None, metadata=dc_config(field_name="location") + ) # Additional data for search indexing - search_data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="search_data")) + search_data: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="search_data") + ) + @dataclass class ActivityResponse(DataClassJsonMixin): @@ -493,7 +945,14 @@ class ActivityResponse(DataClassJsonMixin): # Number of comments on the activity comment_count: int = dc_field(metadata=dc_config(field_name="comment_count")) # When the activity was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # If this activity is hidden by this user (using activity feedback) hidden: bool = dc_field(metadata=dc_config(field_name="hidden")) # Unique identifier for the activity @@ -513,13 +972,24 @@ class ActivityResponse(DataClassJsonMixin): # Type of activity type: str = dc_field(metadata=dc_config(field_name="type")) # When the activity was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Visibility setting for the activity. One of: public, private, tag visibility: str = dc_field(metadata=dc_config(field_name="visibility")) # Media attachments for the activity - attachments: 'list[Attachment]' = dc_field(metadata=dc_config(field_name="attachments")) + attachments: "list[Attachment]" = dc_field( + metadata=dc_config(field_name="attachments") + ) # Latest 5 comments of this activity (comment replies excluded) - comments: 'list[CommentResponse]' = dc_field(metadata=dc_config(field_name="comments")) + comments: "list[CommentResponse]" = dc_field( + metadata=dc_config(field_name="comments") + ) # List of feed IDs containing this activity feeds: list[str] = dc_field(metadata=dc_config(field_name="feeds")) # Tags for filtering @@ -527,130 +997,305 @@ class ActivityResponse(DataClassJsonMixin): # Tags for user interests interest_tags: list[str] = dc_field(metadata=dc_config(field_name="interest_tags")) # Recent reactions to the activity - latest_reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="latest_reactions")) + latest_reactions: "list[FeedsReactionResponse]" = dc_field( + metadata=dc_config(field_name="latest_reactions") + ) # Users mentioned in the activity - mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) + mentioned_users: "list[UserResponse]" = dc_field( + metadata=dc_config(field_name="mentioned_users") + ) # Current user's bookmarks for this activity - own_bookmarks: 'list[BookmarkResponse]' = dc_field(metadata=dc_config(field_name="own_bookmarks")) + own_bookmarks: "list[BookmarkResponse]" = dc_field( + metadata=dc_config(field_name="own_bookmarks") + ) # Current user's reactions to this activity - own_reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) + own_reactions: "list[FeedsReactionResponse]" = dc_field( + metadata=dc_config(field_name="own_reactions") + ) # Enriched collection data referenced by this activity - collections: 'dict[str, EnrichedCollectionResponse]' = dc_field(metadata=dc_config(field_name="collections")) + collections: "dict[str, EnrichedCollectionResponse]" = dc_field( + metadata=dc_config(field_name="collections") + ) # Custom data for the activity custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Grouped reactions by type - reaction_groups: 'dict[str, FeedsReactionGroupResponse]' = dc_field(metadata=dc_config(field_name="reaction_groups")) + reaction_groups: "dict[str, FeedsReactionGroupResponse]" = dc_field( + metadata=dc_config(field_name="reaction_groups") + ) # Data for search indexing - search_data: dict[str, object] = dc_field(metadata=dc_config(field_name="search_data")) + search_data: dict[str, object] = dc_field( + metadata=dc_config(field_name="search_data") + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # When the activity was deleted - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # When the activity was last edited - edited_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="edited_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + edited_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="edited_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # When the activity will expire - expires_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expires_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + expires_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="expires_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Total count of reactions from friends on this activity - friend_reaction_count: int | None = dc_field(default=None, metadata=dc_config(field_name="friend_reaction_count")) + friend_reaction_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="friend_reaction_count") + ) # Whether this activity has been read. Only set for feed groups with notification config (track_seen/track_read enabled). - is_read: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_read")) + is_read: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_read") + ) # Whether this activity has been seen. Only set for feed groups with notification config (track_seen/track_read enabled). - is_seen: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_seen")) - is_watched: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_watched")) - moderation_action: str | None = dc_field(default=None, metadata=dc_config(field_name="moderation_action")) + is_seen: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_seen") + ) + is_watched: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_watched") + ) + moderation_action: str | None = dc_field( + default=None, metadata=dc_config(field_name="moderation_action") + ) # Which activity selector provided this activity (e.g., 'following', 'popular', 'interest'). Only set when using multiple activity selectors with ranking. - selector_source: str | None = dc_field(default=None, metadata=dc_config(field_name="selector_source")) + selector_source: str | None = dc_field( + default=None, metadata=dc_config(field_name="selector_source") + ) # Text content of the activity text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) # If visibility is 'tag', this is the tag name - visibility_tag: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility_tag")) + visibility_tag: str | None = dc_field( + default=None, metadata=dc_config(field_name="visibility_tag") + ) # Reactions from users the current user follows or has mutual follows with - friend_reactions: 'list[FeedsReactionResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="friend_reactions")) + friend_reactions: "list[FeedsReactionResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="friend_reactions") + ) # Recent shares of the activity, one entry per share (org-gated) - latest_shares: 'list[ShareResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_shares")) - current_feed: 'FeedResponse | None' = dc_field(default=None, metadata=dc_config(field_name="current_feed")) - i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) - location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) - metrics: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="metrics")) - moderation: 'ModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) - notification_context: 'NotificationContext | None' = dc_field(default=None, metadata=dc_config(field_name="notification_context")) - parent: 'ActivityResponse | None' = dc_field(default=None, metadata=dc_config(field_name="parent")) - poll: 'PollResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll")) + latest_shares: "list[ShareResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="latest_shares") + ) + current_feed: "FeedResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="current_feed") + ) + i18n: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="i18n") + ) + location: "Location | None" = dc_field( + default=None, metadata=dc_config(field_name="location") + ) + metrics: "dict[str, int] | None" = dc_field( + default=None, metadata=dc_config(field_name="metrics") + ) + moderation: "ModerationV2Response | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation") + ) + notification_context: "NotificationContext | None" = dc_field( + default=None, metadata=dc_config(field_name="notification_context") + ) + parent: "ActivityResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="parent") + ) + poll: "PollResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="poll") + ) # Variable values used at ranking time. Only included when include_score_vars is enabled in enrichment options. - score_vars: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="score_vars")) + score_vars: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="score_vars") + ) + @dataclass class ActivityRestoredEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of the event - type: str = dc_field(default="feeds.activity.restored", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.activity.restored", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ActivitySelectorConfig(DataClassJsonMixin): # Type of selector. One of: popular, proximity, following, current_feed, query, interest, follow_suggestion type: str = dc_field(metadata=dc_config(field_name="type")) # Time threshold for activity selection (string). Expected RFC3339 format (e.g., 2006-01-02T15:04:05Z07:00). Cannot be used together with cutoff_window - cutoff_time: str | None = dc_field(default=None, metadata=dc_config(field_name="cutoff_time")) + cutoff_time: str | None = dc_field( + default=None, metadata=dc_config(field_name="cutoff_time") + ) # Flexible relative time window for activity selection (e.g., '1h', '3d', '1y'). Activities older than this duration will be filtered out. Cannot be used together with cutoff_time - cutoff_window: str | None = dc_field(default=None, metadata=dc_config(field_name="cutoff_window")) + cutoff_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="cutoff_window") + ) # Minimum popularity threshold. For the 'popular' selector, omit to use the default (5); values below 1 are rejected - min_popularity: int | None = dc_field(default=None, metadata=dc_config(field_name="min_popularity")) + min_popularity: int | None = dc_field( + default=None, metadata=dc_config(field_name="min_popularity") + ) # Sort parameters for activity selection - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter for activity selection - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) - params: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="params")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + params: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="params") + ) + @dataclass class ActivitySelectorConfigResponse(DataClassJsonMixin): # Type of selector type: str = dc_field(metadata=dc_config(field_name="type")) # Time threshold for activity selection (timestamp) - cutoff_time: datetime | None = dc_field(default=None, metadata=dc_config(field_name="cutoff_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + cutoff_time: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="cutoff_time", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Flexible relative time window for activity selection (e.g., '1h', '3d', '1y') - cutoff_window: str | None = dc_field(default=None, metadata=dc_config(field_name="cutoff_window")) + cutoff_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="cutoff_window") + ) # Minimum popularity threshold. For the 'popular' selector, values below 1 are normalized to the default (5) at read time. - min_popularity: int | None = dc_field(default=None, metadata=dc_config(field_name="min_popularity")) + min_popularity: int | None = dc_field( + default=None, metadata=dc_config(field_name="min_popularity") + ) # Sort parameters for activity selection - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter for activity selection - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) # Generic params for selector-specific configuration - params: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="params")) + params: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="params") + ) + @dataclass class ActivityUnpinnedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The ID of the feed fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - pinned_activity: 'PinActivityResponse' = dc_field(metadata=dc_config(field_name="pinned_activity")) + pinned_activity: "PinActivityResponse" = dc_field( + metadata=dc_config(field_name="pinned_activity") + ) # The type of event: "feeds.activity.unpinned" in this case - type: str = dc_field(default="feeds.activity.unpinned", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.activity.unpinned", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ActivityUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of the event - type: str = dc_field(default="feeds.activity.updated", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.activity.updated", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class AddActivityRequest(DataClassJsonMixin): @@ -660,90 +1305,164 @@ class AddActivityRequest(DataClassJsonMixin): feeds: list[str] = dc_field(metadata=dc_config(field_name="feeds")) # Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) + copy_custom_to_notification: bool | None = dc_field( + default=None, metadata=dc_config(field_name="copy_custom_to_notification") + ) # Whether to create notification activities for mentioned users - create_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_notification_activity")) - create_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_users")) - enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) + create_notification_activity: bool | None = dc_field( + default=None, metadata=dc_config(field_name="create_notification_activity") + ) + create_users: bool | None = dc_field( + default=None, metadata=dc_config(field_name="create_users") + ) + enrich_own_fields: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_fields") + ) # Expiration time for the activity - expires_at: str | None = dc_field(default=None, metadata=dc_config(field_name="expires_at")) - force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) + expires_at: str | None = dc_field( + default=None, metadata=dc_config(field_name="expires_at") + ) + force_moderation: bool | None = dc_field( + default=None, metadata=dc_config(field_name="force_moderation") + ) # Optional ID for the activity id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # ID of parent activity for replies/comments - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) # ID of a poll to attach to activity - poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) + poll_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="poll_id") + ) # Controls who can add comments/replies to this activity. One of: everyone, people_i_follow, nobody - restrict_replies: str | None = dc_field(default=None, metadata=dc_config(field_name="restrict_replies")) + restrict_replies: str | None = dc_field( + default=None, metadata=dc_config(field_name="restrict_replies") + ) # Whether to skip URL enrichment for the activity - skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) + skip_enrich_url: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_enrich_url") + ) # Whether to skip push notifications - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) # Text content of the activity text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) # ID of the user creating the activity - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Visibility setting for the activity. One of: public, private, tag - visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility")) + visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="visibility") + ) # If visibility is 'tag', this is the tag name and is required - visibility_tag: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility_tag")) + visibility_tag: str | None = dc_field( + default=None, metadata=dc_config(field_name="visibility_tag") + ) # List of attachments for the activity - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) # Collections that this activity references - collection_refs: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="collection_refs")) + collection_refs: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="collection_refs") + ) # Collections to create or update as part of this request, so an activity and the collections it references can be written in one call. Their refs (name:id) are added to collection_refs automatically; you do not need to restate them, and they count toward the same per-activity collection-reference limit, which is the effective cap here. A collection that already exists has its custom data updated. Use collection_refs instead when the collection already exists and you are only referencing it, which requires no collection permissions. - collections: 'list[CollectionRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="collections")) + collections: "list[CollectionRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="collections") + ) # Tags for filtering activities - filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) + filter_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_tags") + ) # Tags for indicating user interests - interest_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="interest_tags")) + interest_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="interest_tags") + ) # List of users mentioned in the activity - mentioned_user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_user_ids")) + mentioned_user_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_user_ids") + ) # Custom data for the activity - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + location: "Location | None" = dc_field( + default=None, metadata=dc_config(field_name="location") + ) # Additional data for search indexing - search_data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="search_data")) + search_data: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="search_data") + ) + @dataclass class AddActivityResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) # Number of mention notification activities created for mentioned users - mention_notifications_created: int | None = dc_field(default=None, metadata=dc_config(field_name="mention_notifications_created")) + mention_notifications_created: int | None = dc_field( + default=None, metadata=dc_config(field_name="mention_notifications_created") + ) + @dataclass class AddBookmarkRequest(DataClassJsonMixin): # ID of the folder to add the bookmark to - folder_id: str | None = dc_field(default=None, metadata=dc_config(field_name="folder_id")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + folder_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="folder_id") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Custom data for the bookmark - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - new_folder: 'AddFolderRequest | None' = dc_field(default=None, metadata=dc_config(field_name="new_folder")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + new_folder: "AddFolderRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="new_folder") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class AddBookmarkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) + bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) + @dataclass class AddCommentBookmarkRequest(DataClassJsonMixin): # ID of the folder to add the bookmark to - folder_id: str | None = dc_field(default=None, metadata=dc_config(field_name="folder_id")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + folder_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="folder_id") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Custom data for the bookmark - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - new_folder: 'AddFolderRequest | None' = dc_field(default=None, metadata=dc_config(field_name="new_folder")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + new_folder: "AddFolderRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="new_folder") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class AddCommentBookmarkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) + bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) + @dataclass class AddCommentReactionRequest(DataClassJsonMixin): @@ -751,93 +1470,164 @@ class AddCommentReactionRequest(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) # Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) + copy_custom_to_notification: bool | None = dc_field( + default=None, metadata=dc_config(field_name="copy_custom_to_notification") + ) # Whether to create a notification activity for this reaction - create_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_notification_activity")) + create_notification_activity: bool | None = dc_field( + default=None, metadata=dc_config(field_name="create_notification_activity") + ) # Whether to enforce unique reactions per user (remove other reaction types from the user when adding this one) - enforce_unique: bool | None = dc_field(default=None, metadata=dc_config(field_name="enforce_unique")) - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + enforce_unique: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enforce_unique") + ) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Optional list of feeds to create a reference (share) activity of the commented-on activity in. The reference activity's type mirrors the reaction type. - target_feeds: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="target_feeds")) + target_feeds: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="target_feeds") + ) # Optional custom data to add to the reaction - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class AddCommentReactionResponse(DataClassJsonMixin): # Duration of the request duration: str = dc_field(metadata=dc_config(field_name="duration")) - comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) - reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) + comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) + reaction: "FeedsReactionResponse" = dc_field( + metadata=dc_config(field_name="reaction") + ) # Whether notification creation was accepted for asynchronous processing - notification_accepted: bool | None = dc_field(default=None, metadata=dc_config(field_name="notification_accepted")) + notification_accepted: bool | None = dc_field( + default=None, metadata=dc_config(field_name="notification_accepted") + ) # Deprecated. Mirrors notification_accepted; use notification_accepted for async enqueue status Deprecated: use notification_accepted # Deprecated - notification_created: bool | None = dc_field(default=None, metadata=dc_config(field_name="notification_created")) + notification_created: bool | None = dc_field( + default=None, metadata=dc_config(field_name="notification_created") + ) # ID of the async notification-creation task; poll GET /tasks/{id} for its status - notification_task_id: str | None = dc_field(default=None, metadata=dc_config(field_name="notification_task_id")) - reference_activity: 'ActivityResponse | None' = dc_field(default=None, metadata=dc_config(field_name="reference_activity")) + notification_task_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="notification_task_id") + ) + reference_activity: "ActivityResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="reference_activity") + ) + @dataclass class AddCommentRequest(DataClassJsonMixin): # Text content of the comment - comment: str | None = dc_field(default=None, metadata=dc_config(field_name="comment")) + comment: str | None = dc_field( + default=None, metadata=dc_config(field_name="comment") + ) # Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) + copy_custom_to_notification: bool | None = dc_field( + default=None, metadata=dc_config(field_name="copy_custom_to_notification") + ) # Whether to create a notification activity for this comment - create_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_notification_activity")) + create_notification_activity: bool | None = dc_field( + default=None, metadata=dc_config(field_name="create_notification_activity") + ) # If true, forces moderation to run for server-side requests. By default, server-side requests skip moderation. Client-side requests always run moderation regardless of this field. - force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) + force_moderation: bool | None = dc_field( + default=None, metadata=dc_config(field_name="force_moderation") + ) # Optional custom ID for the comment (max 255 characters). If not provided, a UUID will be generated. id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # ID of the object to comment on. Required for root comments - object_id: str | None = dc_field(default=None, metadata=dc_config(field_name="object_id")) + object_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="object_id") + ) # Type of the object to comment on. Required for root comments - object_type: str | None = dc_field(default=None, metadata=dc_config(field_name="object_type")) + object_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="object_type") + ) # ID of parent comment for replies. When provided, object_id and object_type are automatically inherited from the parent comment. - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) # Whether to skip URL enrichment for this comment - skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + skip_enrich_url: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_enrich_url") + ) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Media attachments for the reply - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) # List of users mentioned in the reply - mentioned_user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_user_ids")) + mentioned_user_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_user_ids") + ) # Custom data for the comment - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class AddCommentResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) + comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) # Number of mention notification activities created for mentioned users - mention_notifications_created: int | None = dc_field(default=None, metadata=dc_config(field_name="mention_notifications_created")) + mention_notifications_created: int | None = dc_field( + default=None, metadata=dc_config(field_name="mention_notifications_created") + ) # Whether a notification activity was successfully created - notification_created: bool | None = dc_field(default=None, metadata=dc_config(field_name="notification_created")) + notification_created: bool | None = dc_field( + default=None, metadata=dc_config(field_name="notification_created") + ) + @dataclass class AddCommentsBatchRequest(DataClassJsonMixin): # List of comments to add - comments: 'list[AddCommentRequest]' = dc_field(metadata=dc_config(field_name="comments")) + comments: "list[AddCommentRequest]" = dc_field( + metadata=dc_config(field_name="comments") + ) + @dataclass class AddCommentsBatchResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of comments added - comments: 'list[CommentResponse]' = dc_field(metadata=dc_config(field_name="comments")) + comments: "list[CommentResponse]" = dc_field( + metadata=dc_config(field_name="comments") + ) + @dataclass class AddFolderRequest(DataClassJsonMixin): # Name of the folder name: str = dc_field(metadata=dc_config(field_name="name")) # Custom data for the folder - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class AddReactionRequest(DataClassJsonMixin): @@ -845,125 +1635,230 @@ class AddReactionRequest(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) # Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) + copy_custom_to_notification: bool | None = dc_field( + default=None, metadata=dc_config(field_name="copy_custom_to_notification") + ) # Whether to create a notification activity for this reaction - create_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_notification_activity")) + create_notification_activity: bool | None = dc_field( + default=None, metadata=dc_config(field_name="create_notification_activity") + ) # Server-side only. If true, auto-creates the reacting user identified by user_id when they don't already exist. Default: false. - create_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_users")) + create_users: bool | None = dc_field( + default=None, metadata=dc_config(field_name="create_users") + ) # Whether to enforce unique reactions per user (remove other reaction types from the user when adding this one) - enforce_unique: bool | None = dc_field(default=None, metadata=dc_config(field_name="enforce_unique")) - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + enforce_unique: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enforce_unique") + ) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Optional list of feeds to create a reference (share) activity of the original activity in. The reference activity's type mirrors the reaction type. - target_feeds: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="target_feeds")) + target_feeds: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="target_feeds") + ) # Custom data for the reaction - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class AddReactionResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) - reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + reaction: "FeedsReactionResponse" = dc_field( + metadata=dc_config(field_name="reaction") + ) # Whether notification creation was accepted for asynchronous processing - notification_accepted: bool | None = dc_field(default=None, metadata=dc_config(field_name="notification_accepted")) + notification_accepted: bool | None = dc_field( + default=None, metadata=dc_config(field_name="notification_accepted") + ) # Deprecated. Mirrors notification_accepted; use notification_accepted for async enqueue status Deprecated: use notification_accepted # Deprecated - notification_created: bool | None = dc_field(default=None, metadata=dc_config(field_name="notification_created")) + notification_created: bool | None = dc_field( + default=None, metadata=dc_config(field_name="notification_created") + ) # ID of the async notification-creation task; poll GET /tasks/{id} for its status - notification_task_id: str | None = dc_field(default=None, metadata=dc_config(field_name="notification_task_id")) - reference_activity: 'ActivityResponse | None' = dc_field(default=None, metadata=dc_config(field_name="reference_activity")) + notification_task_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="notification_task_id") + ) + reference_activity: "ActivityResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="reference_activity") + ) + @dataclass class AddSegmentTargetsRequest(DataClassJsonMixin): # Target IDs target_ids: list[str] = dc_field(metadata=dc_config(field_name="target_ids")) + @dataclass class AddUserGroupMembersRequest(DataClassJsonMixin): # List of user IDs to add as members member_ids: list[str] = dc_field(metadata=dc_config(field_name="member_ids")) # Whether to add the members as group admins. Defaults to false - as_admin: bool | None = dc_field(default=None, metadata=dc_config(field_name="as_admin")) - team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="team_id")) + as_admin: bool | None = dc_field( + default=None, metadata=dc_config(field_name="as_admin") + ) + team_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="team_id") + ) + @dataclass class AddUserGroupMembersResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - user_group: 'UserGroupResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) + user_group: "UserGroupResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user_group") + ) + @dataclass class AggregatedActivityResponse(DataClassJsonMixin): # Number of activities in this aggregation activity_count: int = dc_field(metadata=dc_config(field_name="activity_count")) # When the aggregation was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Grouping identifier group: str = dc_field(metadata=dc_config(field_name="group")) # Ranking score for this aggregation score: float = dc_field(metadata=dc_config(field_name="score")) # When the aggregation was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Number of unique users in this aggregation user_count: int = dc_field(metadata=dc_config(field_name="user_count")) # Whether this activity group has been truncated due to exceeding the group size limit - user_count_truncated: bool = dc_field(metadata=dc_config(field_name="user_count_truncated")) + user_count_truncated: bool = dc_field( + metadata=dc_config(field_name="user_count_truncated") + ) # List of activities in this aggregation - activities: 'list[ActivityResponse]' = dc_field(metadata=dc_config(field_name="activities")) + activities: "list[ActivityResponse]" = dc_field( + metadata=dc_config(field_name="activities") + ) # Whether this aggregated group has been read. Only set for feed groups with notification config (track_seen/track_read enabled). - is_read: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_read")) + is_read: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_read") + ) # Whether this aggregated group has been seen. Only set for feed groups with notification config (track_seen/track_read enabled). - is_seen: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_seen")) - is_watched: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_watched")) + is_seen: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_seen") + ) + is_watched: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_watched") + ) + @dataclass class AggregationConfig(DataClassJsonMixin): # Order of member activities inside each aggregated group for non-stories feeds: created_at_desc (newest first, default) or created_at_asc (oldest first). Stories feeds ignore this and always use oldest first. - activities_sort: str | None = dc_field(default=None, metadata=dc_config(field_name="activities_sort")) + activities_sort: str | None = dc_field( + default=None, metadata=dc_config(field_name="activities_sort") + ) # Format for activity aggregation format: str | None = dc_field(default=None, metadata=dc_config(field_name="format")) # Strategy for computing aggregated group scores from member activity scores when ranking is enabled. Valid values: sum, max, avg - score_strategy: str | None = dc_field(default=None, metadata=dc_config(field_name="score_strategy")) + score_strategy: str | None = dc_field( + default=None, metadata=dc_config(field_name="score_strategy") + ) + @dataclass class AnalyzeImageField(DataClassJsonMixin): # Per-image action: keep | flag | remove. action: str | None = dc_field(default=None, metadata=dc_config(field_name="action")) # Highest confidence (0–1) across detected classifications + sub-classifications. Convenience aggregate over the nested values in `classifications`. - confidence: float | None = dc_field(default=None, metadata=dc_config(field_name="confidence")) + confidence: float | None = dc_field( + default=None, metadata=dc_config(field_name="confidence") + ) # Set when moderation couldn't be determined for this image — action is absent. error: str | None = dc_field(default=None, metadata=dc_config(field_name="error")) # Echo of `content_ids[label]` when supplied on the request; omitted otherwise. id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # Hierarchical list of L1 (parent) classifications. Each entry: `name`, `confidence` (0–1), and nested `subclassifications` (L2 leaves with their own confidence). Resolved against the app's effective taxonomy (custom taxonomy when configured, otherwise the standard Bodyguard catalogue). - classifications: 'list[Classification] | None' = dc_field(default=None, metadata=dc_config(field_name="classifications")) + classifications: "list[Classification] | None" = dc_field( + default=None, metadata=dc_config(field_name="classifications") + ) # Flat list of Bodyguard OCR text-moderation labels on the image's extracted text (e.g. VULGARITY, PII). Each entry: `name` + `severity`. Populated when BG's OCR pipeline returned non-empty results for this image. - ocr_classifications: 'list[Classification] | None' = dc_field(default=None, metadata=dc_config(field_name="ocr_classifications")) + ocr_classifications: "list[Classification] | None" = dc_field( + default=None, metadata=dc_config(field_name="ocr_classifications") + ) + @dataclass class AnalyzeRequest(DataClassJsonMixin): # When true, the response carries no verdicts (status `pending`) and per-modality results arrive via `moderation.text_analysis.complete` and `moderation.image_analysis.complete` webhooks. Image moderation runs on a background worker; text moderation runs synchronously and is then delivered via webhook. - async_response: bool | None = dc_field(default=None, metadata=dc_config(field_name="async_response")) + async_response: bool | None = dc_field( + default=None, metadata=dc_config(field_name="async_response") + ) # Moderation policy key. Optional in stateful mode, required in stateless mode. - config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) + config_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="config_key") + ) # Original timestamp when the content was produced. Used as the `published_at` timestamp on per-content log entries that surface in `matched_contents` on aggregation-rule webhooks. - content_published_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="content_published_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + content_published_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="content_published_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # ID of the user who created the content. Required with entity_type + entity_id; omit all three for stateless mode. - entity_creator_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_creator_id")) + entity_creator_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_creator_id") + ) # Caller-supplied content identifier. Required with entity_type + entity_creator_id; omit all three for stateless mode. - entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) + entity_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_id") + ) # Caller-defined entity type. Required with entity_id + entity_creator_id; omit all three for stateless mode. - entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + entity_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_type") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Optional map from a content label (either a `texts` key or an `image:` multipart label) to a caller-supplied per-instance identifier. Echoed on per-field verdicts and surfaced in `matched_contents` when an aggregation rule fires. - content_ids: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="content_ids")) + content_ids: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="content_ids") + ) # Arbitrary metadata surfaced in the dashboard. - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # Named text fields to moderate, keyed by caller label (e.g. title, description). - texts: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="texts")) + texts: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="texts") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class AnalyzeResponse(DataClassJsonMixin): @@ -971,9 +1866,14 @@ class AnalyzeResponse(DataClassJsonMixin): # `complete` (all fields screened), `partial` (mix of verdicts and per-field errors), or `pending` (async). status: str = dc_field(metadata=dc_config(field_name="status")) # Per-image moderation verdicts keyed by caller label. - images: 'dict[str, AnalyzeImageField] | None' = dc_field(default=None, metadata=dc_config(field_name="images")) + images: "dict[str, AnalyzeImageField] | None" = dc_field( + default=None, metadata=dc_config(field_name="images") + ) # Per-text-field moderation verdicts keyed by caller label. - texts: 'dict[str, AnalyzeTextField] | None' = dc_field(default=None, metadata=dc_config(field_name="texts")) + texts: "dict[str, AnalyzeTextField] | None" = dc_field( + default=None, metadata=dc_config(field_name="texts") + ) + @dataclass class AnalyzeTextField(DataClassJsonMixin): @@ -984,44 +1884,101 @@ class AnalyzeTextField(DataClassJsonMixin): # Echo of `content_ids[label]` when supplied on the request; omitted otherwise. id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # Detected language code. - language: str | None = dc_field(default=None, metadata=dc_config(field_name="language")) + language: str | None = dc_field( + default=None, metadata=dc_config(field_name="language") + ) # Aggregate severity across the field: LOW | MEDIUM | HIGH | CRITICAL. - severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) + severity: str | None = dc_field( + default=None, metadata=dc_config(field_name="severity") + ) # Flat list of detected Bodyguard text labels (e.g. INSULT, VULGARITY). Each entry carries `name` and `severity`. - classifications: 'list[Classification] | None' = dc_field(default=None, metadata=dc_config(field_name="classifications")) + classifications: "list[Classification] | None" = dc_field( + default=None, metadata=dc_config(field_name="classifications") + ) + @dataclass class AppResponseFields(DataClassJsonMixin): - allow_multi_user_devices: bool = dc_field(metadata=dc_config(field_name="allow_multi_user_devices")) - async_url_enrich_enabled: bool = dc_field(metadata=dc_config(field_name="async_url_enrich_enabled")) - auto_translation_enabled: bool = dc_field(metadata=dc_config(field_name="auto_translation_enabled")) + allow_multi_user_devices: bool = dc_field( + metadata=dc_config(field_name="allow_multi_user_devices") + ) + async_url_enrich_enabled: bool = dc_field( + metadata=dc_config(field_name="async_url_enrich_enabled") + ) + auto_translation_enabled: bool = dc_field( + metadata=dc_config(field_name="auto_translation_enabled") + ) campaign_enabled: bool = dc_field(metadata=dc_config(field_name="campaign_enabled")) - cdn_expiration_seconds: int = dc_field(metadata=dc_config(field_name="cdn_expiration_seconds")) - custom_action_handler_url: str = dc_field(metadata=dc_config(field_name="custom_action_handler_url")) - disable_auth_checks: bool = dc_field(metadata=dc_config(field_name="disable_auth_checks")) - disable_permissions_checks: bool = dc_field(metadata=dc_config(field_name="disable_permissions_checks")) - enforce_unique_usernames: str = dc_field(metadata=dc_config(field_name="enforce_unique_usernames")) - feed_audit_logs_enabled: bool = dc_field(metadata=dc_config(field_name="feed_audit_logs_enabled")) - guest_user_creation_disabled: bool = dc_field(metadata=dc_config(field_name="guest_user_creation_disabled")) + cdn_expiration_seconds: int = dc_field( + metadata=dc_config(field_name="cdn_expiration_seconds") + ) + custom_action_handler_url: str = dc_field( + metadata=dc_config(field_name="custom_action_handler_url") + ) + disable_auth_checks: bool = dc_field( + metadata=dc_config(field_name="disable_auth_checks") + ) + disable_permissions_checks: bool = dc_field( + metadata=dc_config(field_name="disable_permissions_checks") + ) + enforce_unique_usernames: str = dc_field( + metadata=dc_config(field_name="enforce_unique_usernames") + ) + feed_audit_logs_enabled: bool = dc_field( + metadata=dc_config(field_name="feed_audit_logs_enabled") + ) + guest_user_creation_disabled: bool = dc_field( + metadata=dc_config(field_name="guest_user_creation_disabled") + ) id: int = dc_field(metadata=dc_config(field_name="id")) - image_moderation_enabled: bool = dc_field(metadata=dc_config(field_name="image_moderation_enabled")) - max_aggregated_activities_length: int = dc_field(metadata=dc_config(field_name="max_aggregated_activities_length")) - member_custom_on_mentioned_users_enabled: bool = dc_field(metadata=dc_config(field_name="member_custom_on_mentioned_users_enabled")) - member_custom_on_messages_enabled: bool = dc_field(metadata=dc_config(field_name="member_custom_on_messages_enabled")) - member_custom_on_typing_events_enabled: bool = dc_field(metadata=dc_config(field_name="member_custom_on_typing_events_enabled")) - moderation_audio_call_moderation_enabled: bool = dc_field(metadata=dc_config(field_name="moderation_audio_call_moderation_enabled")) - moderation_enabled: bool = dc_field(metadata=dc_config(field_name="moderation_enabled")) - moderation_keyframe_video_enabled: bool = dc_field(metadata=dc_config(field_name="moderation_keyframe_video_enabled")) - moderation_llm_configurability_enabled: bool = dc_field(metadata=dc_config(field_name="moderation_llm_configurability_enabled")) - moderation_multitenant_blocklist_enabled: bool = dc_field(metadata=dc_config(field_name="moderation_multitenant_blocklist_enabled")) - moderation_video_call_moderation_enabled: bool = dc_field(metadata=dc_config(field_name="moderation_video_call_moderation_enabled")) - moderation_webhook_url: str = dc_field(metadata=dc_config(field_name="moderation_webhook_url")) - multi_tenant_enabled: bool = dc_field(metadata=dc_config(field_name="multi_tenant_enabled")) + image_moderation_enabled: bool = dc_field( + metadata=dc_config(field_name="image_moderation_enabled") + ) + max_aggregated_activities_length: int = dc_field( + metadata=dc_config(field_name="max_aggregated_activities_length") + ) + member_custom_on_mentioned_users_enabled: bool = dc_field( + metadata=dc_config(field_name="member_custom_on_mentioned_users_enabled") + ) + member_custom_on_messages_enabled: bool = dc_field( + metadata=dc_config(field_name="member_custom_on_messages_enabled") + ) + member_custom_on_typing_events_enabled: bool = dc_field( + metadata=dc_config(field_name="member_custom_on_typing_events_enabled") + ) + moderation_audio_call_moderation_enabled: bool = dc_field( + metadata=dc_config(field_name="moderation_audio_call_moderation_enabled") + ) + moderation_enabled: bool = dc_field( + metadata=dc_config(field_name="moderation_enabled") + ) + moderation_keyframe_video_enabled: bool = dc_field( + metadata=dc_config(field_name="moderation_keyframe_video_enabled") + ) + moderation_llm_configurability_enabled: bool = dc_field( + metadata=dc_config(field_name="moderation_llm_configurability_enabled") + ) + moderation_multitenant_blocklist_enabled: bool = dc_field( + metadata=dc_config(field_name="moderation_multitenant_blocklist_enabled") + ) + moderation_video_call_moderation_enabled: bool = dc_field( + metadata=dc_config(field_name="moderation_video_call_moderation_enabled") + ) + moderation_webhook_url: str = dc_field( + metadata=dc_config(field_name="moderation_webhook_url") + ) + multi_tenant_enabled: bool = dc_field( + metadata=dc_config(field_name="multi_tenant_enabled") + ) name: str = dc_field(metadata=dc_config(field_name="name")) organization: str = dc_field(metadata=dc_config(field_name="organization")) - permission_version: str = dc_field(metadata=dc_config(field_name="permission_version")) + permission_version: str = dc_field( + metadata=dc_config(field_name="permission_version") + ) placement: str = dc_field(metadata=dc_config(field_name="placement")) - reminders_interval: int = dc_field(metadata=dc_config(field_name="reminders_interval")) + reminders_interval: int = dc_field( + metadata=dc_config(field_name="reminders_interval") + ) sns_key: str = dc_field(metadata=dc_config(field_name="sns_key")) sns_secret: str = dc_field(metadata=dc_config(field_name="sns_secret")) sns_topic_arn: str = dc_field(metadata=dc_config(field_name="sns_topic_arn")) @@ -1029,56 +1986,163 @@ class AppResponseFields(DataClassJsonMixin): sqs_secret: str = dc_field(metadata=dc_config(field_name="sqs_secret")) sqs_url: str = dc_field(metadata=dc_config(field_name="sqs_url")) suspended: bool = dc_field(metadata=dc_config(field_name="suspended")) - suspended_explanation: str = dc_field(metadata=dc_config(field_name="suspended_explanation")) + suspended_explanation: str = dc_field( + metadata=dc_config(field_name="suspended_explanation") + ) use_hook_v2: bool = dc_field(metadata=dc_config(field_name="use_hook_v2")) - user_response_time_enabled: bool = dc_field(metadata=dc_config(field_name="user_response_time_enabled")) + user_response_time_enabled: bool = dc_field( + metadata=dc_config(field_name="user_response_time_enabled") + ) webhook_url: str = dc_field(metadata=dc_config(field_name="webhook_url")) - event_hooks: 'list[EventHook]' = dc_field(metadata=dc_config(field_name="event_hooks")) - user_search_disallowed_roles: list[str] = dc_field(metadata=dc_config(field_name="user_search_disallowed_roles")) - webhook_events: list[str] = dc_field(metadata=dc_config(field_name="webhook_events")) - call_types: 'dict[str, CallType | None]' = dc_field(metadata=dc_config(field_name="call_types")) - channel_configs: 'dict[str, ChannelConfig | None]' = dc_field(metadata=dc_config(field_name="channel_configs")) - file_upload_config: 'FileUploadConfig' = dc_field(metadata=dc_config(field_name="file_upload_config")) - grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) - image_upload_config: 'FileUploadConfig' = dc_field(metadata=dc_config(field_name="image_upload_config")) - policies: 'dict[str, list[Policy]]' = dc_field(metadata=dc_config(field_name="policies")) - push_notifications: 'PushNotificationFields' = dc_field(metadata=dc_config(field_name="push_notifications")) - before_message_send_hook_attempt_timeout_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="before_message_send_hook_attempt_timeout_ms")) - before_message_send_hook_url: str | None = dc_field(default=None, metadata=dc_config(field_name="before_message_send_hook_url")) - chat_primary_use_case: str | None = dc_field(default=None, metadata=dc_config(field_name="chat_primary_use_case")) - moderation_onboarding_complete: bool | None = dc_field(default=None, metadata=dc_config(field_name="moderation_onboarding_complete")) - moderation_s3_image_access_role_arn: str | None = dc_field(default=None, metadata=dc_config(field_name="moderation_s3_image_access_role_arn")) - revoke_tokens_issued_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="revoke_tokens_issued_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - video_primary_use_case: str | None = dc_field(default=None, metadata=dc_config(field_name="video_primary_use_case")) - allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) - geofences: 'list[GeofenceResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="geofences")) - image_moderation_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="image_moderation_labels")) - activity_metrics_config: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_metrics_config")) - datadog_info: 'DataDogInfo | None' = dc_field(default=None, metadata=dc_config(field_name="datadog_info")) - moderation_dashboard_preferences: 'ModerationDashboardPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_dashboard_preferences")) + event_hooks: "list[EventHook]" = dc_field( + metadata=dc_config(field_name="event_hooks") + ) + user_search_disallowed_roles: list[str] = dc_field( + metadata=dc_config(field_name="user_search_disallowed_roles") + ) + webhook_events: list[str] = dc_field( + metadata=dc_config(field_name="webhook_events") + ) + call_types: "dict[str, CallType | None]" = dc_field( + metadata=dc_config(field_name="call_types") + ) + channel_configs: "dict[str, ChannelConfig | None]" = dc_field( + metadata=dc_config(field_name="channel_configs") + ) + file_upload_config: "FileUploadConfig" = dc_field( + metadata=dc_config(field_name="file_upload_config") + ) + grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) + image_upload_config: "FileUploadConfig" = dc_field( + metadata=dc_config(field_name="image_upload_config") + ) + policies: "dict[str, list[Policy]]" = dc_field( + metadata=dc_config(field_name="policies") + ) + push_notifications: "PushNotificationFields" = dc_field( + metadata=dc_config(field_name="push_notifications") + ) + before_message_send_hook_attempt_timeout_ms: int | None = dc_field( + default=None, + metadata=dc_config(field_name="before_message_send_hook_attempt_timeout_ms"), + ) + before_message_send_hook_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="before_message_send_hook_url") + ) + chat_primary_use_case: str | None = dc_field( + default=None, metadata=dc_config(field_name="chat_primary_use_case") + ) + moderation_onboarding_complete: bool | None = dc_field( + default=None, metadata=dc_config(field_name="moderation_onboarding_complete") + ) + moderation_s3_image_access_role_arn: str | None = dc_field( + default=None, + metadata=dc_config(field_name="moderation_s3_image_access_role_arn"), + ) + revoke_tokens_issued_before: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="revoke_tokens_issued_before", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + video_primary_use_case: str | None = dc_field( + default=None, metadata=dc_config(field_name="video_primary_use_case") + ) + allowed_flag_reasons: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowed_flag_reasons") + ) + geofences: "list[GeofenceResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="geofences") + ) + image_moderation_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="image_moderation_labels") + ) + activity_metrics_config: "dict[str, int] | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_metrics_config") + ) + datadog_info: "DataDogInfo | None" = dc_field( + default=None, metadata=dc_config(field_name="datadog_info") + ) + moderation_dashboard_preferences: "ModerationDashboardPreferences | None" = ( + dc_field( + default=None, + metadata=dc_config(field_name="moderation_dashboard_preferences"), + ) + ) + @dataclass class AppealAcceptedEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="appeal.accepted", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - appeal: 'AppealItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="appeal")) + type: str = dc_field( + default="appeal.accepted", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + appeal: "AppealItemResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="appeal") + ) + @dataclass class AppealCreatedEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="appeal.created", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - appeal: 'AppealItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="appeal")) + type: str = dc_field( + default="appeal.created", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + appeal: "AppealItemResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="appeal") + ) + @dataclass class AppealItemResponse(DataClassJsonMixin): # Reason Text of the Appeal Item appeal_reason: str = dc_field(metadata=dc_config(field_name="appeal_reason")) # When the flag was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # ID of the entity entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) # Type of entity @@ -1087,44 +2151,104 @@ class AppealItemResponse(DataClassJsonMixin): # Status of the Appeal Item status: str = dc_field(metadata=dc_config(field_name="status")) # When the flag was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Text severity level assigned by the AI provider - ai_text_severity: str | None = dc_field(default=None, metadata=dc_config(field_name="ai_text_severity")) + ai_text_severity: str | None = dc_field( + default=None, metadata=dc_config(field_name="ai_text_severity") + ) # CID of the channel the entity belongs to, if applicable - channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) + channel_cid: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_cid") + ) # Moderation policy key that was applied - config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) + config_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="config_key") + ) # Decision Reason of the Appeal Item - decision_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="decision_reason")) + decision_reason: str | None = dc_field( + default=None, metadata=dc_config(field_name="decision_reason") + ) # Action recommended by the automated moderation system (e.g. flag, remove, shadow) - recommended_action: str | None = dc_field(default=None, metadata=dc_config(field_name="recommended_action")) + recommended_action: str | None = dc_field( + default=None, metadata=dc_config(field_name="recommended_action") + ) # ID of the review queue item linked to this appeal, if the appeal was submitted with one - review_queue_item_id: str | None = dc_field(default=None, metadata=dc_config(field_name="review_queue_item_id")) + review_queue_item_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="review_queue_item_id") + ) # Overall content severity score (1–100) - severity: int | None = dc_field(default=None, metadata=dc_config(field_name="severity")) + severity: int | None = dc_field( + default=None, metadata=dc_config(field_name="severity") + ) # Full chronological history of all moderation actions on the review queue item - actions: 'list[ActionLogResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="actions")) + actions: "list[ActionLogResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="actions") + ) # Attachments(e.g. Images) of the Appeal Item - attachments: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="attachments")) + attachments: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) # Classification labels from automated and manual review - flag_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="flag_labels")) + flag_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="flag_labels") + ) # Types of flags applied to the entity (e.g. user_report, bodyguard) - flag_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="flag_types")) + flag_types: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="flag_types") + ) # Per-provider flag records explaining why the action was taken - flags: 'list[ModerationFlagResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="flags")) - entity_content: 'ModerationPayload | None' = dc_field(default=None, metadata=dc_config(field_name="entity_content")) - moderation_action: 'ActionLogResponse | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_action")) - original_moderation_action: 'ActionLogResponse | None' = dc_field(default=None, metadata=dc_config(field_name="original_moderation_action")) + flags: "list[ModerationFlagResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="flags") + ) + entity_content: "ModerationPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="entity_content") + ) + moderation_action: "ActionLogResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation_action") + ) + original_moderation_action: "ActionLogResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="original_moderation_action") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class AppealRejectedEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="appeal.rejected", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - appeal: 'AppealItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="appeal")) + type: str = dc_field( + default="appeal.rejected", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + appeal: "AppealItemResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="appeal") + ) + @dataclass class AppealRequest(DataClassJsonMixin): @@ -1135,12 +2259,21 @@ class AppealRequest(DataClassJsonMixin): # Type of entity being appealed (e.g., message, user) entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) # ID of the review queue item (flagged message) that triggered the ban. Applicable only for user ban appeals. - review_queue_item_id: str | None = dc_field(default=None, metadata=dc_config(field_name="review_queue_item_id")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + review_queue_item_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="review_queue_item_id") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Array of Attachment URLs(e.g., images) - attachments: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="attachments")) + attachments: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class AppealResponse(DataClassJsonMixin): @@ -1148,169 +2281,473 @@ class AppealResponse(DataClassJsonMixin): appeal_id: str = dc_field(metadata=dc_config(field_name="appeal_id")) duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class AsyncBulkImageModerationEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - finished_at: datetime = dc_field(metadata=dc_config(field_name="finished_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - started_at: datetime = dc_field(metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + finished_at: datetime = dc_field( + metadata=dc_config( + field_name="finished_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + started_at: datetime = dc_field( + metadata=dc_config( + field_name="started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) url: str = dc_field(metadata=dc_config(field_name="url")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="export.bulk_image_moderation.success", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="export.bulk_image_moderation.success", + metadata=dc_config(field_name="type"), + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class AsyncExportChannelsEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - finished_at: datetime = dc_field(metadata=dc_config(field_name="finished_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - started_at: datetime = dc_field(metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + finished_at: datetime = dc_field( + metadata=dc_config( + field_name="finished_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + started_at: datetime = dc_field( + metadata=dc_config( + field_name="started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) url: str = dc_field(metadata=dc_config(field_name="url")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="export.channels.success", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="export.channels.success", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class AsyncExportErrorEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) error: str = dc_field(metadata=dc_config(field_name="error")) - finished_at: datetime = dc_field(metadata=dc_config(field_name="finished_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - started_at: datetime = dc_field(metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + finished_at: datetime = dc_field( + metadata=dc_config( + field_name="finished_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + started_at: datetime = dc_field( + metadata=dc_config( + field_name="started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="export.bulk_image_moderation.error", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="export.bulk_image_moderation.error", + metadata=dc_config(field_name="type"), + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class AsyncExportModerationLogsEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - finished_at: datetime = dc_field(metadata=dc_config(field_name="finished_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - started_at: datetime = dc_field(metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + finished_at: datetime = dc_field( + metadata=dc_config( + field_name="finished_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + started_at: datetime = dc_field( + metadata=dc_config( + field_name="started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) url: str = dc_field(metadata=dc_config(field_name="url")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="export.moderation_logs.success", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="export.moderation_logs.success", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class AsyncExportReviewQueueEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - finished_at: datetime = dc_field(metadata=dc_config(field_name="finished_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - started_at: datetime = dc_field(metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + finished_at: datetime = dc_field( + metadata=dc_config( + field_name="finished_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + started_at: datetime = dc_field( + metadata=dc_config( + field_name="started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) url: str = dc_field(metadata=dc_config(field_name="url")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="export.review_queue.success", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="export.review_queue.success", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class AsyncExportUsersEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - finished_at: datetime = dc_field(metadata=dc_config(field_name="finished_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - started_at: datetime = dc_field(metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + finished_at: datetime = dc_field( + metadata=dc_config( + field_name="finished_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + started_at: datetime = dc_field( + metadata=dc_config( + field_name="started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) url: str = dc_field(metadata=dc_config(field_name="url")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="export.users.success", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="export.users.success", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class AsyncModerationCallbackConfig(DataClassJsonMixin): mode: str | None = dc_field(default=None, metadata=dc_config(field_name="mode")) - server_url: str | None = dc_field(default=None, metadata=dc_config(field_name="server_url")) + server_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="server_url") + ) + @dataclass class AsyncModerationConfiguration(DataClassJsonMixin): - timeout_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="timeout_ms")) - callback: 'AsyncModerationCallbackConfig | None' = dc_field(default=None, metadata=dc_config(field_name="callback")) + timeout_ms: int | None = dc_field( + default=None, metadata=dc_config(field_name="timeout_ms") + ) + callback: "AsyncModerationCallbackConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="callback") + ) + @dataclass class Attachment(DataClassJsonMixin): custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - asset_url: str | None = dc_field(default=None, metadata=dc_config(field_name="asset_url")) - author_icon: str | None = dc_field(default=None, metadata=dc_config(field_name="author_icon")) - author_link: str | None = dc_field(default=None, metadata=dc_config(field_name="author_link")) - author_name: str | None = dc_field(default=None, metadata=dc_config(field_name="author_name")) + asset_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="asset_url") + ) + author_icon: str | None = dc_field( + default=None, metadata=dc_config(field_name="author_icon") + ) + author_link: str | None = dc_field( + default=None, metadata=dc_config(field_name="author_link") + ) + author_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="author_name") + ) color: str | None = dc_field(default=None, metadata=dc_config(field_name="color")) - fallback: str | None = dc_field(default=None, metadata=dc_config(field_name="fallback")) + fallback: str | None = dc_field( + default=None, metadata=dc_config(field_name="fallback") + ) footer: str | None = dc_field(default=None, metadata=dc_config(field_name="footer")) - footer_icon: str | None = dc_field(default=None, metadata=dc_config(field_name="footer_icon")) - image_url: str | None = dc_field(default=None, metadata=dc_config(field_name="image_url")) - og_scrape_url: str | None = dc_field(default=None, metadata=dc_config(field_name="og_scrape_url")) - original_height: int | None = dc_field(default=None, metadata=dc_config(field_name="original_height")) - original_width: int | None = dc_field(default=None, metadata=dc_config(field_name="original_width")) - pretext: str | None = dc_field(default=None, metadata=dc_config(field_name="pretext")) + footer_icon: str | None = dc_field( + default=None, metadata=dc_config(field_name="footer_icon") + ) + image_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="image_url") + ) + og_scrape_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="og_scrape_url") + ) + original_height: int | None = dc_field( + default=None, metadata=dc_config(field_name="original_height") + ) + original_width: int | None = dc_field( + default=None, metadata=dc_config(field_name="original_width") + ) + pretext: str | None = dc_field( + default=None, metadata=dc_config(field_name="pretext") + ) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) - thumb_url: str | None = dc_field(default=None, metadata=dc_config(field_name="thumb_url")) + thumb_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="thumb_url") + ) title: str | None = dc_field(default=None, metadata=dc_config(field_name="title")) - title_link: str | None = dc_field(default=None, metadata=dc_config(field_name="title_link")) + title_link: str | None = dc_field( + default=None, metadata=dc_config(field_name="title_link") + ) # Attachment type (e.g. image, video, url) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - actions: 'list[Action] | None' = dc_field(default=None, metadata=dc_config(field_name="actions")) - fields: 'list[Field] | None' = dc_field(default=None, metadata=dc_config(field_name="fields")) - giphy: 'Images | None' = dc_field(default=None, metadata=dc_config(field_name="giphy")) + actions: "list[Action] | None" = dc_field( + default=None, metadata=dc_config(field_name="actions") + ) + fields: "list[Field] | None" = dc_field( + default=None, metadata=dc_config(field_name="fields") + ) + giphy: "Images | None" = dc_field( + default=None, metadata=dc_config(field_name="giphy") + ) + @dataclass class Audience(DataClassJsonMixin): - avg_concurrent_viewers: int = dc_field(metadata=dc_config(field_name="avg_concurrent_viewers")) + avg_concurrent_viewers: int = dc_field( + metadata=dc_config(field_name="avg_concurrent_viewers") + ) hours_watched: float = dc_field(metadata=dc_config(field_name="hours_watched")) - peak_concurrent_viewers: int = dc_field(metadata=dc_config(field_name="peak_concurrent_viewers")) + peak_concurrent_viewers: int = dc_field( + metadata=dc_config(field_name="peak_concurrent_viewers") + ) unique_viewers: int = dc_field(metadata=dc_config(field_name="unique_viewers")) - viewer_connections: int = dc_field(metadata=dc_config(field_name="viewer_connections")) - concurrency_by_minute: 'list[ConcurrencyMinute]' = dc_field(metadata=dc_config(field_name="concurrency_by_minute")) - peak_at: str | None = dc_field(default=None, metadata=dc_config(field_name="peak_at")) - ramp_up_min_to_90pct_peak: int | None = dc_field(default=None, metadata=dc_config(field_name="ramp_up_min_to_90pct_peak")) - retention_at_90pct_mark: float | None = dc_field(default=None, metadata=dc_config(field_name="retention_at_90pct_mark")) - retention_at_midpoint: float | None = dc_field(default=None, metadata=dc_config(field_name="retention_at_midpoint")) + viewer_connections: int = dc_field( + metadata=dc_config(field_name="viewer_connections") + ) + concurrency_by_minute: "list[ConcurrencyMinute]" = dc_field( + metadata=dc_config(field_name="concurrency_by_minute") + ) + peak_at: str | None = dc_field( + default=None, metadata=dc_config(field_name="peak_at") + ) + ramp_up_min_to_90pct_peak: int | None = dc_field( + default=None, metadata=dc_config(field_name="ramp_up_min_to_90pct_peak") + ) + retention_at_90pct_mark: float | None = dc_field( + default=None, metadata=dc_config(field_name="retention_at_90pct_mark") + ) + retention_at_midpoint: float | None = dc_field( + default=None, metadata=dc_config(field_name="retention_at_midpoint") + ) shape: str | None = dc_field(default=None, metadata=dc_config(field_name="shape")) + @dataclass class AudioSettings(DataClassJsonMixin): - access_request_enabled: bool = dc_field(metadata=dc_config(field_name="access_request_enabled")) + access_request_enabled: bool = dc_field( + metadata=dc_config(field_name="access_request_enabled") + ) default_device: str = dc_field(metadata=dc_config(field_name="default_device")) - hifi_audio_enabled: bool = dc_field(metadata=dc_config(field_name="hifi_audio_enabled")) + hifi_audio_enabled: bool = dc_field( + metadata=dc_config(field_name="hifi_audio_enabled") + ) mic_default_on: bool = dc_field(metadata=dc_config(field_name="mic_default_on")) opus_dtx_enabled: bool = dc_field(metadata=dc_config(field_name="opus_dtx_enabled")) - redundant_coding_enabled: bool = dc_field(metadata=dc_config(field_name="redundant_coding_enabled")) - speaker_default_on: bool = dc_field(metadata=dc_config(field_name="speaker_default_on")) - noise_cancellation: 'NoiseCancellationSettings | None' = dc_field(default=None, metadata=dc_config(field_name="noise_cancellation")) + redundant_coding_enabled: bool = dc_field( + metadata=dc_config(field_name="redundant_coding_enabled") + ) + speaker_default_on: bool = dc_field( + metadata=dc_config(field_name="speaker_default_on") + ) + noise_cancellation: "NoiseCancellationSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="noise_cancellation") + ) + @dataclass class AudioSettingsRequest(DataClassJsonMixin): default_device: str = dc_field(metadata=dc_config(field_name="default_device")) - access_request_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="access_request_enabled")) - hifi_audio_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="hifi_audio_enabled")) - mic_default_on: bool | None = dc_field(default=None, metadata=dc_config(field_name="mic_default_on")) - opus_dtx_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="opus_dtx_enabled")) - redundant_coding_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="redundant_coding_enabled")) - speaker_default_on: bool | None = dc_field(default=None, metadata=dc_config(field_name="speaker_default_on")) - noise_cancellation: 'NoiseCancellationSettings | None' = dc_field(default=None, metadata=dc_config(field_name="noise_cancellation")) + access_request_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="access_request_enabled") + ) + hifi_audio_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hifi_audio_enabled") + ) + mic_default_on: bool | None = dc_field( + default=None, metadata=dc_config(field_name="mic_default_on") + ) + opus_dtx_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="opus_dtx_enabled") + ) + redundant_coding_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="redundant_coding_enabled") + ) + speaker_default_on: bool | None = dc_field( + default=None, metadata=dc_config(field_name="speaker_default_on") + ) + noise_cancellation: "NoiseCancellationSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="noise_cancellation") + ) + @dataclass class AudioSettingsResponse(DataClassJsonMixin): - access_request_enabled: bool = dc_field(metadata=dc_config(field_name="access_request_enabled")) + access_request_enabled: bool = dc_field( + metadata=dc_config(field_name="access_request_enabled") + ) default_device: str = dc_field(metadata=dc_config(field_name="default_device")) - hifi_audio_enabled: bool = dc_field(metadata=dc_config(field_name="hifi_audio_enabled")) + hifi_audio_enabled: bool = dc_field( + metadata=dc_config(field_name="hifi_audio_enabled") + ) mic_default_on: bool = dc_field(metadata=dc_config(field_name="mic_default_on")) opus_dtx_enabled: bool = dc_field(metadata=dc_config(field_name="opus_dtx_enabled")) - redundant_coding_enabled: bool = dc_field(metadata=dc_config(field_name="redundant_coding_enabled")) - speaker_default_on: bool = dc_field(metadata=dc_config(field_name="speaker_default_on")) - noise_cancellation: 'NoiseCancellationSettings | None' = dc_field(default=None, metadata=dc_config(field_name="noise_cancellation")) + redundant_coding_enabled: bool = dc_field( + metadata=dc_config(field_name="redundant_coding_enabled") + ) + speaker_default_on: bool = dc_field( + metadata=dc_config(field_name="speaker_default_on") + ) + noise_cancellation: "NoiseCancellationSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="noise_cancellation") + ) + @dataclass class AutomodDetailsResponse(DataClassJsonMixin): action: str | None = dc_field(default=None, metadata=dc_config(field_name="action")) - original_message_type: str | None = dc_field(default=None, metadata=dc_config(field_name="original_message_type")) - image_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="image_labels")) - message_details: 'FlagMessageDetailsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message_details")) + original_message_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="original_message_type") + ) + image_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="image_labels") + ) + message_details: "FlagMessageDetailsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message_details") + ) # Result of the message moderation - result: 'MessageModerationResult | None' = dc_field(default=None, metadata=dc_config(field_name="result")) + result: "MessageModerationResult | None" = dc_field( + default=None, metadata=dc_config(field_name="result") + ) + @dataclass class AutomodPlatformCircumventionConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - rules: 'list[AutomodRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + rules: "list[AutomodRule] | None" = dc_field( + default=None, metadata=dc_config(field_name="rules") + ) + @dataclass class AutomodRule(DataClassJsonMixin): @@ -1318,11 +2755,17 @@ class AutomodRule(DataClassJsonMixin): label: str = dc_field(metadata=dc_config(field_name="label")) threshold: float = dc_field(metadata=dc_config(field_name="threshold")) + @dataclass class AutomodSemanticFiltersConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - rules: 'list[AutomodSemanticFiltersRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + rules: "list[AutomodSemanticFiltersRule] | None" = dc_field( + default=None, metadata=dc_config(field_name="rules") + ) + @dataclass class AutomodSemanticFiltersRule(DataClassJsonMixin): @@ -1330,11 +2773,17 @@ class AutomodSemanticFiltersRule(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) threshold: float = dc_field(metadata=dc_config(field_name="threshold")) + @dataclass class AutomodToxicityConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - rules: 'list[AutomodRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + rules: "list[AutomodRule] | None" = dc_field( + default=None, metadata=dc_config(field_name="rules") + ) + @dataclass class AzureRequest(DataClassJsonMixin): @@ -1343,103 +2792,208 @@ class AzureRequest(DataClassJsonMixin): # The client id abs_client_id: str = dc_field(metadata=dc_config(field_name="abs_client_id")) # The client secret - abs_client_secret: str = dc_field(metadata=dc_config(field_name="abs_client_secret")) + abs_client_secret: str = dc_field( + metadata=dc_config(field_name="abs_client_secret") + ) # The tenant id abs_tenant_id: str = dc_field(metadata=dc_config(field_name="abs_tenant_id")) + @dataclass class BackstageSettings(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - join_ahead_time_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="join_ahead_time_seconds")) + join_ahead_time_seconds: int | None = dc_field( + default=None, metadata=dc_config(field_name="join_ahead_time_seconds") + ) + @dataclass class BackstageSettingsRequest(DataClassJsonMixin): - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - join_ahead_time_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="join_ahead_time_seconds")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + join_ahead_time_seconds: int | None = dc_field( + default=None, metadata=dc_config(field_name="join_ahead_time_seconds") + ) + @dataclass class BackstageSettingsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - join_ahead_time_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="join_ahead_time_seconds")) + join_ahead_time_seconds: int | None = dc_field( + default=None, metadata=dc_config(field_name="join_ahead_time_seconds") + ) + @dataclass class BanActionRequestPayload(DataClassJsonMixin): # Also ban user from all channels this moderator creates in the future - ban_from_future_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="ban_from_future_channels")) + ban_from_future_channels: bool | None = dc_field( + default=None, metadata=dc_config(field_name="ban_from_future_channels") + ) # Ban only from specific channel - channel_ban_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="channel_ban_only")) - channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) + channel_ban_only: bool | None = dc_field( + default=None, metadata=dc_config(field_name="channel_ban_only") + ) + channel_cid: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_cid") + ) # Message deletion mode: soft, pruning, or hard - delete_messages: str | None = dc_field(default=None, metadata=dc_config(field_name="delete_messages")) + delete_messages: str | None = dc_field( + default=None, metadata=dc_config(field_name="delete_messages") + ) # Whether to ban by IP address - ip_ban: bool | None = dc_field(default=None, metadata=dc_config(field_name="ip_ban")) + ip_ban: bool | None = dc_field( + default=None, metadata=dc_config(field_name="ip_ban") + ) # Reason for the ban reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) # Whether this is a shadow ban - shadow: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow")) + shadow: bool | None = dc_field( + default=None, metadata=dc_config(field_name="shadow") + ) # Optional: ban user directly without review item - target_user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="target_user_id")) + target_user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="target_user_id") + ) # Duration of ban in minutes - timeout: int | None = dc_field(default=None, metadata=dc_config(field_name="timeout")) + timeout: int | None = dc_field( + default=None, metadata=dc_config(field_name="timeout") + ) + @dataclass class BanInfoResponse(DataClassJsonMixin): # When the ban was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The channel this ban applies to. Empty if this is an app-wide (global) ban rather than a per-channel ban. - channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) + channel_cid: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_cid") + ) # When the ban expires - expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + expires: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="expires", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Reason for the ban reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) # Whether this is a shadow ban - shadow: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow")) - channel: 'ChannelMetadata | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + shadow: bool | None = dc_field( + default=None, metadata=dc_config(field_name="shadow") + ) + channel: "ChannelMetadata | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) # User response object - created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) + created_by: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class BanOptions(DataClassJsonMixin): - delete_messages: str | None = dc_field(default=None, metadata=dc_config(field_name="delete_messages")) - duration: int | None = dc_field(default=None, metadata=dc_config(field_name="duration")) - ip_ban: bool | None = dc_field(default=None, metadata=dc_config(field_name="ip_ban")) + delete_messages: str | None = dc_field( + default=None, metadata=dc_config(field_name="delete_messages") + ) + duration: int | None = dc_field( + default=None, metadata=dc_config(field_name="duration") + ) + ip_ban: bool | None = dc_field( + default=None, metadata=dc_config(field_name="ip_ban") + ) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - shadow_ban: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow_ban")) + shadow_ban: bool | None = dc_field( + default=None, metadata=dc_config(field_name="shadow_ban") + ) + @dataclass class BanRequest(DataClassJsonMixin): # ID of the user to ban target_user_id: str = dc_field(metadata=dc_config(field_name="target_user_id")) # ID of the user performing the ban - banned_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="banned_by_id")) + banned_by_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="banned_by_id") + ) # Channel where the ban applies - channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) - delete_messages: str | None = dc_field(default=None, metadata=dc_config(field_name="delete_messages")) + channel_cid: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_cid") + ) + delete_messages: str | None = dc_field( + default=None, metadata=dc_config(field_name="delete_messages") + ) # Whether to ban the user's IP address - ip_ban: bool | None = dc_field(default=None, metadata=dc_config(field_name="ip_ban")) + ip_ban: bool | None = dc_field( + default=None, metadata=dc_config(field_name="ip_ban") + ) # Optional explanation for the ban reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) # Whether this is a shadow ban - shadow: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow")) + shadow: bool | None = dc_field( + default=None, metadata=dc_config(field_name="shadow") + ) # Duration of the ban in minutes - timeout: int | None = dc_field(default=None, metadata=dc_config(field_name="timeout")) + timeout: int | None = dc_field( + default=None, metadata=dc_config(field_name="timeout") + ) # User request object - banned_by: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="banned_by")) + banned_by: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="banned_by") + ) + @dataclass class BanResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + expires: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="expires", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - shadow: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow")) + shadow: bool | None = dc_field( + default=None, metadata=dc_config(field_name="shadow") + ) # User response object - banned_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="banned_by")) + banned_by: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="banned_by") + ) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class BatchQueryActivityReactionsRequest(DataClassJsonMixin): @@ -1449,21 +3003,33 @@ class BatchQueryActivityReactionsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Server-side only. The user whose reactions to fetch; defaults to the authenticated user for client-side requests - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Optional filter on reaction_type or created_at - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class BatchQueryActivityReactionsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="reactions")) + reactions: "list[FeedsReactionResponse]" = dc_field( + metadata=dc_config(field_name="reactions") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class BatchQueryCommentReactionsRequest(DataClassJsonMixin): # Comment IDs to fetch the user's reactions for (max 100) @@ -1472,32 +3038,52 @@ class BatchQueryCommentReactionsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Server-side only. The user whose reactions to fetch; defaults to the authenticated user for client-side requests - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Optional filter on reaction_type or created_at - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class BatchQueryCommentReactionsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="reactions")) + reactions: "list[FeedsReactionResponse]" = dc_field( + metadata=dc_config(field_name="reactions") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class BlockActionRequestPayload(DataClassJsonMixin): # Reason for blocking reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) + @dataclass class BlockListConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - match_substring: bool | None = dc_field(default=None, metadata=dc_config(field_name="match_substring")) - rules: 'list[BlockListRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + match_substring: bool | None = dc_field( + default=None, metadata=dc_config(field_name="match_substring") + ) + rules: "list[BlockListRule] | None" = dc_field( + default=None, metadata=dc_config(field_name="rules") + ) + @dataclass class BlockListOptions(DataClassJsonMixin): @@ -1506,12 +3092,21 @@ class BlockListOptions(DataClassJsonMixin): # Blocklist name blocklist: str = dc_field(metadata=dc_config(field_name="blocklist")) + @dataclass class BlockListResponse(DataClassJsonMixin): - is_confusable_folding_enabled: bool = dc_field(metadata=dc_config(field_name="is_confusable_folding_enabled")) - is_leet_check_enabled: bool = dc_field(metadata=dc_config(field_name="is_leet_check_enabled")) - is_plural_check_enabled: bool = dc_field(metadata=dc_config(field_name="is_plural_check_enabled")) - is_substring_matching_enabled: bool = dc_field(metadata=dc_config(field_name="is_substring_matching_enabled")) + is_confusable_folding_enabled: bool = dc_field( + metadata=dc_config(field_name="is_confusable_folding_enabled") + ) + is_leet_check_enabled: bool = dc_field( + metadata=dc_config(field_name="is_leet_check_enabled") + ) + is_plural_check_enabled: bool = dc_field( + metadata=dc_config(field_name="is_plural_check_enabled") + ) + is_substring_matching_enabled: bool = dc_field( + metadata=dc_config(field_name="is_substring_matching_enabled") + ) # Block list name name: str = dc_field(metadata=dc_config(field_name="name")) # Block list type. One of: regex, domain, domain_allowlist, email, email_allowlist, word @@ -1519,12 +3114,31 @@ class BlockListResponse(DataClassJsonMixin): # List of words to block words: list[str] = dc_field(metadata=dc_config(field_name="words")) # Date/time of creation - created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) - owner_user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="owner_user_id")) + owner_user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="owner_user_id") + ) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Date/time of the last update - updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class BlockListRule(DataClassJsonMixin): @@ -1532,173 +3146,370 @@ class BlockListRule(DataClassJsonMixin): name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) + @dataclass class BlockUserRequest(DataClassJsonMixin): # the user to block user_id: str = dc_field(metadata=dc_config(field_name="user_id")) + @dataclass class BlockUserResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class BlockUsersRequest(DataClassJsonMixin): # User id to block blocked_user_id: str = dc_field(metadata=dc_config(field_name="blocked_user_id")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class BlockUsersResponse(DataClassJsonMixin): # User id who blocked another user - blocked_by_user_id: str = dc_field(metadata=dc_config(field_name="blocked_by_user_id")) + blocked_by_user_id: str = dc_field( + metadata=dc_config(field_name="blocked_by_user_id") + ) # User id who got blocked blocked_user_id: str = dc_field(metadata=dc_config(field_name="blocked_user_id")) # Timestamp when the user was blocked - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class BlockedUserEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.blocked_user" in this case - type: str = dc_field(default="call.blocked_user", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.blocked_user", metadata=dc_config(field_name="type") + ) # User response object - blocked_by_user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="blocked_by_user")) + blocked_by_user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="blocked_by_user") + ) + @dataclass class BlockedUserResponse(DataClassJsonMixin): # ID of the user who got blocked blocked_user_id: str = dc_field(metadata=dc_config(field_name="blocked_user_id")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # ID of the user who blocked another user user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # User response object - blocked_user: 'UserResponse' = dc_field(metadata=dc_config(field_name="blocked_user")) + blocked_user: "UserResponse" = dc_field( + metadata=dc_config(field_name="blocked_user") + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + @dataclass class BodyguardImageAnalysisConfig(DataClassJsonMixin): - rules: 'list[BodyguardRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) + rules: "list[BodyguardRule] | None" = dc_field( + default=None, metadata=dc_config(field_name="rules") + ) + @dataclass class BodyguardProfileSummary(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) - display_name: str | None = dc_field(default=None, metadata=dc_config(field_name="display_name")) - text_type: str | None = dc_field(default=None, metadata=dc_config(field_name="text_type")) + display_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="display_name") + ) + text_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="text_type") + ) + @dataclass class BodyguardRule(DataClassJsonMixin): label: str = dc_field(metadata=dc_config(field_name="label")) action: str | None = dc_field(default=None, metadata=dc_config(field_name="action")) - severity_rules: 'list[BodyguardSeverityRule] | None' = dc_field(default=None, metadata=dc_config(field_name="severity_rules")) + severity_rules: "list[BodyguardSeverityRule] | None" = dc_field( + default=None, metadata=dc_config(field_name="severity_rules") + ) + @dataclass class BodyguardSeverityRule(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) severity: str = dc_field(metadata=dc_config(field_name="severity")) + @dataclass class BookmarkAddedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.bookmark.added" in this case - type: str = dc_field(default="feeds.bookmark.added", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.bookmark.added", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class BookmarkDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.bookmark.deleted" in this case - type: str = dc_field(default="feeds.bookmark.deleted", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.bookmark.deleted", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class BookmarkFolderDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - bookmark_folder: 'BookmarkFolderResponse' = dc_field(metadata=dc_config(field_name="bookmark_folder")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + bookmark_folder: "BookmarkFolderResponse" = dc_field( + metadata=dc_config(field_name="bookmark_folder") + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.bookmark_folder.deleted" in this case - type: str = dc_field(default="feeds.bookmark_folder.deleted", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.bookmark_folder.deleted", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class BookmarkFolderResponse(DataClassJsonMixin): # When the folder was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Unique identifier for the folder id: str = dc_field(metadata=dc_config(field_name="id")) # Name of the folder name: str = dc_field(metadata=dc_config(field_name="name")) # When the folder was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # Custom data for the folder - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class BookmarkFolderUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - bookmark_folder: 'BookmarkFolderResponse' = dc_field(metadata=dc_config(field_name="bookmark_folder")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + bookmark_folder: "BookmarkFolderResponse" = dc_field( + metadata=dc_config(field_name="bookmark_folder") + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.bookmark_folder.updated" in this case - type: str = dc_field(default="feeds.bookmark_folder.updated", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.bookmark_folder.updated", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class BookmarkResponse(DataClassJsonMixin): # When the bookmark was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # ID of the bookmarked object object_id: str = dc_field(metadata=dc_config(field_name="object_id")) # Type of the bookmarked object (activity or comment) object_type: str = dc_field(metadata=dc_config(field_name="object_type")) # When the bookmark was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) - activity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="activity_id")) - comment: 'CommentResponse | None' = dc_field(default=None, metadata=dc_config(field_name="comment")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + activity_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="activity_id") + ) + comment: "CommentResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="comment") + ) # Custom data for the bookmark - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - folder: 'BookmarkFolderResponse | None' = dc_field(default=None, metadata=dc_config(field_name="folder")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + folder: "BookmarkFolderResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="folder") + ) + @dataclass class BookmarkUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.bookmark.updated" in this case - type: str = dc_field(default="feeds.bookmark.updated", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.bookmark.updated", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class Bound(DataClassJsonMixin): inclusive: bool = dc_field(metadata=dc_config(field_name="inclusive")) value: float = dc_field(metadata=dc_config(field_name="value")) + @dataclass class BroadcastDailyRollup(DataClassJsonMixin): broadcasts: int = dc_field(metadata=dc_config(field_name="broadcasts")) @@ -1706,26 +3517,36 @@ class BroadcastDailyRollup(DataClassJsonMixin): dead_air_s: int = dc_field(metadata=dc_config(field_name="dead_air_s")) hours_watched: float = dc_field(metadata=dc_config(field_name="hours_watched")) incident_windows: int = dc_field(metadata=dc_config(field_name="incident_windows")) - max_peak_concurrent_viewers: int = dc_field(metadata=dc_config(field_name="max_peak_concurrent_viewers")) + max_peak_concurrent_viewers: int = dc_field( + metadata=dc_config(field_name="max_peak_concurrent_viewers") + ) note: str = dc_field(metadata=dc_config(field_name="note")) schema_version: str = dc_field(metadata=dc_config(field_name="schema_version")) source_drops: int = dc_field(metadata=dc_config(field_name="source_drops")) - unique_viewers_sum: int = dc_field(metadata=dc_config(field_name="unique_viewers_sum")) - top_broadcasts: 'list[TopBroadcast]' = dc_field(metadata=dc_config(field_name="top_broadcasts")) - poor_viewers_by_cause: 'PoorByCause' = dc_field(metadata=dc_config(field_name="poor_viewers_by_cause")) + unique_viewers_sum: int = dc_field( + metadata=dc_config(field_name="unique_viewers_sum") + ) + top_broadcasts: "list[TopBroadcast]" = dc_field( + metadata=dc_config(field_name="top_broadcasts") + ) + poor_viewers_by_cause: "PoorByCause" = dc_field( + metadata=dc_config(field_name="poor_viewers_by_cause") + ) + @dataclass class BroadcastDigest(DataClassJsonMixin): schema_version: str = dc_field(metadata=dc_config(field_name="schema_version")) - audience: 'Audience' = dc_field(metadata=dc_config(field_name="audience")) - broadcast: 'BroadcastInfo' = dc_field(metadata=dc_config(field_name="broadcast")) - coverage: 'Coverage' = dc_field(metadata=dc_config(field_name="coverage")) - joins: 'Joins' = dc_field(metadata=dc_config(field_name="joins")) - poor_tail: 'PoorTail' = dc_field(metadata=dc_config(field_name="poor_tail")) - quality: 'Quality' = dc_field(metadata=dc_config(field_name="quality")) - segments: 'Segments' = dc_field(metadata=dc_config(field_name="segments")) - source: 'SourceHealth' = dc_field(metadata=dc_config(field_name="source")) - viewers: 'ViewerBehavior' = dc_field(metadata=dc_config(field_name="viewers")) + audience: "Audience" = dc_field(metadata=dc_config(field_name="audience")) + broadcast: "BroadcastInfo" = dc_field(metadata=dc_config(field_name="broadcast")) + coverage: "Coverage" = dc_field(metadata=dc_config(field_name="coverage")) + joins: "Joins" = dc_field(metadata=dc_config(field_name="joins")) + poor_tail: "PoorTail" = dc_field(metadata=dc_config(field_name="poor_tail")) + quality: "Quality" = dc_field(metadata=dc_config(field_name="quality")) + segments: "Segments" = dc_field(metadata=dc_config(field_name="segments")) + source: "SourceHealth" = dc_field(metadata=dc_config(field_name="source")) + viewers: "ViewerBehavior" = dc_field(metadata=dc_config(field_name="viewers")) + @dataclass class BroadcastInfo(DataClassJsonMixin): @@ -1737,42 +3558,72 @@ class BroadcastInfo(DataClassJsonMixin): ended_at: str = dc_field(metadata=dc_config(field_name="ended_at")) started_at: str = dc_field(metadata=dc_config(field_name="started_at")) creators: list[str] = dc_field(metadata=dc_config(field_name="creators")) - source_mode: str | None = dc_field(default=None, metadata=dc_config(field_name="source_mode")) + source_mode: str | None = dc_field( + default=None, metadata=dc_config(field_name="source_mode") + ) + @dataclass class BroadcastSegment(DataClassJsonMixin): key: str = dc_field(metadata=dc_config(field_name="key")) sessions: int = dc_field(metadata=dc_config(field_name="sessions")) - avg_quality_score: float | None = dc_field(default=None, metadata=dc_config(field_name="avg_quality_score")) - p5_quality_score: float | None = dc_field(default=None, metadata=dc_config(field_name="p5_quality_score")) - poor_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="poor_pct")) - share_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="share_pct")) - watch_share_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="watch_share_pct")) + avg_quality_score: float | None = dc_field( + default=None, metadata=dc_config(field_name="avg_quality_score") + ) + p5_quality_score: float | None = dc_field( + default=None, metadata=dc_config(field_name="p5_quality_score") + ) + poor_pct: float | None = dc_field( + default=None, metadata=dc_config(field_name="poor_pct") + ) + share_pct: float | None = dc_field( + default=None, metadata=dc_config(field_name="share_pct") + ) + watch_share_pct: float | None = dc_field( + default=None, metadata=dc_config(field_name="watch_share_pct") + ) + @dataclass class BroadcastSettings(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - hls: 'HLSSettings | None' = dc_field(default=None, metadata=dc_config(field_name="hls")) - rtmp: 'RTMPSettings | None' = dc_field(default=None, metadata=dc_config(field_name="rtmp")) + hls: "HLSSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="hls") + ) + rtmp: "RTMPSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="rtmp") + ) + @dataclass class BroadcastSettingsRequest(DataClassJsonMixin): - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - hls: 'HLSSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="hls")) - rtmp: 'RTMPSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="rtmp")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + hls: "HLSSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="hls") + ) + rtmp: "RTMPSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="rtmp") + ) + @dataclass class BroadcastSettingsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) # HLSSettings is the payload for HLS settings - hls: 'HLSSettingsResponse' = dc_field(metadata=dc_config(field_name="hls")) + hls: "HLSSettingsResponse" = dc_field(metadata=dc_config(field_name="hls")) # RTMPSettingsResponse is the payload for RTMP settings - rtmp: 'RTMPSettingsResponse' = dc_field(metadata=dc_config(field_name="rtmp")) + rtmp: "RTMPSettingsResponse" = dc_field(metadata=dc_config(field_name="rtmp")) + @dataclass class BrowserDataResponse(DataClassJsonMixin): name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - version: str | None = dc_field(default=None, metadata=dc_config(field_name="version")) + version: str | None = dc_field( + default=None, metadata=dc_config(field_name="version") + ) + @dataclass class BulkActionAppealsRequest(DataClassJsonMixin): @@ -1780,45 +3631,72 @@ class BulkActionAppealsRequest(DataClassJsonMixin): action_type: str = dc_field(metadata=dc_config(field_name="action_type")) # List of appeal UUIDs to process appeal_ids: list[str] = dc_field(metadata=dc_config(field_name="appeal_ids")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Configuration for mark reviewed action - mark_reviewed: 'MarkReviewedRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="mark_reviewed")) + mark_reviewed: "MarkReviewedRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="mark_reviewed") + ) # Configuration for rejecting an appeal - reject_appeal: 'RejectAppealRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="reject_appeal")) + reject_appeal: "RejectAppealRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="reject_appeal") + ) # Configuration for restore action. State-aware: reverses whichever of a delete, a block, or a shadow block currently applies to the content (including both a delete and a block/shadow block at once). - restore: 'RestoreActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="restore")) + restore: "RestoreActionRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="restore") + ) # Configuration for unban moderation action - unban: 'UnbanActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="unban")) + unban: "UnbanActionRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="unban") + ) # Deprecated: use restore instead — it now also reverses a block or shadow block. Configuration for unblock action. - unblock: 'UnblockActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="unblock")) + unblock: "UnblockActionRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="unblock") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class BulkActionAppealsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Appeals that could not be processed, with per-item error messages - errors: 'list[BulkAppealError]' = dc_field(metadata=dc_config(field_name="errors")) + errors: "list[BulkAppealError]" = dc_field(metadata=dc_config(field_name="errors")) # Successfully processed appeals - results: 'list[BulkAppealResult]' = dc_field(metadata=dc_config(field_name="results")) + results: "list[BulkAppealResult]" = dc_field( + metadata=dc_config(field_name="results") + ) + @dataclass class BulkAppealError(DataClassJsonMixin): appeal_id: str = dc_field(metadata=dc_config(field_name="appeal_id")) error: str = dc_field(metadata=dc_config(field_name="error")) + @dataclass class BulkAppealResult(DataClassJsonMixin): appeal_id: str = dc_field(metadata=dc_config(field_name="appeal_id")) - appeal_item: 'AppealItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="appeal_item")) + appeal_item: "AppealItemResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="appeal_item") + ) + @dataclass class BulkDeleteActionConfigRequest(DataClassJsonMixin): # UUIDs of the action configs to delete ids: list[str] = dc_field(metadata=dc_config(field_name="ids")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class BulkDeleteActionConfigResponse(DataClassJsonMixin): @@ -1826,34 +3704,50 @@ class BulkDeleteActionConfigResponse(DataClassJsonMixin): deleted: int = dc_field(metadata=dc_config(field_name="deleted")) duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class BulkImageModerationRequest(DataClassJsonMixin): # URL to CSV file containing image URLs to moderate csv_file: str = dc_field(metadata=dc_config(field_name="csv_file")) + @dataclass class BulkImageModerationResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # ID of the task for processing the bulk image moderation task_id: str = dc_field(metadata=dc_config(field_name="task_id")) + @dataclass class BulkUpsertActionConfigRequest(DataClassJsonMixin): # List of action configs to create or update - action_configs: 'list[UpsertActionConfigItem]' = dc_field(metadata=dc_config(field_name="action_configs")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + action_configs: "list[UpsertActionConfigItem]" = dc_field( + metadata=dc_config(field_name="action_configs") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class BulkUpsertActionConfigResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # The created or updated action configs in the same order as the request - action_configs: 'list[ModerationActionConfigResponse]' = dc_field(metadata=dc_config(field_name="action_configs")) + action_configs: "list[ModerationActionConfigResponse]" = dc_field( + metadata=dc_config(field_name="action_configs") + ) + @dataclass class BypassActionRequest(DataClassJsonMixin): - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + @dataclass class BypassRequest(DataClassJsonMixin): @@ -1862,85 +3756,175 @@ class BypassRequest(DataClassJsonMixin): # ID of the user to update target_user_id: str = dc_field(metadata=dc_config(field_name="target_user_id")) + @dataclass class BypassResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class CallAcceptedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.accepted" in this case type: str = dc_field(default="call.accepted", metadata=dc_config(field_name="type")) + @dataclass class CallActionOptions(DataClassJsonMixin): - duration: int | None = dc_field(default=None, metadata=dc_config(field_name="duration")) - flag_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="flag_reason")) - kick_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="kick_reason")) - mute_audio: bool | None = dc_field(default=None, metadata=dc_config(field_name="mute_audio")) - mute_video: bool | None = dc_field(default=None, metadata=dc_config(field_name="mute_video")) + duration: int | None = dc_field( + default=None, metadata=dc_config(field_name="duration") + ) + flag_reason: str | None = dc_field( + default=None, metadata=dc_config(field_name="flag_reason") + ) + kick_reason: str | None = dc_field( + default=None, metadata=dc_config(field_name="kick_reason") + ) + mute_audio: bool | None = dc_field( + default=None, metadata=dc_config(field_name="mute_audio") + ) + mute_video: bool | None = dc_field( + default=None, metadata=dc_config(field_name="mute_video") + ) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - warning_text: str | None = dc_field(default=None, metadata=dc_config(field_name="warning_text")) + warning_text: str | None = dc_field( + default=None, metadata=dc_config(field_name="warning_text") + ) + @dataclass class CallClosedCaption(DataClassJsonMixin): - end_time: datetime = dc_field(metadata=dc_config(field_name="end_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + end_time: datetime = dc_field( + metadata=dc_config( + field_name="end_time", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) id: str = dc_field(metadata=dc_config(field_name="id")) language: str = dc_field(metadata=dc_config(field_name="language")) speaker_id: str = dc_field(metadata=dc_config(field_name="speaker_id")) - start_time: datetime = dc_field(metadata=dc_config(field_name="start_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + start_time: datetime = dc_field( + metadata=dc_config( + field_name="start_time", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) text: str = dc_field(metadata=dc_config(field_name="text")) translated: bool = dc_field(metadata=dc_config(field_name="translated")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) - service: str | None = dc_field(default=None, metadata=dc_config(field_name="service")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + service: str | None = dc_field( + default=None, metadata=dc_config(field_name="service") + ) + @dataclass class CallClosedCaptionsFailedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The type of event: "call.closed_captions_failed" in this case - type: str = dc_field(default="call.closed_captions_failed", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.closed_captions_failed", metadata=dc_config(field_name="type") + ) + @dataclass class CallClosedCaptionsStartedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The type of event: "call.closed_captions_started" in this case - type: str = dc_field(default="call.closed_captions_started", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.closed_captions_started", metadata=dc_config(field_name="type") + ) + @dataclass class CallClosedCaptionsStoppedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The type of event: "call.transcription_stopped" in this case - type: str = dc_field(default="call.closed_captions_stopped", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.closed_captions_stopped", metadata=dc_config(field_name="type") + ) + @dataclass class CallCreatedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # the members added to this call - members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.created" in this case type: str = dc_field(default="call.created", metadata=dc_config(field_name="type")) + @dataclass class CallCustomPropertyParameters(DataClassJsonMixin): - operator: str | None = dc_field(default=None, metadata=dc_config(field_name="operator")) - property_key: str | None = dc_field(default=None, metadata=dc_config(field_name="property_key")) + operator: str | None = dc_field( + default=None, metadata=dc_config(field_name="operator") + ) + property_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="property_key") + ) + @dataclass class CallDTMFEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The DTMF digit (0-9, *, #, A-D) digit: str = dc_field(metadata=dc_config(field_name="digit")) # Duration of the digit press in milliseconds @@ -1948,60 +3932,118 @@ class CallDTMFEvent(DataClassJsonMixin): # Monotonically increasing sequence number for ordering DTMF events within a session seq_number: int = dc_field(metadata=dc_config(field_name="seq_number")) # When the digit press ended and was detected - timestamp: datetime = dc_field(metadata=dc_config(field_name="timestamp", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + timestamp: datetime = dc_field( + metadata=dc_config( + field_name="timestamp", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.dtmf" in this case type: str = dc_field(default="call.dtmf", metadata=dc_config(field_name="type")) + @dataclass class CallDeletedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.deleted" in this case type: str = dc_field(default="call.deleted", metadata=dc_config(field_name="type")) + @dataclass class CallDurationReport(DataClassJsonMixin): - histogram: 'list[ReportByHistogramBucket]' = dc_field(metadata=dc_config(field_name="histogram")) + histogram: "list[ReportByHistogramBucket]" = dc_field( + metadata=dc_config(field_name="histogram") + ) + @dataclass class CallDurationReportResponse(DataClassJsonMixin): - daily: 'list[DailyAggregateCallDurationReportResponse]' = dc_field(metadata=dc_config(field_name="daily")) + daily: "list[DailyAggregateCallDurationReportResponse]" = dc_field( + metadata=dc_config(field_name="daily") + ) + @dataclass class CallEndedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.ended" in this case type: str = dc_field(default="call.ended", metadata=dc_config(field_name="type")) # The reason why the call ended, if available reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) # The list of members in the call - members: 'list[MemberResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) + members: "list[MemberResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="members") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CallFrameRecordingFailedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.frame_recording_failed" in this case - type: str = dc_field(default="call.frame_recording_failed", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.frame_recording_failed", metadata=dc_config(field_name="type") + ) + @dataclass class CallFrameRecordingFrameReadyEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) # The time the frame was captured - captured_at: datetime = dc_field(metadata=dc_config(field_name="captured_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + captured_at: datetime = dc_field( + metadata=dc_config( + field_name="captured_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) @@ -2010,154 +4052,288 @@ class CallFrameRecordingFrameReadyEvent(DataClassJsonMixin): # The URL of the frame url: str = dc_field(metadata=dc_config(field_name="url")) # The users in the frame - users: 'dict[str, UserResponse]' = dc_field(metadata=dc_config(field_name="users")) + users: "dict[str, UserResponse]" = dc_field(metadata=dc_config(field_name="users")) # The type of event: "call.frame_recording_ready" in this case - type: str = dc_field(default="call.frame_recording_ready", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.frame_recording_ready", metadata=dc_config(field_name="type") + ) + @dataclass class CallFrameRecordingStartedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.frame_recording_started" in this case - type: str = dc_field(default="call.frame_recording_started", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.frame_recording_started", metadata=dc_config(field_name="type") + ) + @dataclass class CallFrameRecordingStoppedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.frame_recording_stopped" in this case - type: str = dc_field(default="call.frame_recording_stopped", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.frame_recording_stopped", metadata=dc_config(field_name="type") + ) + @dataclass class CallHLSBroadcastingFailedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The type of event: "call.hls_broadcasting_failed" in this case - type: str = dc_field(default="call.hls_broadcasting_failed", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.hls_broadcasting_failed", metadata=dc_config(field_name="type") + ) + @dataclass class CallHLSBroadcastingStartedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) hls_playlist_url: str = dc_field(metadata=dc_config(field_name="hls_playlist_url")) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.hls_broadcasting_started" in this case - type: str = dc_field(default="call.hls_broadcasting_started", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.hls_broadcasting_started", metadata=dc_config(field_name="type") + ) + @dataclass class CallHLSBroadcastingStoppedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The type of event: "call.hls_broadcasting_stopped" in this case - type: str = dc_field(default="call.hls_broadcasting_stopped", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.hls_broadcasting_stopped", metadata=dc_config(field_name="type") + ) + @dataclass class CallIngressResponse(DataClassJsonMixin): # RTMP input settings - rtmp: 'RTMPIngress' = dc_field(metadata=dc_config(field_name="rtmp")) - srt: 'SRTIngress' = dc_field(metadata=dc_config(field_name="srt")) - whip: 'WHIPIngress' = dc_field(metadata=dc_config(field_name="whip")) + rtmp: "RTMPIngress" = dc_field(metadata=dc_config(field_name="rtmp")) + srt: "SRTIngress" = dc_field(metadata=dc_config(field_name="srt")) + whip: "WHIPIngress" = dc_field(metadata=dc_config(field_name="whip")) + @dataclass class CallLevelEventPayload(DataClassJsonMixin): event_type: str = dc_field(metadata=dc_config(field_name="event_type")) timestamp: int = dc_field(metadata=dc_config(field_name="timestamp")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - payload: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="payload")) + payload: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="payload") + ) + @dataclass class CallLiveStartedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.live_started" in this case - type: str = dc_field(default="call.live_started", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.live_started", metadata=dc_config(field_name="type") + ) + @dataclass class CallMemberAddedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # the members added to this call - members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.member_added" in this case - type: str = dc_field(default="call.member_added", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.member_added", metadata=dc_config(field_name="type") + ) + @dataclass class CallMemberRemovedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # the list of member IDs removed from the call members: list[str] = dc_field(metadata=dc_config(field_name="members")) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.member_removed" in this case - type: str = dc_field(default="call.member_removed", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.member_removed", metadata=dc_config(field_name="type") + ) + @dataclass class CallMemberUpdatedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The list of members that were updated - members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.member_updated" in this case - type: str = dc_field(default="call.member_updated", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.member_updated", metadata=dc_config(field_name="type") + ) + @dataclass class CallMemberUpdatedPermissionEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The list of members that were updated - members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # The capabilities by role for this call - capabilities_by_role: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="capabilities_by_role")) + capabilities_by_role: "dict[str, list[str]]" = dc_field( + metadata=dc_config(field_name="capabilities_by_role") + ) # The type of event: "call.member_added" in this case - type: str = dc_field(default="call.member_updated_permission", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.member_updated_permission", metadata=dc_config(field_name="type") + ) + @dataclass class CallMissedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) notify_user: bool = dc_field(metadata=dc_config(field_name="notify_user")) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) # List of members who missed the call - members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.notification" in this case type: str = dc_field(default="call.missed", metadata=dc_config(field_name="type")) + @dataclass class CallModerationBlurEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The user ID whose video stream is being blurred user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # Custom data associated with the moderation action custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "call.moderation_blur" in this case - type: str = dc_field(default="call.moderation_blur", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.moderation_blur", metadata=dc_config(field_name="type") + ) + @dataclass class CallModerationWarningEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The warning message message: str = dc_field(metadata=dc_config(field_name="message")) # The user ID who is receiving the warning @@ -2165,136 +4341,286 @@ class CallModerationWarningEvent(DataClassJsonMixin): # Custom data associated with the moderation action custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "call.moderation_warning" in this case - type: str = dc_field(default="call.moderation_warning", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.moderation_warning", metadata=dc_config(field_name="type") + ) + @dataclass class CallNotificationEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) # Call members - members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.notification" in this case - type: str = dc_field(default="call.notification", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.notification", metadata=dc_config(field_name="type") + ) + @dataclass class CallParticipantCountReport(DataClassJsonMixin): - histogram: 'list[ReportByHistogramBucket]' = dc_field(metadata=dc_config(field_name="histogram")) + histogram: "list[ReportByHistogramBucket]" = dc_field( + metadata=dc_config(field_name="histogram") + ) + @dataclass class CallParticipantCountReportResponse(DataClassJsonMixin): - daily: 'list[DailyAggregateCallParticipantCountReportResponse]' = dc_field(metadata=dc_config(field_name="daily")) + daily: "list[DailyAggregateCallParticipantCountReportResponse]" = dc_field( + metadata=dc_config(field_name="daily") + ) + @dataclass class CallParticipantResponse(DataClassJsonMixin): - joined_at: datetime = dc_field(metadata=dc_config(field_name="joined_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + joined_at: datetime = dc_field( + metadata=dc_config( + field_name="joined_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) role: str = dc_field(metadata=dc_config(field_name="role")) user_session_id: str = dc_field(metadata=dc_config(field_name="user_session_id")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + @dataclass class CallParticipantTimeline(DataClassJsonMixin): severity: str = dc_field(metadata=dc_config(field_name="severity")) - timestamp: datetime = dc_field(metadata=dc_config(field_name="timestamp", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + timestamp: datetime = dc_field( + metadata=dc_config( + field_name="timestamp", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) type: str = dc_field(metadata=dc_config(field_name="type")) data: dict[str, object] = dc_field(metadata=dc_config(field_name="data")) + @dataclass class CallReactionEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - reaction: 'VideoReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + reaction: "VideoReactionResponse" = dc_field( + metadata=dc_config(field_name="reaction") + ) # The type of event: "call.reaction_new" in this case - type: str = dc_field(default="call.reaction_new", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.reaction_new", metadata=dc_config(field_name="type") + ) + @dataclass class CallRecording(DataClassJsonMixin): - end_time: datetime = dc_field(metadata=dc_config(field_name="end_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + end_time: datetime = dc_field( + metadata=dc_config( + field_name="end_time", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) filename: str = dc_field(metadata=dc_config(field_name="filename")) recording_type: str = dc_field(metadata=dc_config(field_name="recording_type")) session_id: str = dc_field(metadata=dc_config(field_name="session_id")) - start_time: datetime = dc_field(metadata=dc_config(field_name="start_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + start_time: datetime = dc_field( + metadata=dc_config( + field_name="start_time", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) url: str = dc_field(metadata=dc_config(field_name="url")) + @dataclass class CallRecordingFailedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # The type of recording recording_type: str = dc_field(metadata=dc_config(field_name="recording_type")) # The type of event: "call.recording_failed" in this case - type: str = dc_field(default="call.recording_failed", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.recording_failed", metadata=dc_config(field_name="type") + ) + @dataclass class CallRecordingReadyEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # The type of recording recording_type: str = dc_field(metadata=dc_config(field_name="recording_type")) # CallRecording represents a recording of a call. - call_recording: 'CallRecording' = dc_field(metadata=dc_config(field_name="call_recording")) + call_recording: "CallRecording" = dc_field( + metadata=dc_config(field_name="call_recording") + ) # The type of event: "call.recording_ready" in this case - type: str = dc_field(default="call.recording_ready", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.recording_ready", metadata=dc_config(field_name="type") + ) + @dataclass class CallRecordingStartedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # The type of recording recording_type: str = dc_field(metadata=dc_config(field_name="recording_type")) # The type of event: "call.recording_started" in this case - type: str = dc_field(default="call.recording_started", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.recording_started", metadata=dc_config(field_name="type") + ) + @dataclass class CallRecordingStoppedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # The type of recording recording_type: str = dc_field(metadata=dc_config(field_name="recording_type")) # The type of event: "call.recording_stopped" in this case - type: str = dc_field(default="call.recording_stopped", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.recording_stopped", metadata=dc_config(field_name="type") + ) + @dataclass class CallRejectedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.rejected" in this case type: str = dc_field(default="call.rejected", metadata=dc_config(field_name="type")) # Provides information about why the call was rejected. You can provide any value, but the Stream API and SDKs use these default values: rejected, cancel, timeout and busy reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) + @dataclass class CallReportResponse(DataClassJsonMixin): score: float = dc_field(metadata=dc_config(field_name="score")) - ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - started_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + ended_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="ended_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + started_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class CallRequest(DataClassJsonMixin): - channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) - created_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_id")) - starts_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="starts_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + channel_cid: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_cid") + ) + created_by_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="created_by_id") + ) + starts_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="starts_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) video: bool | None = dc_field(default=None, metadata=dc_config(field_name="video")) - members: 'list[MemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) + members: "list[MemberRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="members") + ) # User request object - created_by: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - settings_override: 'CallSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="settings_override")) + created_by: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + settings_override: "CallSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="settings_override") + ) + @dataclass class CallResponse(DataClassJsonMixin): @@ -2303,8 +4629,17 @@ class CallResponse(DataClassJsonMixin): # The unique identifier for a call (:) cid: str = dc_field(metadata=dc_config(field_name="cid")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - current_session_id: str = dc_field(metadata=dc_config(field_name="current_session_id")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + current_session_id: str = dc_field( + metadata=dc_config(field_name="current_session_id") + ) # Call ID id: str = dc_field(metadata=dc_config(field_name="id")) recording: bool = dc_field(metadata=dc_config(field_name="recording")) @@ -2313,259 +4648,598 @@ class CallResponse(DataClassJsonMixin): # The type of call type: str = dc_field(metadata=dc_config(field_name="type")) # Date/time of the last update - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - blocked_user_ids: list[str] = dc_field(metadata=dc_config(field_name="blocked_user_ids")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + blocked_user_ids: list[str] = dc_field( + metadata=dc_config(field_name="blocked_user_ids") + ) # User response object - created_by: 'UserResponse' = dc_field(metadata=dc_config(field_name="created_by")) + created_by: "UserResponse" = dc_field(metadata=dc_config(field_name="created_by")) # Custom data for this object custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - egress: 'EgressResponse' = dc_field(metadata=dc_config(field_name="egress")) + egress: "EgressResponse" = dc_field(metadata=dc_config(field_name="egress")) # CallIngressResponse is the payload for ingress settings - ingress: 'CallIngressResponse' = dc_field(metadata=dc_config(field_name="ingress")) - settings: 'CallSettingsResponse' = dc_field(metadata=dc_config(field_name="settings")) - channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) + ingress: "CallIngressResponse" = dc_field(metadata=dc_config(field_name="ingress")) + settings: "CallSettingsResponse" = dc_field( + metadata=dc_config(field_name="settings") + ) + channel_cid: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_cid") + ) # Date/time when the call ended - ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - join_ahead_time_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="join_ahead_time_seconds")) + ended_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="ended_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + join_ahead_time_seconds: int | None = dc_field( + default=None, metadata=dc_config(field_name="join_ahead_time_seconds") + ) # 10-digit routing number for SIP routing - routing_number: str | None = dc_field(default=None, metadata=dc_config(field_name="routing_number")) + routing_number: str | None = dc_field( + default=None, metadata=dc_config(field_name="routing_number") + ) # Date/time when the call will start - starts_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="starts_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + starts_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="starts_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - session: 'CallSessionResponse | None' = dc_field(default=None, metadata=dc_config(field_name="session")) - thumbnails: 'ThumbnailResponse | None' = dc_field(default=None, metadata=dc_config(field_name="thumbnails")) + session: "CallSessionResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="session") + ) + thumbnails: "ThumbnailResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="thumbnails") + ) + @dataclass class CallRingEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) video: bool = dc_field(metadata=dc_config(field_name="video")) # Call members - members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.notification" in this case type: str = dc_field(default="call.ring", metadata=dc_config(field_name="type")) + @dataclass class CallRtmpBroadcastFailedEvent(DataClassJsonMixin): # The unique identifier for a call (:) call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Name of the given RTMP broadcast name: str = dc_field(metadata=dc_config(field_name="name")) # The type of event: "call.rtmp_broadcast_failed" in this case - type: str = dc_field(default="call.rtmp_broadcast_failed", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.rtmp_broadcast_failed", metadata=dc_config(field_name="type") + ) + @dataclass class CallRtmpBroadcastStartedEvent(DataClassJsonMixin): # The unique identifier for a call (:) call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Name of the given RTMP broadcast name: str = dc_field(metadata=dc_config(field_name="name")) # The type of event: "call.rtmp_broadcast_started" in this case - type: str = dc_field(default="call.rtmp_broadcast_started", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.rtmp_broadcast_started", metadata=dc_config(field_name="type") + ) + @dataclass class CallRtmpBroadcastStoppedEvent(DataClassJsonMixin): # The unique identifier for a call (:) call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Name of the given RTMP broadcast name: str = dc_field(metadata=dc_config(field_name="name")) # The type of event: "call.rtmp_broadcast_stopped" in this case - type: str = dc_field(default="call.rtmp_broadcast_stopped", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.rtmp_broadcast_stopped", metadata=dc_config(field_name="type") + ) + @dataclass class CallRuleActionSequence(DataClassJsonMixin): - violation_number: int | None = dc_field(default=None, metadata=dc_config(field_name="violation_number")) - actions: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="actions")) - call_options: 'CallActionOptions | None' = dc_field(default=None, metadata=dc_config(field_name="call_options")) + violation_number: int | None = dc_field( + default=None, metadata=dc_config(field_name="violation_number") + ) + actions: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="actions") + ) + call_options: "CallActionOptions | None" = dc_field( + default=None, metadata=dc_config(field_name="call_options") + ) + @dataclass class CallSessionEndedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.session_ended" in this case - type: str = dc_field(default="call.session_ended", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.session_ended", metadata=dc_config(field_name="type") + ) + @dataclass class CallSessionParticipantCountsUpdatedEvent(DataClassJsonMixin): - anonymous_participant_count: int = dc_field(metadata=dc_config(field_name="anonymous_participant_count")) + anonymous_participant_count: int = dc_field( + metadata=dc_config(field_name="anonymous_participant_count") + ) call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) - participants_count_by_role: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="participants_count_by_role")) + participants_count_by_role: "dict[str, int]" = dc_field( + metadata=dc_config(field_name="participants_count_by_role") + ) # The type of event: "call.session_participant_count_updated" in this case - type: str = dc_field(default="call.session_participant_count_updated", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.session_participant_count_updated", + metadata=dc_config(field_name="type"), + ) + @dataclass class CallSessionParticipantJoinedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) - participant: 'CallParticipantResponse' = dc_field(metadata=dc_config(field_name="participant")) + participant: "CallParticipantResponse" = dc_field( + metadata=dc_config(field_name="participant") + ) # The type of event: "call.session_participant_joined" in this case - type: str = dc_field(default="call.session_participant_joined", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.session_participant_joined", metadata=dc_config(field_name="type") + ) + @dataclass class CallSessionParticipantLeftEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The duration participant was in the session in seconds duration_seconds: int = dc_field(metadata=dc_config(field_name="duration_seconds")) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) - participant: 'CallParticipantResponse' = dc_field(metadata=dc_config(field_name="participant")) + participant: "CallParticipantResponse" = dc_field( + metadata=dc_config(field_name="participant") + ) # The type of event: "call.session_participant_left" in this case - type: str = dc_field(default="call.session_participant_left", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.session_participant_left", metadata=dc_config(field_name="type") + ) # The reason why the participant left the session reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) + @dataclass class CallSessionResponse(DataClassJsonMixin): - anonymous_participant_count: int = dc_field(metadata=dc_config(field_name="anonymous_participant_count")) + anonymous_participant_count: int = dc_field( + metadata=dc_config(field_name="anonymous_participant_count") + ) id: str = dc_field(metadata=dc_config(field_name="id")) - participants: 'list[CallParticipantResponse]' = dc_field(metadata=dc_config(field_name="participants")) - accepted_by: 'dict[str, datetime]' = dc_field(metadata=dc_config(field_name="accepted_by", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - missed_by: 'dict[str, datetime]' = dc_field(metadata=dc_config(field_name="missed_by", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - participants_count_by_role: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="participants_count_by_role")) - rejected_by: 'dict[str, datetime]' = dc_field(metadata=dc_config(field_name="rejected_by", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - live_ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="live_ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - live_started_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="live_started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - started_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - timer_ends_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="timer_ends_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + participants: "list[CallParticipantResponse]" = dc_field( + metadata=dc_config(field_name="participants") + ) + accepted_by: "dict[str, datetime]" = dc_field( + metadata=dc_config( + field_name="accepted_by", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + missed_by: "dict[str, datetime]" = dc_field( + metadata=dc_config( + field_name="missed_by", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + participants_count_by_role: "dict[str, int]" = dc_field( + metadata=dc_config(field_name="participants_count_by_role") + ) + rejected_by: "dict[str, datetime]" = dc_field( + metadata=dc_config( + field_name="rejected_by", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + ended_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="ended_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + live_ended_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="live_ended_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + live_started_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="live_started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + started_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + timer_ends_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="timer_ends_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class CallSessionStartedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # The type of event: "call.session_started" in this case - type: str = dc_field(default="call.session_started", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.session_started", metadata=dc_config(field_name="type") + ) + @dataclass class CallSettings(DataClassJsonMixin): - audio: 'AudioSettings | None' = dc_field(default=None, metadata=dc_config(field_name="audio")) - backstage: 'BackstageSettings | None' = dc_field(default=None, metadata=dc_config(field_name="backstage")) - broadcasting: 'BroadcastSettings | None' = dc_field(default=None, metadata=dc_config(field_name="broadcasting")) - frame_recording: 'FrameRecordSettings | None' = dc_field(default=None, metadata=dc_config(field_name="frame_recording")) - geofencing: 'GeofenceSettings | None' = dc_field(default=None, metadata=dc_config(field_name="geofencing")) - individual_recording: 'IndividualRecordSettings | None' = dc_field(default=None, metadata=dc_config(field_name="individual_recording")) - ingress: 'IngressSettings | None' = dc_field(default=None, metadata=dc_config(field_name="ingress")) - limits: 'LimitsSettings | None' = dc_field(default=None, metadata=dc_config(field_name="limits")) - raw_recording: 'RawRecordSettings | None' = dc_field(default=None, metadata=dc_config(field_name="raw_recording")) - recording: 'RecordSettings | None' = dc_field(default=None, metadata=dc_config(field_name="recording")) - ring: 'RingSettings | None' = dc_field(default=None, metadata=dc_config(field_name="ring")) - screensharing: 'ScreensharingSettings | None' = dc_field(default=None, metadata=dc_config(field_name="screensharing")) - session: 'SessionSettings | None' = dc_field(default=None, metadata=dc_config(field_name="session")) - thumbnails: 'ThumbnailsSettings | None' = dc_field(default=None, metadata=dc_config(field_name="thumbnails")) - transcription: 'TranscriptionSettings | None' = dc_field(default=None, metadata=dc_config(field_name="transcription")) - video: 'VideoSettings | None' = dc_field(default=None, metadata=dc_config(field_name="video")) + audio: "AudioSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="audio") + ) + backstage: "BackstageSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="backstage") + ) + broadcasting: "BroadcastSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="broadcasting") + ) + frame_recording: "FrameRecordSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="frame_recording") + ) + geofencing: "GeofenceSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="geofencing") + ) + individual_recording: "IndividualRecordSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="individual_recording") + ) + ingress: "IngressSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="ingress") + ) + limits: "LimitsSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="limits") + ) + raw_recording: "RawRecordSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="raw_recording") + ) + recording: "RecordSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="recording") + ) + ring: "RingSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="ring") + ) + screensharing: "ScreensharingSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="screensharing") + ) + session: "SessionSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="session") + ) + thumbnails: "ThumbnailsSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="thumbnails") + ) + transcription: "TranscriptionSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="transcription") + ) + video: "VideoSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="video") + ) + @dataclass class CallSettingsRequest(DataClassJsonMixin): - audio: 'AudioSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="audio")) - backstage: 'BackstageSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="backstage")) - broadcasting: 'BroadcastSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="broadcasting")) - encryption: 'EncryptionSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="encryption")) - frame_recording: 'FrameRecordingSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="frame_recording")) - geofencing: 'GeofenceSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="geofencing")) - individual_recording: 'IndividualRecordingSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="individual_recording")) - ingress: 'IngressSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="ingress")) - limits: 'LimitsSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="limits")) - raw_recording: 'RawRecordingSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="raw_recording")) - recording: 'RecordSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="recording")) - ring: 'RingSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="ring")) - screensharing: 'ScreensharingSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="screensharing")) - session: 'SessionSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="session")) - thumbnails: 'ThumbnailsSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="thumbnails")) - transcription: 'TranscriptionSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="transcription")) - video: 'VideoSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="video")) + audio: "AudioSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="audio") + ) + backstage: "BackstageSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="backstage") + ) + broadcasting: "BroadcastSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="broadcasting") + ) + encryption: "EncryptionSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="encryption") + ) + frame_recording: "FrameRecordingSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="frame_recording") + ) + geofencing: "GeofenceSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="geofencing") + ) + individual_recording: "IndividualRecordingSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="individual_recording") + ) + ingress: "IngressSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="ingress") + ) + limits: "LimitsSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="limits") + ) + raw_recording: "RawRecordingSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="raw_recording") + ) + recording: "RecordSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="recording") + ) + ring: "RingSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="ring") + ) + screensharing: "ScreensharingSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="screensharing") + ) + session: "SessionSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="session") + ) + thumbnails: "ThumbnailsSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="thumbnails") + ) + transcription: "TranscriptionSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="transcription") + ) + video: "VideoSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="video") + ) + @dataclass class CallSettingsResponse(DataClassJsonMixin): - audio: 'AudioSettingsResponse' = dc_field(metadata=dc_config(field_name="audio")) - backstage: 'BackstageSettingsResponse' = dc_field(metadata=dc_config(field_name="backstage")) + audio: "AudioSettingsResponse" = dc_field(metadata=dc_config(field_name="audio")) + backstage: "BackstageSettingsResponse" = dc_field( + metadata=dc_config(field_name="backstage") + ) # BroadcastSettingsResponse is the payload for broadcasting settings - broadcasting: 'BroadcastSettingsResponse' = dc_field(metadata=dc_config(field_name="broadcasting")) + broadcasting: "BroadcastSettingsResponse" = dc_field( + metadata=dc_config(field_name="broadcasting") + ) # EncryptionSettings is the payload for end-to-end encryption settings - encryption: 'EncryptionSettingsResponse' = dc_field(metadata=dc_config(field_name="encryption")) - frame_recording: 'FrameRecordingSettingsResponse' = dc_field(metadata=dc_config(field_name="frame_recording")) - geofencing: 'GeofenceSettingsResponse' = dc_field(metadata=dc_config(field_name="geofencing")) - individual_recording: 'IndividualRecordingSettingsResponse' = dc_field(metadata=dc_config(field_name="individual_recording")) - limits: 'LimitsSettingsResponse' = dc_field(metadata=dc_config(field_name="limits")) - raw_recording: 'RawRecordingSettingsResponse' = dc_field(metadata=dc_config(field_name="raw_recording")) + encryption: "EncryptionSettingsResponse" = dc_field( + metadata=dc_config(field_name="encryption") + ) + frame_recording: "FrameRecordingSettingsResponse" = dc_field( + metadata=dc_config(field_name="frame_recording") + ) + geofencing: "GeofenceSettingsResponse" = dc_field( + metadata=dc_config(field_name="geofencing") + ) + individual_recording: "IndividualRecordingSettingsResponse" = dc_field( + metadata=dc_config(field_name="individual_recording") + ) + limits: "LimitsSettingsResponse" = dc_field(metadata=dc_config(field_name="limits")) + raw_recording: "RawRecordingSettingsResponse" = dc_field( + metadata=dc_config(field_name="raw_recording") + ) # RecordSettings is the payload for recording settings - recording: 'RecordSettingsResponse' = dc_field(metadata=dc_config(field_name="recording")) - ring: 'RingSettingsResponse' = dc_field(metadata=dc_config(field_name="ring")) - screensharing: 'ScreensharingSettingsResponse' = dc_field(metadata=dc_config(field_name="screensharing")) - session: 'SessionSettingsResponse' = dc_field(metadata=dc_config(field_name="session")) - thumbnails: 'ThumbnailsSettingsResponse' = dc_field(metadata=dc_config(field_name="thumbnails")) - transcription: 'TranscriptionSettingsResponse' = dc_field(metadata=dc_config(field_name="transcription")) - video: 'VideoSettingsResponse' = dc_field(metadata=dc_config(field_name="video")) - ingress: 'IngressSettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="ingress")) + recording: "RecordSettingsResponse" = dc_field( + metadata=dc_config(field_name="recording") + ) + ring: "RingSettingsResponse" = dc_field(metadata=dc_config(field_name="ring")) + screensharing: "ScreensharingSettingsResponse" = dc_field( + metadata=dc_config(field_name="screensharing") + ) + session: "SessionSettingsResponse" = dc_field( + metadata=dc_config(field_name="session") + ) + thumbnails: "ThumbnailsSettingsResponse" = dc_field( + metadata=dc_config(field_name="thumbnails") + ) + transcription: "TranscriptionSettingsResponse" = dc_field( + metadata=dc_config(field_name="transcription") + ) + video: "VideoSettingsResponse" = dc_field(metadata=dc_config(field_name="video")) + ingress: "IngressSettingsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="ingress") + ) + @dataclass class CallStateResponseFields(DataClassJsonMixin): # List of call members - members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) - own_capabilities: 'list[OwnCapability]' = dc_field(metadata=dc_config(field_name="own_capabilities")) + members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) + own_capabilities: "list[OwnCapability]" = dc_field( + metadata=dc_config(field_name="own_capabilities") + ) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + @dataclass class CallStatsLocation(DataClassJsonMixin): - accuracy_radius_meters: int | None = dc_field(default=None, metadata=dc_config(field_name="accuracy_radius_meters")) + accuracy_radius_meters: int | None = dc_field( + default=None, metadata=dc_config(field_name="accuracy_radius_meters") + ) city: str | None = dc_field(default=None, metadata=dc_config(field_name="city")) - continent: str | None = dc_field(default=None, metadata=dc_config(field_name="continent")) - country: str | None = dc_field(default=None, metadata=dc_config(field_name="country")) - country_iso_code: str | None = dc_field(default=None, metadata=dc_config(field_name="country_iso_code")) - latitude: float | None = dc_field(default=None, metadata=dc_config(field_name="latitude")) - longitude: float | None = dc_field(default=None, metadata=dc_config(field_name="longitude")) - subdivision: str | None = dc_field(default=None, metadata=dc_config(field_name="subdivision")) + continent: str | None = dc_field( + default=None, metadata=dc_config(field_name="continent") + ) + country: str | None = dc_field( + default=None, metadata=dc_config(field_name="country") + ) + country_iso_code: str | None = dc_field( + default=None, metadata=dc_config(field_name="country_iso_code") + ) + latitude: float | None = dc_field( + default=None, metadata=dc_config(field_name="latitude") + ) + longitude: float | None = dc_field( + default=None, metadata=dc_config(field_name="longitude") + ) + subdivision: str | None = dc_field( + default=None, metadata=dc_config(field_name="subdivision") + ) + @dataclass class CallStatsMapLocation(DataClassJsonMixin): count: int = dc_field(metadata=dc_config(field_name="count")) live_count: int = dc_field(metadata=dc_config(field_name="live_count")) - location: 'CallStatsLocation | None' = dc_field(default=None, metadata=dc_config(field_name="location")) + location: "CallStatsLocation | None" = dc_field( + default=None, metadata=dc_config(field_name="location") + ) + @dataclass class CallStatsMapPublisher(DataClassJsonMixin): is_live: bool = dc_field(metadata=dc_config(field_name="is_live")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) user_session_id: str = dc_field(metadata=dc_config(field_name="user_session_id")) - published_tracks: 'PublishedTrackFlags' = dc_field(metadata=dc_config(field_name="published_tracks")) + published_tracks: "PublishedTrackFlags" = dc_field( + metadata=dc_config(field_name="published_tracks") + ) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - publisher_type: str | None = dc_field(default=None, metadata=dc_config(field_name="publisher_type")) - location: 'CallStatsLocation | None' = dc_field(default=None, metadata=dc_config(field_name="location")) + publisher_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="publisher_type") + ) + location: "CallStatsLocation | None" = dc_field( + default=None, metadata=dc_config(field_name="location") + ) + @dataclass class CallStatsMapPublishers(DataClassJsonMixin): - publishers: 'list[CallStatsMapPublisher]' = dc_field(metadata=dc_config(field_name="publishers")) + publishers: "list[CallStatsMapPublisher]" = dc_field( + metadata=dc_config(field_name="publishers") + ) + @dataclass class CallStatsMapSFUs(DataClassJsonMixin): - locations: 'list[SFULocationResponse]' = dc_field(metadata=dc_config(field_name="locations")) + locations: "list[SFULocationResponse]" = dc_field( + metadata=dc_config(field_name="locations") + ) + @dataclass class CallStatsMapSubscriber(DataClassJsonMixin): @@ -2573,362 +5247,871 @@ class CallStatsMapSubscriber(DataClassJsonMixin): user_id: str = dc_field(metadata=dc_config(field_name="user_id")) user_session_id: str = dc_field(metadata=dc_config(field_name="user_session_id")) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - location: 'CallStatsLocation | None' = dc_field(default=None, metadata=dc_config(field_name="location")) + location: "CallStatsLocation | None" = dc_field( + default=None, metadata=dc_config(field_name="location") + ) + @dataclass class CallStatsMapSubscribers(DataClassJsonMixin): - locations: 'list[CallStatsMapLocation]' = dc_field(metadata=dc_config(field_name="locations")) - participants: 'list[CallStatsMapSubscriber] | None' = dc_field(default=None, metadata=dc_config(field_name="participants")) + locations: "list[CallStatsMapLocation]" = dc_field( + metadata=dc_config(field_name="locations") + ) + participants: "list[CallStatsMapSubscriber] | None" = dc_field( + default=None, metadata=dc_config(field_name="participants") + ) + @dataclass class CallStatsParticipant(DataClassJsonMixin): user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - sessions: 'list[CallStatsParticipantSession]' = dc_field(metadata=dc_config(field_name="sessions")) - latest_activity_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="latest_activity_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + sessions: "list[CallStatsParticipantSession]" = dc_field( + metadata=dc_config(field_name="sessions") + ) + latest_activity_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="latest_activity_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - roles: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="roles")) + roles: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="roles") + ) + @dataclass class CallStatsParticipantCounts(DataClassJsonMixin): live_sessions: int = dc_field(metadata=dc_config(field_name="live_sessions")) participants: int = dc_field(metadata=dc_config(field_name="participants")) - peak_concurrent_sessions: int = dc_field(metadata=dc_config(field_name="peak_concurrent_sessions")) - peak_concurrent_users: int = dc_field(metadata=dc_config(field_name="peak_concurrent_users")) + peak_concurrent_sessions: int = dc_field( + metadata=dc_config(field_name="peak_concurrent_sessions") + ) + peak_concurrent_users: int = dc_field( + metadata=dc_config(field_name="peak_concurrent_users") + ) publishers: int = dc_field(metadata=dc_config(field_name="publishers")) sessions: int = dc_field(metadata=dc_config(field_name="sessions")) sfus_used: int = dc_field(metadata=dc_config(field_name="sfus_used")) - average_jitter_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="average_jitter_ms")) - average_latency_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="average_latency_ms")) - avg_user_rating: float | None = dc_field(default=None, metadata=dc_config(field_name="avg_user_rating")) - call_event_count: int | None = dc_field(default=None, metadata=dc_config(field_name="call_event_count")) - cq_score: int | None = dc_field(default=None, metadata=dc_config(field_name="cq_score")) - max_freezes_duration_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="max_freezes_duration_ms")) - min_user_rating: int | None = dc_field(default=None, metadata=dc_config(field_name="min_user_rating")) - total_participant_duration: int | None = dc_field(default=None, metadata=dc_config(field_name="total_participant_duration")) + average_jitter_ms: int | None = dc_field( + default=None, metadata=dc_config(field_name="average_jitter_ms") + ) + average_latency_ms: int | None = dc_field( + default=None, metadata=dc_config(field_name="average_latency_ms") + ) + avg_user_rating: float | None = dc_field( + default=None, metadata=dc_config(field_name="avg_user_rating") + ) + call_event_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="call_event_count") + ) + cq_score: int | None = dc_field( + default=None, metadata=dc_config(field_name="cq_score") + ) + max_freezes_duration_ms: int | None = dc_field( + default=None, metadata=dc_config(field_name="max_freezes_duration_ms") + ) + min_user_rating: int | None = dc_field( + default=None, metadata=dc_config(field_name="min_user_rating") + ) + total_participant_duration: int | None = dc_field( + default=None, metadata=dc_config(field_name="total_participant_duration") + ) + @dataclass class CallStatsParticipantSession(DataClassJsonMixin): is_live: bool = dc_field(metadata=dc_config(field_name="is_live")) user_session_id: str = dc_field(metadata=dc_config(field_name="user_session_id")) - published_tracks: 'PublishedTrackFlags' = dc_field(metadata=dc_config(field_name="published_tracks")) - browser: str | None = dc_field(default=None, metadata=dc_config(field_name="browser")) - browser_version: str | None = dc_field(default=None, metadata=dc_config(field_name="browser_version")) - cq_score: int | None = dc_field(default=None, metadata=dc_config(field_name="cq_score")) - current_ip: str | None = dc_field(default=None, metadata=dc_config(field_name="current_ip")) - current_sfu: str | None = dc_field(default=None, metadata=dc_config(field_name="current_sfu")) - distance_to_sfu_kilometers: float | None = dc_field(default=None, metadata=dc_config(field_name="distance_to_sfu_kilometers")) - ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - freezes_duration_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="freezes_duration_ms")) - ingress: str | None = dc_field(default=None, metadata=dc_config(field_name="ingress")) - jitter_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="jitter_ms")) - latency_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="latency_ms")) + published_tracks: "PublishedTrackFlags" = dc_field( + metadata=dc_config(field_name="published_tracks") + ) + browser: str | None = dc_field( + default=None, metadata=dc_config(field_name="browser") + ) + browser_version: str | None = dc_field( + default=None, metadata=dc_config(field_name="browser_version") + ) + cq_score: int | None = dc_field( + default=None, metadata=dc_config(field_name="cq_score") + ) + current_ip: str | None = dc_field( + default=None, metadata=dc_config(field_name="current_ip") + ) + current_sfu: str | None = dc_field( + default=None, metadata=dc_config(field_name="current_sfu") + ) + distance_to_sfu_kilometers: float | None = dc_field( + default=None, metadata=dc_config(field_name="distance_to_sfu_kilometers") + ) + ended_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="ended_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + freezes_duration_ms: int | None = dc_field( + default=None, metadata=dc_config(field_name="freezes_duration_ms") + ) + ingress: str | None = dc_field( + default=None, metadata=dc_config(field_name="ingress") + ) + jitter_ms: int | None = dc_field( + default=None, metadata=dc_config(field_name="jitter_ms") + ) + latency_ms: int | None = dc_field( + default=None, metadata=dc_config(field_name="latency_ms") + ) os: str | None = dc_field(default=None, metadata=dc_config(field_name="os")) - publisher_type: str | None = dc_field(default=None, metadata=dc_config(field_name="publisher_type")) + publisher_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="publisher_type") + ) sdk: str | None = dc_field(default=None, metadata=dc_config(field_name="sdk")) - sdk_version: str | None = dc_field(default=None, metadata=dc_config(field_name="sdk_version")) - started_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - unified_session_id: str | None = dc_field(default=None, metadata=dc_config(field_name="unified_session_id")) - webrtc_version: str | None = dc_field(default=None, metadata=dc_config(field_name="webrtc_version")) - location: 'CallStatsLocation | None' = dc_field(default=None, metadata=dc_config(field_name="location")) + sdk_version: str | None = dc_field( + default=None, metadata=dc_config(field_name="sdk_version") + ) + started_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + unified_session_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="unified_session_id") + ) + webrtc_version: str | None = dc_field( + default=None, metadata=dc_config(field_name="webrtc_version") + ) + location: "CallStatsLocation | None" = dc_field( + default=None, metadata=dc_config(field_name="location") + ) + @dataclass class CallStatsReportReadyEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) - counts: 'CallStatsParticipantCounts' = dc_field(metadata=dc_config(field_name="counts")) + counts: "CallStatsParticipantCounts" = dc_field( + metadata=dc_config(field_name="counts") + ) # The type of event, "call.report_ready" in this case - type: str = dc_field(default="call.stats_report_ready", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.stats_report_ready", metadata=dc_config(field_name="type") + ) # Whether participants_overview is truncated by the server-side limit - is_trimmed: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_trimmed")) + is_trimmed: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_trimmed") + ) # Top participant sessions overview - participants_overview: 'list[CallStatsParticipant] | None' = dc_field(default=None, metadata=dc_config(field_name="participants_overview")) + participants_overview: "list[CallStatsParticipant] | None" = dc_field( + default=None, metadata=dc_config(field_name="participants_overview") + ) + @dataclass class CallStatsReportSummaryResponse(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - call_duration_seconds: int = dc_field(metadata=dc_config(field_name="call_duration_seconds")) + call_duration_seconds: int = dc_field( + metadata=dc_config(field_name="call_duration_seconds") + ) call_session_id: str = dc_field(metadata=dc_config(field_name="call_session_id")) call_status: str = dc_field(metadata=dc_config(field_name="call_status")) - first_stats_time: datetime = dc_field(metadata=dc_config(field_name="first_stats_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - min_user_rating: int | None = dc_field(default=None, metadata=dc_config(field_name="min_user_rating")) - quality_score: int | None = dc_field(default=None, metadata=dc_config(field_name="quality_score")) + first_stats_time: datetime = dc_field( + metadata=dc_config( + field_name="first_stats_time", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + created_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + min_user_rating: int | None = dc_field( + default=None, metadata=dc_config(field_name="min_user_rating") + ) + quality_score: int | None = dc_field( + default=None, metadata=dc_config(field_name="quality_score") + ) + @dataclass class CallStatsSessionResponse(DataClassJsonMixin): call_id: str = dc_field(metadata=dc_config(field_name="call_id")) call_session_id: str = dc_field(metadata=dc_config(field_name="call_session_id")) call_type: str = dc_field(metadata=dc_config(field_name="call_type")) - generated_at: datetime = dc_field(metadata=dc_config(field_name="generated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - counts: 'CallStatsParticipantCounts' = dc_field(metadata=dc_config(field_name="counts")) - call_ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="call_ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - call_started_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="call_started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + generated_at: datetime = dc_field( + metadata=dc_config( + field_name="generated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + counts: "CallStatsParticipantCounts" = dc_field( + metadata=dc_config(field_name="counts") + ) + call_ended_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="call_ended_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + call_started_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="call_started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class CallTranscription(DataClassJsonMixin): - end_time: datetime = dc_field(metadata=dc_config(field_name="end_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + end_time: datetime = dc_field( + metadata=dc_config( + field_name="end_time", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) filename: str = dc_field(metadata=dc_config(field_name="filename")) session_id: str = dc_field(metadata=dc_config(field_name="session_id")) - start_time: datetime = dc_field(metadata=dc_config(field_name="start_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + start_time: datetime = dc_field( + metadata=dc_config( + field_name="start_time", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) url: str = dc_field(metadata=dc_config(field_name="url")) + @dataclass class CallTranscriptionFailedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # The type of event: "call.transcription_failed" in this case - type: str = dc_field(default="call.transcription_failed", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.transcription_failed", metadata=dc_config(field_name="type") + ) # The error message detailing why transcription failed. error: str | None = dc_field(default=None, metadata=dc_config(field_name="error")) + @dataclass class CallTranscriptionReadyEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # CallTranscription represents a transcription of a call. - call_transcription: 'CallTranscription' = dc_field(metadata=dc_config(field_name="call_transcription")) + call_transcription: "CallTranscription" = dc_field( + metadata=dc_config(field_name="call_transcription") + ) # The type of event: "call.transcription_ready" in this case - type: str = dc_field(default="call.transcription_ready", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.transcription_ready", metadata=dc_config(field_name="type") + ) + @dataclass class CallTranscriptionStartedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # The type of event: "call.transcription_started" in this case - type: str = dc_field(default="call.transcription_started", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.transcription_started", metadata=dc_config(field_name="type") + ) + @dataclass class CallTranscriptionStoppedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) # The type of event: "call.transcription_stopped" in this case - type: str = dc_field(default="call.transcription_stopped", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.transcription_stopped", metadata=dc_config(field_name="type") + ) + @dataclass class CallType(DataClassJsonMixin): app: int = dc_field(metadata=dc_config(field_name="app")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) id: int = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) - recording_external_storage: str = dc_field(metadata=dc_config(field_name="recording_external_storage")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - notification_settings: 'NotificationSettings | None' = dc_field(default=None, metadata=dc_config(field_name="notification_settings")) - settings: 'CallSettings | None' = dc_field(default=None, metadata=dc_config(field_name="settings")) + recording_external_storage: str = dc_field( + metadata=dc_config(field_name="recording_external_storage") + ) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + notification_settings: "NotificationSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="notification_settings") + ) + settings: "CallSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="settings") + ) + @dataclass class CallTypeResponse(DataClassJsonMixin): # the time the call type was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # the name of the call type name: str = dc_field(metadata=dc_config(field_name="name")) # the time the call type was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # the permissions granted to each role - grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) - notification_settings: 'NotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="notification_settings")) - settings: 'CallSettingsResponse' = dc_field(metadata=dc_config(field_name="settings")) + grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) + notification_settings: "NotificationSettingsResponse" = dc_field( + metadata=dc_config(field_name="notification_settings") + ) + settings: "CallSettingsResponse" = dc_field( + metadata=dc_config(field_name="settings") + ) # the external storage for the call type - external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="external_storage")) + external_storage: str | None = dc_field( + default=None, metadata=dc_config(field_name="external_storage") + ) + @dataclass class CallTypeRuleParameters(DataClassJsonMixin): - call_type: str | None = dc_field(default=None, metadata=dc_config(field_name="call_type")) + call_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="call_type") + ) + @dataclass class CallUpdatedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) # The capabilities by role for this call - capabilities_by_role: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="capabilities_by_role")) + capabilities_by_role: "dict[str, list[str]]" = dc_field( + metadata=dc_config(field_name="capabilities_by_role") + ) # The type of event: "call.updated" in this case type: str = dc_field(default="call.updated", metadata=dc_config(field_name="type")) + @dataclass class CallUserFeedbackSubmittedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The rating given by the user (1-5) rating: int = dc_field(metadata=dc_config(field_name="rating")) # Call session ID session_id: str = dc_field(metadata=dc_config(field_name="session_id")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # The type of event, "call.user_feedback" in this case - type: str = dc_field(default="call.user_feedback_submitted", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.user_feedback_submitted", metadata=dc_config(field_name="type") + ) # The reason provided by the user for the rating reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) sdk: str | None = dc_field(default=None, metadata=dc_config(field_name="sdk")) - sdk_version: str | None = dc_field(default=None, metadata=dc_config(field_name="sdk_version")) + sdk_version: str | None = dc_field( + default=None, metadata=dc_config(field_name="sdk_version") + ) # Custom data provided by the user - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class CallUserMutedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) from_user_id: str = dc_field(metadata=dc_config(field_name="from_user_id")) reason: str = dc_field(metadata=dc_config(field_name="reason")) - muted_user_ids: list[str] = dc_field(metadata=dc_config(field_name="muted_user_ids")) + muted_user_ids: list[str] = dc_field( + metadata=dc_config(field_name="muted_user_ids") + ) # The type of event: "call.user_muted" in this case - type: str = dc_field(default="call.user_muted", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.user_muted", metadata=dc_config(field_name="type") + ) + @dataclass class CallViolationCountParameters(DataClassJsonMixin): - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + time_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="time_window") + ) + @dataclass class CallsPerDayReport(DataClassJsonMixin): count: int = dc_field(metadata=dc_config(field_name="count")) + @dataclass class CallsPerDayReportResponse(DataClassJsonMixin): - daily: 'list[DailyAggregateCallsPerDayReportResponse]' = dc_field(metadata=dc_config(field_name="daily")) + daily: "list[DailyAggregateCallsPerDayReportResponse]" = dc_field( + metadata=dc_config(field_name="daily") + ) + @dataclass class CampaignChannelMember(DataClassJsonMixin): user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - channel_role: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_role")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + channel_role: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_role") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class CampaignChannelTemplate(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - members: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="members")) - members_template: 'list[CampaignChannelMember] | None' = dc_field(default=None, metadata=dc_config(field_name="members_template")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + members: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="members") + ) + members_template: "list[CampaignChannelMember] | None" = dc_field( + default=None, metadata=dc_config(field_name="members_template") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class CampaignCompletedEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="campaign.completed", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - campaign: 'CampaignResponse | None' = dc_field(default=None, metadata=dc_config(field_name="campaign")) + type: str = dc_field( + default="campaign.completed", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + campaign: "CampaignResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="campaign") + ) + @dataclass class CampaignMessageTemplate(DataClassJsonMixin): text: str = dc_field(metadata=dc_config(field_name="text")) - poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) - searchable: bool | None = dc_field(default=None, metadata=dc_config(field_name="searchable")) - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + poll_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="poll_id") + ) + searchable: bool | None = dc_field( + default=None, metadata=dc_config(field_name="searchable") + ) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class CampaignResponse(DataClassJsonMixin): create_channels: bool = dc_field(metadata=dc_config(field_name="create_channels")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) description: str = dc_field(metadata=dc_config(field_name="description")) id: str = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) sender_id: str = dc_field(metadata=dc_config(field_name="sender_id")) sender_mode: str = dc_field(metadata=dc_config(field_name="sender_mode")) - sender_visibility: str = dc_field(metadata=dc_config(field_name="sender_visibility")) + sender_visibility: str = dc_field( + metadata=dc_config(field_name="sender_visibility") + ) show_channels: bool = dc_field(metadata=dc_config(field_name="show_channels")) skip_push: bool = dc_field(metadata=dc_config(field_name="skip_push")) skip_webhook: bool = dc_field(metadata=dc_config(field_name="skip_webhook")) status: str = dc_field(metadata=dc_config(field_name="status")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) segment_ids: list[str] = dc_field(metadata=dc_config(field_name="segment_ids")) - segments: 'list[Segment]' = dc_field(metadata=dc_config(field_name="segments")) + segments: "list[Segment]" = dc_field(metadata=dc_config(field_name="segments")) user_ids: list[str] = dc_field(metadata=dc_config(field_name="user_ids")) - users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="users")) - stats: 'CampaignStatsResponse' = dc_field(metadata=dc_config(field_name="stats")) - scheduled_for: datetime | None = dc_field(default=None, metadata=dc_config(field_name="scheduled_for", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - stop_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="stop_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - channel_template: 'CampaignChannelTemplate | None' = dc_field(default=None, metadata=dc_config(field_name="channel_template")) - message_template: 'CampaignMessageTemplate | None' = dc_field(default=None, metadata=dc_config(field_name="message_template")) + users: "list[UserResponse]" = dc_field(metadata=dc_config(field_name="users")) + stats: "CampaignStatsResponse" = dc_field(metadata=dc_config(field_name="stats")) + scheduled_for: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="scheduled_for", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + stop_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="stop_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + channel_template: "CampaignChannelTemplate | None" = dc_field( + default=None, metadata=dc_config(field_name="channel_template") + ) + message_template: "CampaignMessageTemplate | None" = dc_field( + default=None, metadata=dc_config(field_name="message_template") + ) # User response object - sender: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="sender")) + sender: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="sender") + ) + @dataclass class CampaignStartedEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="campaign.started", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - campaign: 'CampaignResponse | None' = dc_field(default=None, metadata=dc_config(field_name="campaign")) + type: str = dc_field( + default="campaign.started", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + campaign: "CampaignResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="campaign") + ) + @dataclass class CampaignStatsResponse(DataClassJsonMixin): progress: float = dc_field(metadata=dc_config(field_name="progress")) - stats_channels_created: int = dc_field(metadata=dc_config(field_name="stats_channels_created")) - stats_completed_at: datetime = dc_field(metadata=dc_config(field_name="stats_completed_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - stats_messages_sent: int = dc_field(metadata=dc_config(field_name="stats_messages_sent")) - stats_started_at: datetime = dc_field(metadata=dc_config(field_name="stats_started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + stats_channels_created: int = dc_field( + metadata=dc_config(field_name="stats_channels_created") + ) + stats_completed_at: datetime = dc_field( + metadata=dc_config( + field_name="stats_completed_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + stats_messages_sent: int = dc_field( + metadata=dc_config(field_name="stats_messages_sent") + ) + stats_started_at: datetime = dc_field( + metadata=dc_config( + field_name="stats_started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) stats_users_read: int = dc_field(metadata=dc_config(field_name="stats_users_read")) stats_users_sent: int = dc_field(metadata=dc_config(field_name="stats_users_sent")) + @dataclass class CancelImportV2TaskRequest(DataClassJsonMixin): pass + @dataclass class CancelImportV2TaskResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class CastPollVoteRequest(DataClassJsonMixin): - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) - vote: 'VoteData | None' = dc_field(default=None, metadata=dc_config(field_name="vote")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + vote: "VoteData | None" = dc_field( + default=None, metadata=dc_config(field_name="vote") + ) + @dataclass class ChangeFeedVisibilityRequest(DataClassJsonMixin): # Feed visibility level: public, visible, followers, members, or private visibility: str = dc_field(metadata=dc_config(field_name="visibility")) # What to do with existing pending follows when loosening visibility from 'followers': auto_approve (default) or reject - pending_follows_action: str | None = dc_field(default=None, metadata=dc_config(field_name="pending_follows_action")) + pending_follows_action: str | None = dc_field( + default=None, metadata=dc_config(field_name="pending_follows_action") + ) + @dataclass class ChangeFeedVisibilityResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed: 'FeedResponse' = dc_field(metadata=dc_config(field_name="feed")) + feed: "FeedResponse" = dc_field(metadata=dc_config(field_name="feed")) + @dataclass class ChannelBatchCompletedEvent(DataClassJsonMixin): - batch_created_at: datetime = dc_field(metadata=dc_config(field_name="batch_created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - finished_at: datetime = dc_field(metadata=dc_config(field_name="finished_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + batch_created_at: datetime = dc_field( + metadata=dc_config( + field_name="batch_created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + finished_at: datetime = dc_field( + metadata=dc_config( + field_name="finished_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) operation: str = dc_field(metadata=dc_config(field_name="operation")) status: str = dc_field(metadata=dc_config(field_name="status")) - success_channels_count: int = dc_field(metadata=dc_config(field_name="success_channels_count")) + success_channels_count: int = dc_field( + metadata=dc_config(field_name="success_channels_count") + ) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - failed_channels: 'list[FailedChannelUpdates]' = dc_field(metadata=dc_config(field_name="failed_channels")) + failed_channels: "list[FailedChannelUpdates]" = dc_field( + metadata=dc_config(field_name="failed_channels") + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="channel_batch_update.completed", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="channel_batch_update.completed", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class ChannelBatchMemberRequest(DataClassJsonMixin): user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - channel_role: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_role")) + channel_role: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_role") + ) + @dataclass class ChannelBatchStartedEvent(DataClassJsonMixin): - batch_created_at: datetime = dc_field(metadata=dc_config(field_name="batch_created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - finished_at: datetime = dc_field(metadata=dc_config(field_name="finished_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + batch_created_at: datetime = dc_field( + metadata=dc_config( + field_name="batch_created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + finished_at: datetime = dc_field( + metadata=dc_config( + field_name="finished_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) operation: str = dc_field(metadata=dc_config(field_name="operation")) status: str = dc_field(metadata=dc_config(field_name="status")) - success_channels_count: int = dc_field(metadata=dc_config(field_name="success_channels_count")) + success_channels_count: int = dc_field( + metadata=dc_config(field_name="success_channels_count") + ) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - failed_channels: 'list[FailedChannelUpdates]' = dc_field(metadata=dc_config(field_name="failed_channels")) + failed_channels: "list[FailedChannelUpdates]" = dc_field( + metadata=dc_config(field_name="failed_channels") + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="channel_batch_update.started", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="channel_batch_update.started", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class ChannelBatchUpdateRequest(DataClassJsonMixin): @@ -2936,17 +6119,29 @@ class ChannelBatchUpdateRequest(DataClassJsonMixin): # Filter to apply to the query filter: dict[str, object] = dc_field(metadata=dc_config(field_name="filter")) # `updateData` only. Deletes these keys from each channel's existing custom object, leaving every other custom key untouched. Keys are dot-paths; deleting a key that does not exist is a no-op. Cannot be combined with `data.custom` - custom_unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="custom_unset")) - members: 'list[ChannelBatchMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) + custom_unset: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="custom_unset") + ) + members: "list[ChannelBatchMemberRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="members") + ) # `updateData` only. Merges these keys into each channel's existing custom object, leaving every other custom key untouched. Keys are dot-paths, so `a.b` sets key `b` inside object `a` (the parent object must already exist). Cannot be combined with `data.custom` - custom_set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom_set")) - data: 'ChannelDataUpdate | None' = dc_field(default=None, metadata=dc_config(field_name="data")) + custom_set: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom_set") + ) + data: "ChannelDataUpdate | None" = dc_field( + default=None, metadata=dc_config(field_name="data") + ) + @dataclass class ChannelBatchUpdateResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - task_id: str | None = dc_field(default=None, metadata=dc_config(field_name="task_id")) + task_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="task_id") + ) + @dataclass class ChannelConfig(DataClassJsonMixin): @@ -2954,16 +6149,31 @@ class ChannelConfig(DataClassJsonMixin): automod_behavior: str = dc_field(metadata=dc_config(field_name="automod_behavior")) connect_events: bool = dc_field(metadata=dc_config(field_name="connect_events")) count_messages: bool = dc_field(metadata=dc_config(field_name="count_messages")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom_events: bool = dc_field(metadata=dc_config(field_name="custom_events")) delivery_events: bool = dc_field(metadata=dc_config(field_name="delivery_events")) - mark_messages_pending: bool = dc_field(metadata=dc_config(field_name="mark_messages_pending")) - max_message_length: int = dc_field(metadata=dc_config(field_name="max_message_length")) - message_retention: str = dc_field(metadata=dc_config(field_name="message_retention")) + mark_messages_pending: bool = dc_field( + metadata=dc_config(field_name="mark_messages_pending") + ) + max_message_length: int = dc_field( + metadata=dc_config(field_name="max_message_length") + ) + message_retention: str = dc_field( + metadata=dc_config(field_name="message_retention") + ) mutes: bool = dc_field(metadata=dc_config(field_name="mutes")) name: str = dc_field(metadata=dc_config(field_name="name")) polls: bool = dc_field(metadata=dc_config(field_name="polls")) - push_notifications: bool = dc_field(metadata=dc_config(field_name="push_notifications")) + push_notifications: bool = dc_field( + metadata=dc_config(field_name="push_notifications") + ) quotes: bool = dc_field(metadata=dc_config(field_name="quotes")) reactions: bool = dc_field(metadata=dc_config(field_name="reactions")) read_events: bool = dc_field(metadata=dc_config(field_name="read_events")) @@ -2971,55 +6181,118 @@ class ChannelConfig(DataClassJsonMixin): replies: bool = dc_field(metadata=dc_config(field_name="replies")) search: bool = dc_field(metadata=dc_config(field_name="search")) shared_locations: bool = dc_field(metadata=dc_config(field_name="shared_locations")) - skip_last_msg_update_for_system_msgs: bool = dc_field(metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs")) + skip_last_msg_update_for_system_msgs: bool = dc_field( + metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs") + ) typing_events: bool = dc_field(metadata=dc_config(field_name="typing_events")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) uploads: bool = dc_field(metadata=dc_config(field_name="uploads")) url_enrichment: bool = dc_field(metadata=dc_config(field_name="url_enrichment")) - user_message_reminders: bool = dc_field(metadata=dc_config(field_name="user_message_reminders")) + user_message_reminders: bool = dc_field( + metadata=dc_config(field_name="user_message_reminders") + ) # List of commands that channel supports commands: list[str] = dc_field(metadata=dc_config(field_name="commands")) - blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) - blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) - partition_size: int | None = dc_field(default=None, metadata=dc_config(field_name="partition_size")) - partition_ttl: str | None = dc_field(default=None, metadata=dc_config(field_name="partition_ttl")) - push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) - allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) - blocklists: 'list[BlockListOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="blocklists")) + blocklist: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist") + ) + blocklist_behavior: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist_behavior") + ) + partition_size: int | None = dc_field( + default=None, metadata=dc_config(field_name="partition_size") + ) + partition_ttl: str | None = dc_field( + default=None, metadata=dc_config(field_name="partition_ttl") + ) + push_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_level") + ) + allowed_flag_reasons: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowed_flag_reasons") + ) + blocklists: "list[BlockListOptions] | None" = dc_field( + default=None, metadata=dc_config(field_name="blocklists") + ) # Sets thresholds for AI moderation - automod_thresholds: 'Thresholds | None' = dc_field(default=None, metadata=dc_config(field_name="automod_thresholds")) - chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) + automod_thresholds: "Thresholds | None" = dc_field( + default=None, metadata=dc_config(field_name="automod_thresholds") + ) + chat_preferences: "ChatPreferences | None" = dc_field( + default=None, metadata=dc_config(field_name="chat_preferences") + ) + @dataclass class ChannelConfigOverrides(DataClassJsonMixin): - blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) - blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) + blocklist: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist") + ) + blocklist_behavior: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist_behavior") + ) # Enable/disable message counting - count_messages: bool | None = dc_field(default=None, metadata=dc_config(field_name="count_messages")) + count_messages: bool | None = dc_field( + default=None, metadata=dc_config(field_name="count_messages") + ) # Overrides max message length - max_message_length: int | None = dc_field(default=None, metadata=dc_config(field_name="max_message_length")) + max_message_length: int | None = dc_field( + default=None, metadata=dc_config(field_name="max_message_length") + ) # Overrides the push notification level for this channel - push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) + push_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_level") + ) # Enables message quotes - quotes: bool | None = dc_field(default=None, metadata=dc_config(field_name="quotes")) + quotes: bool | None = dc_field( + default=None, metadata=dc_config(field_name="quotes") + ) # Enables or disables reactions - reactions: bool | None = dc_field(default=None, metadata=dc_config(field_name="reactions")) + reactions: bool | None = dc_field( + default=None, metadata=dc_config(field_name="reactions") + ) # Enables message replies (threads) - replies: bool | None = dc_field(default=None, metadata=dc_config(field_name="replies")) + replies: bool | None = dc_field( + default=None, metadata=dc_config(field_name="replies") + ) # Enable/disable shared locations - shared_locations: bool | None = dc_field(default=None, metadata=dc_config(field_name="shared_locations")) + shared_locations: bool | None = dc_field( + default=None, metadata=dc_config(field_name="shared_locations") + ) # Enables or disables typing events - typing_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="typing_events")) + typing_events: bool | None = dc_field( + default=None, metadata=dc_config(field_name="typing_events") + ) # Enables or disables file uploads - uploads: bool | None = dc_field(default=None, metadata=dc_config(field_name="uploads")) + uploads: bool | None = dc_field( + default=None, metadata=dc_config(field_name="uploads") + ) # Enables or disables URL enrichment - url_enrichment: bool | None = dc_field(default=None, metadata=dc_config(field_name="url_enrichment")) + url_enrichment: bool | None = dc_field( + default=None, metadata=dc_config(field_name="url_enrichment") + ) # Enable/disable user message reminders - user_message_reminders: bool | None = dc_field(default=None, metadata=dc_config(field_name="user_message_reminders")) + user_message_reminders: bool | None = dc_field( + default=None, metadata=dc_config(field_name="user_message_reminders") + ) # List of commands that channel supports - commands: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="commands")) - chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) - grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) + commands: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="commands") + ) + chat_preferences: "ChatPreferences | None" = dc_field( + default=None, metadata=dc_config(field_name="chat_preferences") + ) + grants: "dict[str, list[str]] | None" = dc_field( + default=None, metadata=dc_config(field_name="grants") + ) + @dataclass class ChannelConfigWithInfo(DataClassJsonMixin): @@ -3027,16 +6300,31 @@ class ChannelConfigWithInfo(DataClassJsonMixin): automod_behavior: str = dc_field(metadata=dc_config(field_name="automod_behavior")) connect_events: bool = dc_field(metadata=dc_config(field_name="connect_events")) count_messages: bool = dc_field(metadata=dc_config(field_name="count_messages")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom_events: bool = dc_field(metadata=dc_config(field_name="custom_events")) delivery_events: bool = dc_field(metadata=dc_config(field_name="delivery_events")) - mark_messages_pending: bool = dc_field(metadata=dc_config(field_name="mark_messages_pending")) - max_message_length: int = dc_field(metadata=dc_config(field_name="max_message_length")) - message_retention: str = dc_field(metadata=dc_config(field_name="message_retention")) + mark_messages_pending: bool = dc_field( + metadata=dc_config(field_name="mark_messages_pending") + ) + max_message_length: int = dc_field( + metadata=dc_config(field_name="max_message_length") + ) + message_retention: str = dc_field( + metadata=dc_config(field_name="message_retention") + ) mutes: bool = dc_field(metadata=dc_config(field_name="mutes")) name: str = dc_field(metadata=dc_config(field_name="name")) polls: bool = dc_field(metadata=dc_config(field_name="polls")) - push_notifications: bool = dc_field(metadata=dc_config(field_name="push_notifications")) + push_notifications: bool = dc_field( + metadata=dc_config(field_name="push_notifications") + ) quotes: bool = dc_field(metadata=dc_config(field_name="quotes")) reactions: bool = dc_field(metadata=dc_config(field_name="reactions")) read_events: bool = dc_field(metadata=dc_config(field_name="read_events")) @@ -3044,24 +6332,56 @@ class ChannelConfigWithInfo(DataClassJsonMixin): replies: bool = dc_field(metadata=dc_config(field_name="replies")) search: bool = dc_field(metadata=dc_config(field_name="search")) shared_locations: bool = dc_field(metadata=dc_config(field_name="shared_locations")) - skip_last_msg_update_for_system_msgs: bool = dc_field(metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs")) + skip_last_msg_update_for_system_msgs: bool = dc_field( + metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs") + ) typing_events: bool = dc_field(metadata=dc_config(field_name="typing_events")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) uploads: bool = dc_field(metadata=dc_config(field_name="uploads")) url_enrichment: bool = dc_field(metadata=dc_config(field_name="url_enrichment")) - user_message_reminders: bool = dc_field(metadata=dc_config(field_name="user_message_reminders")) - commands: 'list[Command]' = dc_field(metadata=dc_config(field_name="commands")) - blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) - blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) - partition_size: int | None = dc_field(default=None, metadata=dc_config(field_name="partition_size")) - partition_ttl: str | None = dc_field(default=None, metadata=dc_config(field_name="partition_ttl")) - push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) - allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) - blocklists: 'list[BlockListOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="blocklists")) + user_message_reminders: bool = dc_field( + metadata=dc_config(field_name="user_message_reminders") + ) + commands: "list[Command]" = dc_field(metadata=dc_config(field_name="commands")) + blocklist: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist") + ) + blocklist_behavior: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist_behavior") + ) + partition_size: int | None = dc_field( + default=None, metadata=dc_config(field_name="partition_size") + ) + partition_ttl: str | None = dc_field( + default=None, metadata=dc_config(field_name="partition_ttl") + ) + push_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_level") + ) + allowed_flag_reasons: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowed_flag_reasons") + ) + blocklists: "list[BlockListOptions] | None" = dc_field( + default=None, metadata=dc_config(field_name="blocklists") + ) # Sets thresholds for AI moderation - automod_thresholds: 'Thresholds | None' = dc_field(default=None, metadata=dc_config(field_name="automod_thresholds")) - chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) - grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) + automod_thresholds: "Thresholds | None" = dc_field( + default=None, metadata=dc_config(field_name="automod_thresholds") + ) + chat_preferences: "ChatPreferences | None" = dc_field( + default=None, metadata=dc_config(field_name="chat_preferences") + ) + grants: "dict[str, list[str]] | None" = dc_field( + default=None, metadata=dc_config(field_name="grants") + ) + @dataclass class ChannelContextResponse(DataClassJsonMixin): @@ -3072,66 +6392,142 @@ class ChannelContextResponse(DataClassJsonMixin): # Channel type type: str = dc_field(metadata=dc_config(field_name="type")) # User response object - created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) + created_by: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) + @dataclass class ChannelCreatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Represents channel in chat - channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.created" in this case - type: str = dc_field(default="channel.created", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="channel.created", metadata=dc_config(field_name="type") + ) # The ID of the channel which was created - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel which was created - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel which was created cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ChannelDataUpdate(DataClassJsonMixin): - auto_translation_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_enabled")) - auto_translation_language: str | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_language")) - disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="disabled")) - frozen: bool | None = dc_field(default=None, metadata=dc_config(field_name="frozen")) + auto_translation_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="auto_translation_enabled") + ) + auto_translation_language: str | None = dc_field( + default=None, metadata=dc_config(field_name="auto_translation_language") + ) + disabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="disabled") + ) + frozen: bool | None = dc_field( + default=None, metadata=dc_config(field_name="frozen") + ) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Channel configuration overrides - config_overrides: 'ChannelConfigOverrides | None' = dc_field(default=None, metadata=dc_config(field_name="config_overrides")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + config_overrides: "ChannelConfigOverrides | None" = dc_field( + default=None, metadata=dc_config(field_name="config_overrides") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class ChannelDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Represents channel in chat - channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.deleted" in this case - type: str = dc_field(default="channel.deleted", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="channel.deleted", metadata=dc_config(field_name="type") + ) # The ID of the channel which was deleted - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel which was deleted - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel which was deleted cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ChannelExport(DataClassJsonMixin): @@ -3139,120 +6535,262 @@ class ChannelExport(DataClassJsonMixin): # Channel ID id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # Date to export messages since - messages_since: datetime | None = dc_field(default=None, metadata=dc_config(field_name="messages_since", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + messages_since: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="messages_since", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Date to export messages until - messages_until: datetime | None = dc_field(default=None, metadata=dc_config(field_name="messages_until", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + messages_until: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="messages_until", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Channel type type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) + @dataclass class ChannelFrozenEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.frozen" in this case - type: str = dc_field(default="channel.frozen", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="channel.frozen", metadata=dc_config(field_name="type") + ) # The ID of the channel which was frozen - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The type of the channel which was frozen - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel which was frozen cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class ChannelGetOrCreateRequest(DataClassJsonMixin): # Whether this channel will be hidden for the user who created the channel or not - hide_for_creator: bool | None = dc_field(default=None, metadata=dc_config(field_name="hide_for_creator")) + hide_for_creator: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hide_for_creator") + ) # Refresh channel state state: bool | None = dc_field(default=None, metadata=dc_config(field_name="state")) - thread_unread_counts: bool | None = dc_field(default=None, metadata=dc_config(field_name="thread_unread_counts")) + thread_unread_counts: bool | None = dc_field( + default=None, metadata=dc_config(field_name="thread_unread_counts") + ) # Top-level keys of the message sender's channel-member custom data to include under member.custom (max 8 keys, 64 chars each) - member_custom_include: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="member_custom_include")) - data: 'ChannelInput | None' = dc_field(default=None, metadata=dc_config(field_name="data")) - members: 'PaginationParams | None' = dc_field(default=None, metadata=dc_config(field_name="members")) - messages: 'MessagePaginationParams | None' = dc_field(default=None, metadata=dc_config(field_name="messages")) - watchers: 'PaginationParams | None' = dc_field(default=None, metadata=dc_config(field_name="watchers")) + member_custom_include: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="member_custom_include") + ) + data: "ChannelInput | None" = dc_field( + default=None, metadata=dc_config(field_name="data") + ) + members: "PaginationParams | None" = dc_field( + default=None, metadata=dc_config(field_name="members") + ) + messages: "MessagePaginationParams | None" = dc_field( + default=None, metadata=dc_config(field_name="messages") + ) + watchers: "PaginationParams | None" = dc_field( + default=None, metadata=dc_config(field_name="watchers") + ) + @dataclass class ChannelHiddenEvent(DataClassJsonMixin): # Whether the history was cleared clear_history: bool = dc_field(metadata=dc_config(field_name="clear_history")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Represents channel in chat - channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.hidden" in this case - type: str = dc_field(default="channel.hidden", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="channel.hidden", metadata=dc_config(field_name="type") + ) # The ID of the channel which was hidden - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel which was hidden - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel which was hidden cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ChannelInput(DataClassJsonMixin): # Enable or disable auto translation - auto_translation_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_enabled")) + auto_translation_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="auto_translation_enabled") + ) # Language (or comma-separated list of languages) to translate to when auto translation is active - auto_translation_language: str | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_language")) - created_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_id")) - disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="disabled")) + auto_translation_language: str | None = dc_field( + default=None, metadata=dc_config(field_name="auto_translation_language") + ) + created_by_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="created_by_id") + ) + disabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="disabled") + ) # Freeze or unfreeze the channel - frozen: bool | None = dc_field(default=None, metadata=dc_config(field_name="frozen")) + frozen: bool | None = dc_field( + default=None, metadata=dc_config(field_name="frozen") + ) # Team the channel belongs to (if multi-tenant mode is enabled) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - truncated_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="truncated_by_id")) - filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) - invites: 'list[ChannelMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="invites")) - members: 'list[ChannelMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) + truncated_by_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="truncated_by_id") + ) + filter_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_tags") + ) + invites: "list[ChannelMemberRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="invites") + ) + members: "list[ChannelMemberRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="members") + ) # Channel configuration overrides - config_overrides: 'ChannelConfigOverrides | None' = dc_field(default=None, metadata=dc_config(field_name="config_overrides")) + config_overrides: "ChannelConfigOverrides | None" = dc_field( + default=None, metadata=dc_config(field_name="config_overrides") + ) # User request object - created_by: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + created_by: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class ChannelInputRequest(DataClassJsonMixin): - auto_translation_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_enabled")) - auto_translation_language: str | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_language")) - disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="disabled")) - frozen: bool | None = dc_field(default=None, metadata=dc_config(field_name="frozen")) + auto_translation_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="auto_translation_enabled") + ) + auto_translation_language: str | None = dc_field( + default=None, metadata=dc_config(field_name="auto_translation_language") + ) + disabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="disabled") + ) + frozen: bool | None = dc_field( + default=None, metadata=dc_config(field_name="frozen") + ) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - invites: 'list[ChannelMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="invites")) - members: 'list[ChannelMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) + invites: "list[ChannelMemberRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="invites") + ) + members: "list[ChannelMemberRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="members") + ) # Channel configuration overrides - config_overrides: 'ConfigOverridesRequest | None' = dc_field(default=None, metadata=dc_config(field_name="config_overrides")) + config_overrides: "ConfigOverridesRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="config_overrides") + ) # User request object - created_by: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + created_by: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class ChannelMemberPartialResponse(DataClassJsonMixin): # Role of the member in the channel channel_role: str = dc_field(metadata=dc_config(field_name="channel_role")) # Whether the user muted notifications for this channel - notifications_muted: bool = dc_field(metadata=dc_config(field_name="notifications_muted")) + notifications_muted: bool = dc_field( + metadata=dc_config(field_name="notifications_muted") + ) # Channel-member custom fields projected via `member_custom_include` - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class ChannelMemberRequest(DataClassJsonMixin): # Role of the member in the channel - channel_role: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_role")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - user: 'MemberUserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + channel_role: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_role") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + user: "MemberUserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ChannelMemberResponse(DataClassJsonMixin): @@ -3261,49 +6799,142 @@ class ChannelMemberResponse(DataClassJsonMixin): # Role of the member in the channel channel_role: str = dc_field(metadata=dc_config(field_name="channel_role")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - notifications_muted: bool = dc_field(metadata=dc_config(field_name="notifications_muted")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + notifications_muted: bool = dc_field( + metadata=dc_config(field_name="notifications_muted") + ) # Whether member is shadow banned in this channel or not shadow_banned: bool = dc_field(metadata=dc_config(field_name="shadow_banned")) # Date/time of the last update - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - archived_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="archived_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + archived_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="archived_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Expiration date of the ban - ban_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ban_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + ban_expires: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="ban_expires", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Whether the member's ban also applies to channels the channel's creator will create in the future (an active future channel ban by the creator targets this member) - ban_from_future_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="ban_from_future_channels")) - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + ban_from_future_channels: bool | None = dc_field( + default=None, metadata=dc_config(field_name="ban_from_future_channels") + ) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Expiration date of the future channel ban; absent when the future channel ban is permanent - future_channel_ban_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="future_channel_ban_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + future_channel_ban_expires: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="future_channel_ban_expires", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Date when invite was accepted - invite_accepted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="invite_accepted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + invite_accepted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="invite_accepted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Date when invite was rejected - invite_rejected_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="invite_rejected_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + invite_rejected_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="invite_rejected_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Whether member was invited or not - invited: bool | None = dc_field(default=None, metadata=dc_config(field_name="invited")) + invited: bool | None = dc_field( + default=None, metadata=dc_config(field_name="invited") + ) # Whether member is channel moderator or not - is_moderator: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_moderator")) - pinned_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pinned_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + is_moderator: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_moderator") + ) + pinned_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="pinned_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Permission level of the member in the channel (DEPRECATED: use channel_role instead). One of: member, moderator, admin, owner role: str | None = dc_field(default=None, metadata=dc_config(field_name="role")) status: str | None = dc_field(default=None, metadata=dc_config(field_name="status")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - deleted_messages: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="deleted_messages")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + deleted_messages: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="deleted_messages") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ChannelMessageCountRuleParameters(DataClassJsonMixin): - operator: str | None = dc_field(default=None, metadata=dc_config(field_name="operator")) - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + operator: str | None = dc_field( + default=None, metadata=dc_config(field_name="operator") + ) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + @dataclass class ChannelMessagesResponse(DataClassJsonMixin): # List of messages - messages: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="messages")) + messages: "list[MessageResponse]" = dc_field( + metadata=dc_config(field_name="messages") + ) # Represents channel in chat - channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + @dataclass class ChannelMetadata(DataClassJsonMixin): @@ -3311,96 +6942,184 @@ class ChannelMetadata(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) type: str = dc_field(metadata=dc_config(field_name="type")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - last_message_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_message_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="member_count")) - message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="message_count")) - push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) + last_message_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_message_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="member_count") + ) + message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="message_count") + ) + push_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_level") + ) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) + @dataclass class ChannelMute(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Date/time of the last update - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Date/time of mute expiration - expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + expires: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="expires", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ChannelMutedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.muted" in this case type: str = dc_field(default="channel.muted", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The mute objects - mutes: 'list[ChannelMute] | None' = dc_field(default=None, metadata=dc_config(field_name="mutes")) - mute: 'ChannelMute | None' = dc_field(default=None, metadata=dc_config(field_name="mute")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + mutes: "list[ChannelMute] | None" = dc_field( + default=None, metadata=dc_config(field_name="mutes") + ) + mute: "ChannelMute | None" = dc_field( + default=None, metadata=dc_config(field_name="mute") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + + +ChannelOwnCapabilityType = NewType("ChannelOwnCapabilityType", str) -ChannelOwnCapabilityType = NewType('ChannelOwnCapabilityType', str) class ChannelOwnCapability: - BAN_CHANNEL_MEMBERS: Final[ChannelOwnCapabilityType] = 'ban-channel-members' - CAST_POLL_VOTE: Final[ChannelOwnCapabilityType] = 'cast-poll-vote' - CONNECT_EVENTS: Final[ChannelOwnCapabilityType] = 'connect-events' - CREATE_ATTACHMENT: Final[ChannelOwnCapabilityType] = 'create-attachment' - CREATE_MENTION: Final[ChannelOwnCapabilityType] = 'create-mention' - DELETE_ANY_MESSAGE: Final[ChannelOwnCapabilityType] = 'delete-any-message' - DELETE_CHANNEL: Final[ChannelOwnCapabilityType] = 'delete-channel' - DELETE_OWN_MESSAGE: Final[ChannelOwnCapabilityType] = 'delete-own-message' - DELIVERY_EVENTS: Final[ChannelOwnCapabilityType] = 'delivery-events' - FLAG_MESSAGE: Final[ChannelOwnCapabilityType] = 'flag-message' - FREEZE_CHANNEL: Final[ChannelOwnCapabilityType] = 'freeze-channel' - JOIN_CHANNEL: Final[ChannelOwnCapabilityType] = 'join-channel' - LEAVE_CHANNEL: Final[ChannelOwnCapabilityType] = 'leave-channel' - MUTE_CHANNEL: Final[ChannelOwnCapabilityType] = 'mute-channel' - NOTIFY_CHANNEL: Final[ChannelOwnCapabilityType] = 'notify-channel' - NOTIFY_GROUP: Final[ChannelOwnCapabilityType] = 'notify-group' - NOTIFY_HERE: Final[ChannelOwnCapabilityType] = 'notify-here' - NOTIFY_ROLE: Final[ChannelOwnCapabilityType] = 'notify-role' - PIN_MESSAGE: Final[ChannelOwnCapabilityType] = 'pin-message' - QUERY_POLL_VOTES: Final[ChannelOwnCapabilityType] = 'query-poll-votes' - QUOTE_MESSAGE: Final[ChannelOwnCapabilityType] = 'quote-message' - READ_EVENTS: Final[ChannelOwnCapabilityType] = 'read-events' - SEARCH_MESSAGES: Final[ChannelOwnCapabilityType] = 'search-messages' - SEND_CUSTOM_EVENTS: Final[ChannelOwnCapabilityType] = 'send-custom-events' - SEND_LINKS: Final[ChannelOwnCapabilityType] = 'send-links' - SEND_MESSAGE: Final[ChannelOwnCapabilityType] = 'send-message' - SEND_POLL: Final[ChannelOwnCapabilityType] = 'send-poll' - SEND_REACTION: Final[ChannelOwnCapabilityType] = 'send-reaction' - SEND_REPLY: Final[ChannelOwnCapabilityType] = 'send-reply' - SEND_RESTRICTED_VISIBILITY_MESSAGE: Final[ChannelOwnCapabilityType] = 'send-restricted-visibility-message' - SEND_TYPING_EVENTS: Final[ChannelOwnCapabilityType] = 'send-typing-events' - SET_CHANNEL_COOLDOWN: Final[ChannelOwnCapabilityType] = 'set-channel-cooldown' - SHARE_LOCATION: Final[ChannelOwnCapabilityType] = 'share-location' - SKIP_SLOW_MODE: Final[ChannelOwnCapabilityType] = 'skip-slow-mode' - SLOW_MODE: Final[ChannelOwnCapabilityType] = 'slow-mode' - TYPING_EVENTS: Final[ChannelOwnCapabilityType] = 'typing-events' - UPDATE_ANY_MESSAGE: Final[ChannelOwnCapabilityType] = 'update-any-message' - UPDATE_CHANNEL: Final[ChannelOwnCapabilityType] = 'update-channel' - UPDATE_CHANNEL_MEMBERS: Final[ChannelOwnCapabilityType] = 'update-channel-members' - UPDATE_OWN_MESSAGE: Final[ChannelOwnCapabilityType] = 'update-own-message' - UPDATE_THREAD: Final[ChannelOwnCapabilityType] = 'update-thread' - UPLOAD_FILE: Final[ChannelOwnCapabilityType] = 'upload-file' + BAN_CHANNEL_MEMBERS: Final[ChannelOwnCapabilityType] = "ban-channel-members" + CAST_POLL_VOTE: Final[ChannelOwnCapabilityType] = "cast-poll-vote" + CONNECT_EVENTS: Final[ChannelOwnCapabilityType] = "connect-events" + CREATE_ATTACHMENT: Final[ChannelOwnCapabilityType] = "create-attachment" + CREATE_MENTION: Final[ChannelOwnCapabilityType] = "create-mention" + DELETE_ANY_MESSAGE: Final[ChannelOwnCapabilityType] = "delete-any-message" + DELETE_CHANNEL: Final[ChannelOwnCapabilityType] = "delete-channel" + DELETE_OWN_MESSAGE: Final[ChannelOwnCapabilityType] = "delete-own-message" + DELIVERY_EVENTS: Final[ChannelOwnCapabilityType] = "delivery-events" + FLAG_MESSAGE: Final[ChannelOwnCapabilityType] = "flag-message" + FREEZE_CHANNEL: Final[ChannelOwnCapabilityType] = "freeze-channel" + JOIN_CHANNEL: Final[ChannelOwnCapabilityType] = "join-channel" + LEAVE_CHANNEL: Final[ChannelOwnCapabilityType] = "leave-channel" + MUTE_CHANNEL: Final[ChannelOwnCapabilityType] = "mute-channel" + NOTIFY_CHANNEL: Final[ChannelOwnCapabilityType] = "notify-channel" + NOTIFY_GROUP: Final[ChannelOwnCapabilityType] = "notify-group" + NOTIFY_HERE: Final[ChannelOwnCapabilityType] = "notify-here" + NOTIFY_ROLE: Final[ChannelOwnCapabilityType] = "notify-role" + PIN_MESSAGE: Final[ChannelOwnCapabilityType] = "pin-message" + QUERY_POLL_VOTES: Final[ChannelOwnCapabilityType] = "query-poll-votes" + QUOTE_MESSAGE: Final[ChannelOwnCapabilityType] = "quote-message" + READ_EVENTS: Final[ChannelOwnCapabilityType] = "read-events" + SEARCH_MESSAGES: Final[ChannelOwnCapabilityType] = "search-messages" + SEND_CUSTOM_EVENTS: Final[ChannelOwnCapabilityType] = "send-custom-events" + SEND_LINKS: Final[ChannelOwnCapabilityType] = "send-links" + SEND_MESSAGE: Final[ChannelOwnCapabilityType] = "send-message" + SEND_POLL: Final[ChannelOwnCapabilityType] = "send-poll" + SEND_REACTION: Final[ChannelOwnCapabilityType] = "send-reaction" + SEND_REPLY: Final[ChannelOwnCapabilityType] = "send-reply" + SEND_RESTRICTED_VISIBILITY_MESSAGE: Final[ChannelOwnCapabilityType] = ( + "send-restricted-visibility-message" + ) + SEND_TYPING_EVENTS: Final[ChannelOwnCapabilityType] = "send-typing-events" + SET_CHANNEL_COOLDOWN: Final[ChannelOwnCapabilityType] = "set-channel-cooldown" + SHARE_LOCATION: Final[ChannelOwnCapabilityType] = "share-location" + SKIP_SLOW_MODE: Final[ChannelOwnCapabilityType] = "skip-slow-mode" + SLOW_MODE: Final[ChannelOwnCapabilityType] = "slow-mode" + TYPING_EVENTS: Final[ChannelOwnCapabilityType] = "typing-events" + UPDATE_ANY_MESSAGE: Final[ChannelOwnCapabilityType] = "update-any-message" + UPDATE_CHANNEL: Final[ChannelOwnCapabilityType] = "update-channel" + UPDATE_CHANNEL_MEMBERS: Final[ChannelOwnCapabilityType] = "update-channel-members" + UPDATE_OWN_MESSAGE: Final[ChannelOwnCapabilityType] = "update-own-message" + UPDATE_THREAD: Final[ChannelOwnCapabilityType] = "update-thread" + UPLOAD_FILE: Final[ChannelOwnCapabilityType] = "upload-file" + @dataclass class ChannelPushPreferencesResponse(DataClassJsonMixin): - chat_level: str | None = dc_field(default=None, metadata=dc_config(field_name="chat_level")) - disabled_until: datetime | None = dc_field(default=None, metadata=dc_config(field_name="disabled_until", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - chat_preferences: 'ChatPreferencesResponse | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) + chat_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="chat_level") + ) + disabled_until: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="disabled_until", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + chat_preferences: "ChatPreferencesResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="chat_preferences") + ) + @dataclass class ChannelResponse(DataClassJsonMixin): # Channel CID (:) cid: str = dc_field(metadata=dc_config(field_name="cid")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) disabled: bool = dc_field(metadata=dc_config(field_name="disabled")) # Whether channel is frozen or not frozen: bool = dc_field(metadata=dc_config(field_name="frozen")) @@ -3409,124 +7128,306 @@ class ChannelResponse(DataClassJsonMixin): # Type of the channel type: str = dc_field(metadata=dc_config(field_name="type")) # Date/time of the last update - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Custom data for this object custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Whether auto translation is enabled or not - auto_translation_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_enabled")) + auto_translation_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="auto_translation_enabled") + ) # Language (or comma-separated list of languages) to translate to when auto translation is active - auto_translation_language: str | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_language")) + auto_translation_language: str | None = dc_field( + default=None, metadata=dc_config(field_name="auto_translation_language") + ) # Whether this channel is blocked by current user or not - blocked: bool | None = dc_field(default=None, metadata=dc_config(field_name="blocked")) + blocked: bool | None = dc_field( + default=None, metadata=dc_config(field_name="blocked") + ) # Cooldown period after sending each message - cooldown: int | None = dc_field(default=None, metadata=dc_config(field_name="cooldown")) + cooldown: int | None = dc_field( + default=None, metadata=dc_config(field_name="cooldown") + ) # Date/time of deletion - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Whether this channel is hidden by current user or not - hidden: bool | None = dc_field(default=None, metadata=dc_config(field_name="hidden")) + hidden: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hidden") + ) # Date since when the message history is accessible - hide_messages_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="hide_messages_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + hide_messages_before: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="hide_messages_before", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Date of the last message sent - last_message_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_message_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_message_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_message_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Number of members in the channel - member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="member_count")) + member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="member_count") + ) # Number of messages in the channel - message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="message_count")) + message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="message_count") + ) # Date of mute expiration - mute_expires_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="mute_expires_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + mute_expires_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="mute_expires_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Whether this channel is muted or not muted: bool | None = dc_field(default=None, metadata=dc_config(field_name="muted")) # Team the channel belongs to (multi-tenant only) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Date of the latest truncation of the channel - truncated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="truncated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + truncated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="truncated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # List of filter tags associated with the channel - filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) + filter_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_tags") + ) # List of channel members (max 100) - members: 'list[ChannelMemberResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) + members: "list[ChannelMemberResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="members") + ) # List of channel capabilities of authenticated user - own_capabilities: 'list[ChannelOwnCapability] | None' = dc_field(default=None, metadata=dc_config(field_name="own_capabilities")) - config: 'ChannelConfigWithInfo | None' = dc_field(default=None, metadata=dc_config(field_name="config")) + own_capabilities: "list[ChannelOwnCapability] | None" = dc_field( + default=None, metadata=dc_config(field_name="own_capabilities") + ) + config: "ChannelConfigWithInfo | None" = dc_field( + default=None, metadata=dc_config(field_name="config") + ) # User response object - created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) + created_by: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) # User response object - truncated_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="truncated_by")) + truncated_by: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="truncated_by") + ) + @dataclass class ChannelStateResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - members: 'list[ChannelMemberResponse]' = dc_field(metadata=dc_config(field_name="members")) - messages: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="messages")) - pinned_messages: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="pinned_messages")) - threads: 'list[ThreadStateResponse]' = dc_field(metadata=dc_config(field_name="threads")) - hidden: bool | None = dc_field(default=None, metadata=dc_config(field_name="hidden")) - hide_messages_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="hide_messages_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - watcher_count: int | None = dc_field(default=None, metadata=dc_config(field_name="watcher_count")) - active_live_locations: 'list[SharedLocationResponseData] | None' = dc_field(default=None, metadata=dc_config(field_name="active_live_locations")) - pending_messages: 'list[PendingMessageResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="pending_messages")) - read: 'list[ReadStateResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="read")) - watchers: 'list[UserResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="watchers")) + members: "list[ChannelMemberResponse]" = dc_field( + metadata=dc_config(field_name="members") + ) + messages: "list[MessageResponse]" = dc_field( + metadata=dc_config(field_name="messages") + ) + pinned_messages: "list[MessageResponse]" = dc_field( + metadata=dc_config(field_name="pinned_messages") + ) + threads: "list[ThreadStateResponse]" = dc_field( + metadata=dc_config(field_name="threads") + ) + hidden: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hidden") + ) + hide_messages_before: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="hide_messages_before", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + watcher_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="watcher_count") + ) + active_live_locations: "list[SharedLocationResponseData] | None" = dc_field( + default=None, metadata=dc_config(field_name="active_live_locations") + ) + pending_messages: "list[PendingMessageResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="pending_messages") + ) + read: "list[ReadStateResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="read") + ) + watchers: "list[UserResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="watchers") + ) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) - draft: 'DraftResponse | None' = dc_field(default=None, metadata=dc_config(field_name="draft")) - membership: 'ChannelMemberResponse | None' = dc_field(default=None, metadata=dc_config(field_name="membership")) - push_preferences: 'ChannelPushPreferencesResponse | None' = dc_field(default=None, metadata=dc_config(field_name="push_preferences")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) + draft: "DraftResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="draft") + ) + membership: "ChannelMemberResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="membership") + ) + push_preferences: "ChannelPushPreferencesResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="push_preferences") + ) + @dataclass class ChannelStateResponseFields(DataClassJsonMixin): # List of channel members - members: 'list[ChannelMemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + members: "list[ChannelMemberResponse]" = dc_field( + metadata=dc_config(field_name="members") + ) # List of channel messages - messages: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="messages")) + messages: "list[MessageResponse]" = dc_field( + metadata=dc_config(field_name="messages") + ) # List of pinned messages in the channel - pinned_messages: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="pinned_messages")) - threads: 'list[ThreadStateResponse]' = dc_field(metadata=dc_config(field_name="threads")) + pinned_messages: "list[MessageResponse]" = dc_field( + metadata=dc_config(field_name="pinned_messages") + ) + threads: "list[ThreadStateResponse]" = dc_field( + metadata=dc_config(field_name="threads") + ) # Whether this channel is hidden or not - hidden: bool | None = dc_field(default=None, metadata=dc_config(field_name="hidden")) + hidden: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hidden") + ) # Messages before this date are hidden from the user - hide_messages_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="hide_messages_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + hide_messages_before: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="hide_messages_before", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Number of channel watchers - watcher_count: int | None = dc_field(default=None, metadata=dc_config(field_name="watcher_count")) + watcher_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="watcher_count") + ) # Active live locations in the channel - active_live_locations: 'list[SharedLocationResponseData] | None' = dc_field(default=None, metadata=dc_config(field_name="active_live_locations")) + active_live_locations: "list[SharedLocationResponseData] | None" = dc_field( + default=None, metadata=dc_config(field_name="active_live_locations") + ) # Pending messages that this user has sent - pending_messages: 'list[PendingMessageResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="pending_messages")) + pending_messages: "list[PendingMessageResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="pending_messages") + ) # List of read states - read: 'list[ReadStateResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="read")) + read: "list[ReadStateResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="read") + ) # List of user who is watching the channel - watchers: 'list[UserResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="watchers")) + watchers: "list[UserResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="watchers") + ) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) - draft: 'DraftResponse | None' = dc_field(default=None, metadata=dc_config(field_name="draft")) - membership: 'ChannelMemberResponse | None' = dc_field(default=None, metadata=dc_config(field_name="membership")) - push_preferences: 'ChannelPushPreferencesResponse | None' = dc_field(default=None, metadata=dc_config(field_name="push_preferences")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) + draft: "DraftResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="draft") + ) + membership: "ChannelMemberResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="membership") + ) + push_preferences: "ChannelPushPreferencesResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="push_preferences") + ) + @dataclass class ChannelTruncatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Represents channel in chat - channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.truncated" in this case - type: str = dc_field(default="channel.truncated", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="channel.truncated", metadata=dc_config(field_name="type") + ) # The ID of the channel which was truncated - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel which was truncated - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel which was truncated cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="message_id")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="message_id") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ChannelTypeConfig(DataClassJsonMixin): @@ -3534,16 +7435,31 @@ class ChannelTypeConfig(DataClassJsonMixin): automod_behavior: str = dc_field(metadata=dc_config(field_name="automod_behavior")) connect_events: bool = dc_field(metadata=dc_config(field_name="connect_events")) count_messages: bool = dc_field(metadata=dc_config(field_name="count_messages")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom_events: bool = dc_field(metadata=dc_config(field_name="custom_events")) delivery_events: bool = dc_field(metadata=dc_config(field_name="delivery_events")) - mark_messages_pending: bool = dc_field(metadata=dc_config(field_name="mark_messages_pending")) - max_message_length: int = dc_field(metadata=dc_config(field_name="max_message_length")) - message_retention: str = dc_field(metadata=dc_config(field_name="message_retention")) + mark_messages_pending: bool = dc_field( + metadata=dc_config(field_name="mark_messages_pending") + ) + max_message_length: int = dc_field( + metadata=dc_config(field_name="max_message_length") + ) + message_retention: str = dc_field( + metadata=dc_config(field_name="message_retention") + ) mutes: bool = dc_field(metadata=dc_config(field_name="mutes")) name: str = dc_field(metadata=dc_config(field_name="name")) polls: bool = dc_field(metadata=dc_config(field_name="polls")) - push_notifications: bool = dc_field(metadata=dc_config(field_name="push_notifications")) + push_notifications: bool = dc_field( + metadata=dc_config(field_name="push_notifications") + ) quotes: bool = dc_field(metadata=dc_config(field_name="quotes")) reactions: bool = dc_field(metadata=dc_config(field_name="reactions")) read_events: bool = dc_field(metadata=dc_config(field_name="read_events")) @@ -3551,108 +7467,253 @@ class ChannelTypeConfig(DataClassJsonMixin): replies: bool = dc_field(metadata=dc_config(field_name="replies")) search: bool = dc_field(metadata=dc_config(field_name="search")) shared_locations: bool = dc_field(metadata=dc_config(field_name="shared_locations")) - skip_last_msg_update_for_system_msgs: bool = dc_field(metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs")) + skip_last_msg_update_for_system_msgs: bool = dc_field( + metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs") + ) typing_events: bool = dc_field(metadata=dc_config(field_name="typing_events")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) uploads: bool = dc_field(metadata=dc_config(field_name="uploads")) url_enrichment: bool = dc_field(metadata=dc_config(field_name="url_enrichment")) - user_message_reminders: bool = dc_field(metadata=dc_config(field_name="user_message_reminders")) - commands: 'list[Command]' = dc_field(metadata=dc_config(field_name="commands")) - permissions: 'list[PolicyRequest]' = dc_field(metadata=dc_config(field_name="permissions")) - grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) - blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) - blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) - partition_size: int | None = dc_field(default=None, metadata=dc_config(field_name="partition_size")) - partition_ttl: str | None = dc_field(default=None, metadata=dc_config(field_name="partition_ttl")) - push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) - allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) - blocklists: 'list[BlockListOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="blocklists")) + user_message_reminders: bool = dc_field( + metadata=dc_config(field_name="user_message_reminders") + ) + commands: "list[Command]" = dc_field(metadata=dc_config(field_name="commands")) + permissions: "list[PolicyRequest]" = dc_field( + metadata=dc_config(field_name="permissions") + ) + grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) + blocklist: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist") + ) + blocklist_behavior: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist_behavior") + ) + partition_size: int | None = dc_field( + default=None, metadata=dc_config(field_name="partition_size") + ) + partition_ttl: str | None = dc_field( + default=None, metadata=dc_config(field_name="partition_ttl") + ) + push_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_level") + ) + allowed_flag_reasons: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowed_flag_reasons") + ) + blocklists: "list[BlockListOptions] | None" = dc_field( + default=None, metadata=dc_config(field_name="blocklists") + ) # Sets thresholds for AI moderation - automod_thresholds: 'Thresholds | None' = dc_field(default=None, metadata=dc_config(field_name="automod_thresholds")) - chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) + automod_thresholds: "Thresholds | None" = dc_field( + default=None, metadata=dc_config(field_name="automod_thresholds") + ) + chat_preferences: "ChatPreferences | None" = dc_field( + default=None, metadata=dc_config(field_name="chat_preferences") + ) + @dataclass class ChannelUnFrozenEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.unfrozen" in this case - type: str = dc_field(default="channel.unfrozen", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="channel.unfrozen", metadata=dc_config(field_name="type") + ) # The ID of the channel which was unfrozen - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The type of the channel which was unfrozen - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel which was unfrozen cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class ChannelUnmutedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.unmuted" in this case - type: str = dc_field(default="channel.unmuted", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="channel.unmuted", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The mute objects - mutes: 'list[ChannelMute] | None' = dc_field(default=None, metadata=dc_config(field_name="mutes")) - mute: 'ChannelMute | None' = dc_field(default=None, metadata=dc_config(field_name="mute")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + mutes: "list[ChannelMute] | None" = dc_field( + default=None, metadata=dc_config(field_name="mutes") + ) + mute: "ChannelMute | None" = dc_field( + default=None, metadata=dc_config(field_name="mute") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ChannelUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Represents channel in chat - channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.updated" in this case - type: str = dc_field(default="channel.updated", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="channel.updated", metadata=dc_config(field_name="type") + ) # The ID of the channel which was updated - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel which was updated - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel which was updated cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="message_id")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="message_id") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ChannelVisibleEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Represents channel in chat - channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "channel.visible" in this case - type: str = dc_field(default="channel.visible", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="channel.visible", metadata=dc_config(field_name="type") + ) # The ID of the channel which was shown - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel which was shown - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel which was shown cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ChatActivityStatsResponse(DataClassJsonMixin): - messages: 'MessageStatsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="Messages")) + messages: "MessageStatsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="Messages") + ) + @dataclass class ChatDraftPayloadResponse(DataClassJsonMixin): @@ -3661,32 +7722,74 @@ class ChatDraftPayloadResponse(DataClassJsonMixin): custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) html: str | None = dc_field(default=None, metadata=dc_config(field_name="html")) mml: str | None = dc_field(default=None, metadata=dc_config(field_name="mml")) - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) - poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) - quoted_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="quoted_message_id")) - show_in_channel: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_in_channel")) - silent: bool | None = dc_field(default=None, metadata=dc_config(field_name="silent")) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) + poll_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="poll_id") + ) + quoted_message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="quoted_message_id") + ) + show_in_channel: bool | None = dc_field( + default=None, metadata=dc_config(field_name="show_in_channel") + ) + silent: bool | None = dc_field( + default=None, metadata=dc_config(field_name="silent") + ) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) - mentioned_users: 'list[UserResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_users")) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) + mentioned_users: "list[UserResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="mentioned_users") + ) + @dataclass class ChatDraftResponse(DataClassJsonMixin): channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - message: 'ChatDraftPayloadResponse' = dc_field(metadata=dc_config(field_name="message")) - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) - parent_message: 'ChatMessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="parent_message")) - quoted_message: 'ChatMessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="quoted_message")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + message: "ChatDraftPayloadResponse" = dc_field( + metadata=dc_config(field_name="message") + ) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) + parent_message: "ChatMessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="parent_message") + ) + quoted_message: "ChatMessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="quoted_message") + ) + @dataclass class ChatMessageResponse(DataClassJsonMixin): cid: str = dc_field(metadata=dc_config(field_name="cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - deleted_reply_count: int = dc_field(metadata=dc_config(field_name="deleted_reply_count")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + deleted_reply_count: int = dc_field( + metadata=dc_config(field_name="deleted_reply_count") + ) html: str = dc_field(metadata=dc_config(field_name="html")) id: str = dc_field(metadata=dc_config(field_name="id")) - mentioned_channel: bool = dc_field(metadata=dc_config(field_name="mentioned_channel")) + mentioned_channel: bool = dc_field( + metadata=dc_config(field_name="mentioned_channel") + ) mentioned_here: bool = dc_field(metadata=dc_config(field_name="mentioned_here")) pinned: bool = dc_field(metadata=dc_config(field_name="pinned")) reply_count: int = dc_field(metadata=dc_config(field_name="reply_count")) @@ -3694,138 +7797,390 @@ class ChatMessageResponse(DataClassJsonMixin): silent: bool = dc_field(metadata=dc_config(field_name="silent")) text: str = dc_field(metadata=dc_config(field_name="text")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - attachments: 'list[Attachment]' = dc_field(metadata=dc_config(field_name="attachments")) - latest_reactions: 'list[ChatReactionResponse]' = dc_field(metadata=dc_config(field_name="latest_reactions")) - mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) - own_reactions: 'list[ChatReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) - restricted_visibility: list[str] = dc_field(metadata=dc_config(field_name="restricted_visibility")) - custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction_counts: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="reaction_counts")) - reaction_scores: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="reaction_scores")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + attachments: "list[Attachment]" = dc_field( + metadata=dc_config(field_name="attachments") + ) + latest_reactions: "list[ChatReactionResponse]" = dc_field( + metadata=dc_config(field_name="latest_reactions") + ) + mentioned_users: "list[UserResponse]" = dc_field( + metadata=dc_config(field_name="mentioned_users") + ) + own_reactions: "list[ChatReactionResponse]" = dc_field( + metadata=dc_config(field_name="own_reactions") + ) + restricted_visibility: list[str] = dc_field( + metadata=dc_config(field_name="restricted_visibility") + ) + custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + reaction_counts: "dict[str, int]" = dc_field( + metadata=dc_config(field_name="reaction_counts") + ) + reaction_scores: "dict[str, int]" = dc_field( + metadata=dc_config(field_name="reaction_scores") + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) - command: str | None = dc_field(default=None, metadata=dc_config(field_name="command")) - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - deleted_for_me: bool | None = dc_field(default=None, metadata=dc_config(field_name="deleted_for_me")) - message_text_updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="message_text_updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + command: str | None = dc_field( + default=None, metadata=dc_config(field_name="command") + ) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + deleted_for_me: bool | None = dc_field( + default=None, metadata=dc_config(field_name="deleted_for_me") + ) + message_text_updated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="message_text_updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) mml: str | None = dc_field(default=None, metadata=dc_config(field_name="mml")) - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) - pin_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pin_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - pinned_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pinned_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) - quoted_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="quoted_message_id")) - show_in_channel: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_in_channel")) - mentioned_group_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_group_ids")) - mentioned_groups: 'list[UserGroupResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_groups")) - mentioned_roles: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_roles")) - thread_participants: 'list[UserResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) - draft: 'ChatDraftResponse | None' = dc_field(default=None, metadata=dc_config(field_name="draft")) - i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) - image_labels: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="image_labels")) - member: 'ChannelMemberPartialResponse | None' = dc_field(default=None, metadata=dc_config(field_name="member")) - moderation: 'ChatModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) + pin_expires: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="pin_expires", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + pinned_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="pinned_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + poll_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="poll_id") + ) + quoted_message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="quoted_message_id") + ) + show_in_channel: bool | None = dc_field( + default=None, metadata=dc_config(field_name="show_in_channel") + ) + mentioned_group_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_group_ids") + ) + mentioned_groups: "list[UserGroupResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="mentioned_groups") + ) + mentioned_roles: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_roles") + ) + thread_participants: "list[UserResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="thread_participants") + ) + draft: "ChatDraftResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="draft") + ) + i18n: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="i18n") + ) + image_labels: "dict[str, list[str]] | None" = dc_field( + default=None, metadata=dc_config(field_name="image_labels") + ) + member: "ChannelMemberPartialResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="member") + ) + moderation: "ChatModerationV2Response | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation") + ) # User response object - pinned_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="pinned_by")) - poll: 'PollResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll")) - quoted_message: 'ChatMessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="quoted_message")) - reaction_groups: 'dict[str, ChatReactionGroupResponse | None] | None' = dc_field(default=None, metadata=dc_config(field_name="reaction_groups")) - reminder: 'ChatReminderResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="reminder")) - shared_location: 'ChatSharedLocationResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="shared_location")) + pinned_by: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="pinned_by") + ) + poll: "PollResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="poll") + ) + quoted_message: "ChatMessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="quoted_message") + ) + reaction_groups: "dict[str, ChatReactionGroupResponse | None] | None" = dc_field( + default=None, metadata=dc_config(field_name="reaction_groups") + ) + reminder: "ChatReminderResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="reminder") + ) + shared_location: "ChatSharedLocationResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="shared_location") + ) + @dataclass class ChatModerationV2Response(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) original_text: str = dc_field(metadata=dc_config(field_name="original_text")) - blocklist_matched: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_matched")) - platform_circumvented: bool | None = dc_field(default=None, metadata=dc_config(field_name="platform_circumvented")) - semantic_filter_matched: str | None = dc_field(default=None, metadata=dc_config(field_name="semantic_filter_matched")) - blocklists_matched: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="blocklists_matched")) - image_harms: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="image_harms")) - text_harms: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="text_harms")) + blocklist_matched: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist_matched") + ) + platform_circumvented: bool | None = dc_field( + default=None, metadata=dc_config(field_name="platform_circumvented") + ) + semantic_filter_matched: str | None = dc_field( + default=None, metadata=dc_config(field_name="semantic_filter_matched") + ) + blocklists_matched: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="blocklists_matched") + ) + image_harms: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="image_harms") + ) + text_harms: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="text_harms") + ) + @dataclass class ChatPreferences(DataClassJsonMixin): - channel_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_mentions")) - default_preference: str | None = dc_field(default=None, metadata=dc_config(field_name="default_preference")) - direct_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="direct_mentions")) - distinct_channel_messages: str | None = dc_field(default=None, metadata=dc_config(field_name="distinct_channel_messages")) - group_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="group_mentions")) - here_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="here_mentions")) - role_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="role_mentions")) - thread_replies: str | None = dc_field(default=None, metadata=dc_config(field_name="thread_replies")) + channel_mentions: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_mentions") + ) + default_preference: str | None = dc_field( + default=None, metadata=dc_config(field_name="default_preference") + ) + direct_mentions: str | None = dc_field( + default=None, metadata=dc_config(field_name="direct_mentions") + ) + distinct_channel_messages: str | None = dc_field( + default=None, metadata=dc_config(field_name="distinct_channel_messages") + ) + group_mentions: str | None = dc_field( + default=None, metadata=dc_config(field_name="group_mentions") + ) + here_mentions: str | None = dc_field( + default=None, metadata=dc_config(field_name="here_mentions") + ) + role_mentions: str | None = dc_field( + default=None, metadata=dc_config(field_name="role_mentions") + ) + thread_replies: str | None = dc_field( + default=None, metadata=dc_config(field_name="thread_replies") + ) + @dataclass class ChatPreferencesInput(DataClassJsonMixin): - channel_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_mentions")) - default_preference: str | None = dc_field(default=None, metadata=dc_config(field_name="default_preference")) - direct_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="direct_mentions")) - group_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="group_mentions")) - here_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="here_mentions")) - role_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="role_mentions")) - thread_replies: str | None = dc_field(default=None, metadata=dc_config(field_name="thread_replies")) + channel_mentions: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_mentions") + ) + default_preference: str | None = dc_field( + default=None, metadata=dc_config(field_name="default_preference") + ) + direct_mentions: str | None = dc_field( + default=None, metadata=dc_config(field_name="direct_mentions") + ) + group_mentions: str | None = dc_field( + default=None, metadata=dc_config(field_name="group_mentions") + ) + here_mentions: str | None = dc_field( + default=None, metadata=dc_config(field_name="here_mentions") + ) + role_mentions: str | None = dc_field( + default=None, metadata=dc_config(field_name="role_mentions") + ) + thread_replies: str | None = dc_field( + default=None, metadata=dc_config(field_name="thread_replies") + ) + @dataclass class ChatPreferencesResponse(DataClassJsonMixin): - channel_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_mentions")) - default_preference: str | None = dc_field(default=None, metadata=dc_config(field_name="default_preference")) - direct_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="direct_mentions")) - group_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="group_mentions")) - here_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="here_mentions")) - role_mentions: str | None = dc_field(default=None, metadata=dc_config(field_name="role_mentions")) - thread_replies: str | None = dc_field(default=None, metadata=dc_config(field_name="thread_replies")) + channel_mentions: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_mentions") + ) + default_preference: str | None = dc_field( + default=None, metadata=dc_config(field_name="default_preference") + ) + direct_mentions: str | None = dc_field( + default=None, metadata=dc_config(field_name="direct_mentions") + ) + group_mentions: str | None = dc_field( + default=None, metadata=dc_config(field_name="group_mentions") + ) + here_mentions: str | None = dc_field( + default=None, metadata=dc_config(field_name="here_mentions") + ) + role_mentions: str | None = dc_field( + default=None, metadata=dc_config(field_name="role_mentions") + ) + thread_replies: str | None = dc_field( + default=None, metadata=dc_config(field_name="thread_replies") + ) + @dataclass class ChatReactionGroupResponse(DataClassJsonMixin): count: int = dc_field(metadata=dc_config(field_name="count")) - first_reaction_at: datetime = dc_field(metadata=dc_config(field_name="first_reaction_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - last_reaction_at: datetime = dc_field(metadata=dc_config(field_name="last_reaction_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + first_reaction_at: datetime = dc_field( + metadata=dc_config( + field_name="first_reaction_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + last_reaction_at: datetime = dc_field( + metadata=dc_config( + field_name="last_reaction_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) sum_scores: int = dc_field(metadata=dc_config(field_name="sum_scores")) - latest_reactions_by: 'list[ChatReactionGroupUserResponse]' = dc_field(metadata=dc_config(field_name="latest_reactions_by")) + latest_reactions_by: "list[ChatReactionGroupUserResponse]" = dc_field( + metadata=dc_config(field_name="latest_reactions_by") + ) + @dataclass class ChatReactionGroupUserResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ChatReactionResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) score: int = dc_field(metadata=dc_config(field_name="score")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + @dataclass class ChatReminderResponseData(DataClassJsonMixin): channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - remind_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="remind_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - message: 'ChatMessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + remind_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="remind_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + message: "ChatMessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ChatSharedLocationResponseData(DataClassJsonMixin): channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - created_by_device_id: str = dc_field(metadata=dc_config(field_name="created_by_device_id")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + created_by_device_id: str = dc_field( + metadata=dc_config(field_name="created_by_device_id") + ) latitude: float = dc_field(metadata=dc_config(field_name="latitude")) longitude: float = dc_field(metadata=dc_config(field_name="longitude")) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - end_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="end_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - message: 'ChatMessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + end_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="end_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + message: "ChatMessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + @dataclass class CheckExternalStorageResponse(DataClassJsonMixin): @@ -3833,102 +8188,188 @@ class CheckExternalStorageResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) file_url: str = dc_field(metadata=dc_config(field_name="file_url")) + @dataclass class CheckPushRequest(DataClassJsonMixin): # Push message template for APN - apn_template: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_template")) + apn_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_template") + ) # Type of event for push templates (default: message.new). One of: message.new, message.updated, reaction.new, reaction.updated, notification.reminder_due - event_type: str | None = dc_field(default=None, metadata=dc_config(field_name="event_type")) + event_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="event_type") + ) # Push message data template for Firebase - firebase_data_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_data_template")) + firebase_data_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_data_template") + ) # Push message template for Firebase - firebase_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_template")) + firebase_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_template") + ) # Message ID to send push notification for - message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="message_id")) + message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="message_id") + ) # Name of push provider - push_provider_name: str | None = dc_field(default=None, metadata=dc_config(field_name="push_provider_name")) + push_provider_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_provider_name") + ) # Push provider type. One of: firebase, apn, huawei, xiaomi - push_provider_type: str | None = dc_field(default=None, metadata=dc_config(field_name="push_provider_type")) + push_provider_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_provider_type") + ) # Don't require existing devices to render templates - skip_devices: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_devices")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + skip_devices: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_devices") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CheckPushResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # The event type that was tested - event_type: str | None = dc_field(default=None, metadata=dc_config(field_name="event_type")) - rendered_apn_template: str | None = dc_field(default=None, metadata=dc_config(field_name="rendered_apn_template")) - rendered_firebase_template: str | None = dc_field(default=None, metadata=dc_config(field_name="rendered_firebase_template")) + event_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="event_type") + ) + rendered_apn_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="rendered_apn_template") + ) + rendered_firebase_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="rendered_firebase_template") + ) # Don't require existing devices to render templates - skip_devices: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_devices")) + skip_devices: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_devices") + ) # List of general errors - general_errors: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="general_errors")) + general_errors: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="general_errors") + ) # Object with device errors - device_errors: 'dict[str, DeviceErrorInfo] | None' = dc_field(default=None, metadata=dc_config(field_name="device_errors")) - rendered_message: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="rendered_message")) + device_errors: "dict[str, DeviceErrorInfo] | None" = dc_field( + default=None, metadata=dc_config(field_name="device_errors") + ) + rendered_message: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="rendered_message") + ) + @dataclass class CheckRequest(DataClassJsonMixin): # ID of the user who created the entity - entity_creator_id: str = dc_field(metadata=dc_config(field_name="entity_creator_id")) + entity_creator_id: str = dc_field( + metadata=dc_config(field_name="entity_creator_id") + ) # Unique identifier of the entity to moderate entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) # Type of entity to moderate entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) # Key of the moderation configuration to use - config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) + config_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="config_key") + ) # Team associated with the configuration - config_team: str | None = dc_field(default=None, metadata=dc_config(field_name="config_team")) + config_team: str | None = dc_field( + default=None, metadata=dc_config(field_name="config_team") + ) # Original timestamp when the content was produced (for correlating flagged content with source video timeline) - content_published_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="content_published_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + content_published_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="content_published_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Whether to run moderation in test mode - test_mode: bool | None = dc_field(default=None, metadata=dc_config(field_name="test_mode")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - config: 'ModerationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="config")) - moderation_payload: 'ModerationPayload | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_payload")) + test_mode: bool | None = dc_field( + default=None, metadata=dc_config(field_name="test_mode") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + config: "ModerationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="config") + ) + moderation_payload: "ModerationPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation_payload") + ) # Additional moderation configuration options - options: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="options")) + options: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="options") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CheckResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Suggested action based on moderation results - recommended_action: str = dc_field(metadata=dc_config(field_name="recommended_action")) + recommended_action: str = dc_field( + metadata=dc_config(field_name="recommended_action") + ) # Status of the moderation check (completed or pending) status: str = dc_field(metadata=dc_config(field_name="status")) # ID of the running moderation task - task_id: str | None = dc_field(default=None, metadata=dc_config(field_name="task_id")) + task_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="task_id") + ) # All moderation rules triggered by this check (content, user, and call rules), with their resolved actions - triggered_rules: 'list[TriggeredRuleResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="triggered_rules")) - item: 'ReviewQueueItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="item")) - triggered_rule: 'TriggeredRuleResponse | None' = dc_field(default=None, metadata=dc_config(field_name="triggered_rule")) + triggered_rules: "list[TriggeredRuleResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="triggered_rules") + ) + item: "ReviewQueueItemResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="item") + ) + triggered_rule: "TriggeredRuleResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="triggered_rule") + ) + @dataclass class CheckS3AccessRequest(DataClassJsonMixin): # Optional stream+s3:// reference to test access against s3_url: str | None = dc_field(default=None, metadata=dc_config(field_name="s3_url")) + @dataclass class CheckS3AccessResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Whether the S3 access check succeeded success: bool = dc_field(metadata=dc_config(field_name="success")) # Descriptive message about the check result - message: str | None = dc_field(default=None, metadata=dc_config(field_name="message")) + message: str | None = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + @dataclass class CheckSNSRequest(DataClassJsonMixin): # AWS SNS access key - sns_key: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_key")) + sns_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="sns_key") + ) # AWS SNS key secret - sns_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_secret")) + sns_secret: str | None = dc_field( + default=None, metadata=dc_config(field_name="sns_secret") + ) # AWS SNS topic ARN - sns_topic_arn: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_topic_arn")) + sns_topic_arn: str | None = dc_field( + default=None, metadata=dc_config(field_name="sns_topic_arn") + ) + @dataclass class CheckSNSResponse(DataClassJsonMixin): @@ -3938,16 +8379,26 @@ class CheckSNSResponse(DataClassJsonMixin): # Error text error: str | None = dc_field(default=None, metadata=dc_config(field_name="error")) # Error data - data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) + data: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="data") + ) + @dataclass class CheckSQSRequest(DataClassJsonMixin): # AWS SQS access key - sqs_key: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_key")) + sqs_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="sqs_key") + ) # AWS SQS key secret - sqs_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_secret")) + sqs_secret: str | None = dc_field( + default=None, metadata=dc_config(field_name="sqs_secret") + ) # AWS SQS endpoint URL - sqs_url: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_url")) + sqs_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="sqs_url") + ) + @dataclass class CheckSQSResponse(DataClassJsonMixin): @@ -3957,95 +8408,194 @@ class CheckSQSResponse(DataClassJsonMixin): # Error text error: str | None = dc_field(default=None, metadata=dc_config(field_name="error")) # Error data - data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) + data: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="data") + ) + @dataclass class Classification(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) - confidence: float | None = dc_field(default=None, metadata=dc_config(field_name="confidence")) - severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) - matched_contributors: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="matched_contributors")) - subclassifications: 'list[Classification] | None' = dc_field(default=None, metadata=dc_config(field_name="subclassifications")) + confidence: float | None = dc_field( + default=None, metadata=dc_config(field_name="confidence") + ) + severity: str | None = dc_field( + default=None, metadata=dc_config(field_name="severity") + ) + matched_contributors: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="matched_contributors") + ) + subclassifications: "list[Classification] | None" = dc_field( + default=None, metadata=dc_config(field_name="subclassifications") + ) + @dataclass class ClientEvent(DataClassJsonMixin): # Call session ID associated with the attempt. Required on every event except CoordinatorJoin initiation and CoordinatorJoin failure (where the call session is not yet established); optional on MediaDevicePermission. - call_session_id: str | None = dc_field(default=None, metadata=dc_config(field_name="call_session_id")) + call_session_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="call_session_id") + ) # Camera permission status: INITIATED, FAILED, GRANTED, or NOT_INITIATED. Required on every MediaDevicePermission event. - camera_permission_status: str | None = dc_field(default=None, metadata=dc_config(field_name="camera_permission_status")) + camera_permission_status: str | None = dc_field( + default=None, metadata=dc_config(field_name="camera_permission_status") + ) # UUID generated by the client and shared across every event of the same coordinator connection. Required on every event except JoinInitiated, which is reported before a coordinator connection exists. - coordinator_connect_id: str | None = dc_field(default=None, metadata=dc_config(field_name="coordinator_connect_id")) - # Milliseconds elapsed between the stage attempt's initiation and this event. - elapsed_time: int | None = dc_field(default=None, metadata=dc_config(field_name="elapsed_time")) + coordinator_connect_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="coordinator_connect_id") + ) + # Milliseconds elapsed between the stage attempt's initiation and this event. + elapsed_time: int | None = dc_field( + default=None, metadata=dc_config(field_name="elapsed_time") + ) # Whether the event marks the start (initiated) or resolution (completed) of a stage attempt, or another event-specific value - event_type: str | None = dc_field(default=None, metadata=dc_config(field_name="event_type")) + event_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="event_type") + ) # Terminal state of the peer connection. Required on PeerConnectionConnect failure. - ice_state: str | None = dc_field(default=None, metadata=dc_config(field_name="ice_state")) + ice_state: str | None = dc_field( + default=None, metadata=dc_config(field_name="ice_state") + ) # Call ID associated with the event. Required on every stage except CoordinatorWS, where it is optional. id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # UUID generated by the client and shared across JoinInitiated and the join-lifecycle events (CoordinatorJoin, WSJoin, PeerConnectionConnect) of the same overall join attempt. Required on every join event except CoordinatorWS, which is reported before a join attempt is established. - join_attempt_id: str | None = dc_field(default=None, metadata=dc_config(field_name="join_attempt_id")) + join_attempt_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="join_attempt_id") + ) # Reason the client initiated the join. Optional on CoordinatorJoin events; empty when not provided. - join_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="join_reason")) + join_reason: str | None = dc_field( + default=None, metadata=dc_config(field_name="join_reason") + ) # Microphone permission status: INITIATED, FAILED, GRANTED, or NOT_INITIATED. Required on every MediaDevicePermission event. - microphone_permission_status: str | None = dc_field(default=None, metadata=dc_config(field_name="microphone_permission_status")) + microphone_permission_status: str | None = dc_field( + default=None, metadata=dc_config(field_name="microphone_permission_status") + ) # Resolution of a completed event: success or failure. Required on completed join events; forbidden on initiated join events. - outcome: str | None = dc_field(default=None, metadata=dc_config(field_name="outcome")) + outcome: str | None = dc_field( + default=None, metadata=dc_config(field_name="outcome") + ) # Which peer connection a PeerConnectionConnect event reports on: publish or subscribe. Required on every PeerConnectionConnect event. - peer_connection: str | None = dc_field(default=None, metadata=dc_config(field_name="peer_connection")) + peer_connection: str | None = dc_field( + default=None, metadata=dc_config(field_name="peer_connection") + ) # UTC timestamp at which the ICE connection was established earlier in the session, when applicable - previously_connected_timestamp: datetime | None = dc_field(default=None, metadata=dc_config(field_name="previously_connected_timestamp", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + previously_connected_timestamp: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="previously_connected_timestamp", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Total in-stage retries the client made before resolving (0–1000). Required on completed join events. - retry_count_attempt: int | None = dc_field(default=None, metadata=dc_config(field_name="retry_count_attempt")) + retry_count_attempt: int | None = dc_field( + default=None, metadata=dc_config(field_name="retry_count_attempt") + ) # Failure code string. Required on CoordinatorJoin, CoordinatorWS, WSJoin, and PeerConnectionConnect failure. - retry_failure_code: str | None = dc_field(default=None, metadata=dc_config(field_name="retry_failure_code")) + retry_failure_code: str | None = dc_field( + default=None, metadata=dc_config(field_name="retry_failure_code") + ) # Failure reason string. Required on CoordinatorJoin, CoordinatorWS, WSJoin, and PeerConnectionConnect failure. - retry_failure_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="retry_failure_reason")) + retry_failure_reason: str | None = dc_field( + default=None, metadata=dc_config(field_name="retry_failure_reason") + ) # Screen-share permission status: INITIATED, FAILED, GRANTED, or NOT_INITIATED. Optional on MediaDevicePermission events. - screen_share_status: str | None = dc_field(default=None, metadata=dc_config(field_name="screen_share_status")) + screen_share_status: str | None = dc_field( + default=None, metadata=dc_config(field_name="screen_share_status") + ) # Version of the client SDK - sdk_version: str | None = dc_field(default=None, metadata=dc_config(field_name="sdk_version")) + sdk_version: str | None = dc_field( + default=None, metadata=dc_config(field_name="sdk_version") + ) # Identifier of the SFU the client was attempting to connect to. Required on WSJoin and PeerConnectionConnect failure, and on FirstAudioFrame and FirstVideoFrame. sfu_id: str | None = dc_field(default=None, metadata=dc_config(field_name="sfu_id")) # Discriminator identifying the event kind. JoinInitiated marks the start of a join attempt; join-lifecycle events use CoordinatorJoin, CoordinatorWS, WSJoin, or PeerConnectionConnect; media-readiness events use FirstAudioFrame or FirstVideoFrame; MediaDevicePermission reports device permission results; other values denote generic client events. stage: str | None = dc_field(default=None, metadata=dc_config(field_name="stage")) # UUID generated by the client at initiation. Identical on the matching completion event. Absent on JoinInitiated. - stage_id: str | None = dc_field(default=None, metadata=dc_config(field_name="stage_id")) + stage_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="stage_id") + ) # UTC timestamp at which the event was recorded - timestamp: datetime | None = dc_field(default=None, metadata=dc_config(field_name="timestamp", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + timestamp: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="timestamp", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Identifier of the media track the frame belongs to. Required on FirstVideoFrame; optional on FirstAudioFrame. - track_id: str | None = dc_field(default=None, metadata=dc_config(field_name="track_id")) + track_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="track_id") + ) # Call type associated with the event. Required on every stage except CoordinatorWS, where it is optional. type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) # User agent string of the client SDK - user_agent: str | None = dc_field(default=None, metadata=dc_config(field_name="user_agent")) + user_agent: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_agent") + ) # ID of the user the event was recorded for - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Whether the ICE connection had been established earlier in the same session. Required on every PeerConnectionConnect event so reconnects can be distinguished from fresh connects. - was_previously_connected: bool | None = dc_field(default=None, metadata=dc_config(field_name="was_previously_connected")) + was_previously_connected: bool | None = dc_field( + default=None, metadata=dc_config(field_name="was_previously_connected") + ) + @dataclass class ClientOSDataResponse(DataClassJsonMixin): - architecture: str | None = dc_field(default=None, metadata=dc_config(field_name="architecture")) + architecture: str | None = dc_field( + default=None, metadata=dc_config(field_name="architecture") + ) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - version: str | None = dc_field(default=None, metadata=dc_config(field_name="version")) + version: str | None = dc_field( + default=None, metadata=dc_config(field_name="version") + ) + @dataclass class ClosedCaptionEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # CallClosedCaption represents a closed caption of a call. - closed_caption: 'CallClosedCaption' = dc_field(metadata=dc_config(field_name="closed_caption")) + closed_caption: "CallClosedCaption" = dc_field( + metadata=dc_config(field_name="closed_caption") + ) # The type of event: "call.closed_caption" in this case - type: str = dc_field(default="call.closed_caption", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.closed_caption", metadata=dc_config(field_name="type") + ) + @dataclass class ClosedCaptionRuleParameters(DataClassJsonMixin): - severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) - harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) - llm_harm_labels: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="llm_harm_labels")) + severity: str | None = dc_field( + default=None, metadata=dc_config(field_name="severity") + ) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + time_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="time_window") + ) + harm_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="harm_labels") + ) + llm_harm_labels: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="llm_harm_labels") + ) + @dataclass class CollectUserFeedbackRequest(DataClassJsonMixin): @@ -4053,14 +8603,20 @@ class CollectUserFeedbackRequest(DataClassJsonMixin): sdk: str = dc_field(metadata=dc_config(field_name="sdk")) sdk_version: str = dc_field(metadata=dc_config(field_name="sdk_version")) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - user_session_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_session_id")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + user_session_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_session_id") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class CollectUserFeedbackResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class CollectionRequest(DataClassJsonMixin): # Name/type of the collection @@ -4070,7 +8626,10 @@ class CollectionRequest(DataClassJsonMixin): # Unique identifier for the collection within its name (optional, will be auto-generated if not provided) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # ID of the user who owns this collection - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + @dataclass class CollectionResponse(DataClassJsonMixin): @@ -4079,13 +8638,34 @@ class CollectionResponse(DataClassJsonMixin): # Name/type of the collection name: str = dc_field(metadata=dc_config(field_name="name")) # When the collection was created - created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # When the collection was last updated - updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # ID of the user who owns this collection - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Custom data for the collection - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class Command(DataClassJsonMixin): @@ -4098,87 +8678,227 @@ class Command(DataClassJsonMixin): # Set name used for grouping commands set: str = dc_field(metadata=dc_config(field_name="set")) # Date/time of creation - created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Date/time of the last update - updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class CommentAddedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) - comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.comment.added" in this case - type: str = dc_field(default="feeds.comment.added", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.comment.added", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CommentDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) - comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) + comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.comment.deleted" in this case - type: str = dc_field(default="feeds.comment.deleted", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.comment.deleted", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CommentReactionAddedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) - comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) + reaction: "FeedsReactionResponse" = dc_field( + metadata=dc_config(field_name="reaction") + ) # The type of event: "feeds.comment.reaction.added" in this case - type: str = dc_field(default="feeds.comment.reaction.added", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.comment.reaction.added", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CommentReactionDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) - comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) + comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) + reaction: "FeedsReactionResponse" = dc_field( + metadata=dc_config(field_name="reaction") + ) # The type of reaction that was removed - type: str = dc_field(default="feeds.comment.reaction.deleted", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="feeds.comment.reaction.deleted", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class CommentReactionUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) - comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) + reaction: "FeedsReactionResponse" = dc_field( + metadata=dc_config(field_name="reaction") + ) # The type of event: "feeds.comment.reaction.updated" in this case - type: str = dc_field(default="feeds.comment.reaction.updated", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.comment.reaction.updated", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CommentResponse(DataClassJsonMixin): bookmark_count: int = dc_field(metadata=dc_config(field_name="bookmark_count")) # Confidence score of the comment - confidence_score: float = dc_field(metadata=dc_config(field_name="confidence_score")) + confidence_score: float = dc_field( + metadata=dc_config(field_name="confidence_score") + ) # When the comment was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Number of downvotes for this comment downvote_count: int = dc_field(metadata=dc_config(field_name="downvote_count")) # Unique identifier for the comment @@ -4196,70 +8916,160 @@ class CommentResponse(DataClassJsonMixin): # Status of the comment. One of: active, deleted, removed, hidden status: str = dc_field(metadata=dc_config(field_name="status")) # When the comment was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Number of upvotes for this comment upvote_count: int = dc_field(metadata=dc_config(field_name="upvote_count")) # Users mentioned in the comment - mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) + mentioned_users: "list[UserResponse]" = dc_field( + metadata=dc_config(field_name="mentioned_users") + ) # Current user's reactions to this activity - own_reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) + own_reactions: "list[FeedsReactionResponse]" = dc_field( + metadata=dc_config(field_name="own_reactions") + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # Controversy score of the comment - controversy_score: float | None = dc_field(default=None, metadata=dc_config(field_name="controversy_score")) + controversy_score: float | None = dc_field( + default=None, metadata=dc_config(field_name="controversy_score") + ) # When the comment was deleted - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # When the comment was last edited - edited_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="edited_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + edited_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="edited_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # ID of parent comment for nested replies - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) # Text content of the comment text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) # Attachments associated with the comment - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) # Recent reactions to the comment - latest_reactions: 'list[FeedsReactionResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_reactions")) + latest_reactions: "list[FeedsReactionResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="latest_reactions") + ) # Custom data for the comment - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) - moderation: 'ModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + i18n: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="i18n") + ) + moderation: "ModerationV2Response | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation") + ) # Grouped reactions by type - reaction_groups: 'dict[str, FeedsReactionGroupResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="reaction_groups")) + reaction_groups: "dict[str, FeedsReactionGroupResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="reaction_groups") + ) + @dataclass class CommentRestoredEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) - comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) + comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.comment.restored" in this case - type: str = dc_field(default="feeds.comment.restored", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.comment.restored", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CommentUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) - comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) + comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.comment.updated" in this case - type: str = dc_field(default="feeds.comment.updated", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.comment.updated", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CommitMessageRequest(DataClassJsonMixin): pass + @dataclass class CompositeRecordingResponse(DataClassJsonMixin): status: str = dc_field(metadata=dc_config(field_name="status")) + @dataclass class ConcurrencyMinute(DataClassJsonMixin): joins: int = dc_field(metadata=dc_config(field_name="joins")) @@ -4268,87 +9078,188 @@ class ConcurrencyMinute(DataClassJsonMixin): min: int = dc_field(metadata=dc_config(field_name="min")) minute: str = dc_field(metadata=dc_config(field_name="minute")) + @dataclass class ConfigOverridesRequest(DataClassJsonMixin): # Blocklist name - blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) + blocklist: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist") + ) # Blocklist behavior. One of: flag, block - blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) + blocklist_behavior: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist_behavior") + ) # Enable/disable message counting - count_messages: bool | None = dc_field(default=None, metadata=dc_config(field_name="count_messages")) + count_messages: bool | None = dc_field( + default=None, metadata=dc_config(field_name="count_messages") + ) # Maximum message length - max_message_length: int | None = dc_field(default=None, metadata=dc_config(field_name="max_message_length")) - push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) + max_message_length: int | None = dc_field( + default=None, metadata=dc_config(field_name="max_message_length") + ) + push_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_level") + ) # Enable/disable quotes - quotes: bool | None = dc_field(default=None, metadata=dc_config(field_name="quotes")) + quotes: bool | None = dc_field( + default=None, metadata=dc_config(field_name="quotes") + ) # Enable/disable reactions - reactions: bool | None = dc_field(default=None, metadata=dc_config(field_name="reactions")) + reactions: bool | None = dc_field( + default=None, metadata=dc_config(field_name="reactions") + ) # Enable/disable replies - replies: bool | None = dc_field(default=None, metadata=dc_config(field_name="replies")) + replies: bool | None = dc_field( + default=None, metadata=dc_config(field_name="replies") + ) # Enable/disable shared locations - shared_locations: bool | None = dc_field(default=None, metadata=dc_config(field_name="shared_locations")) + shared_locations: bool | None = dc_field( + default=None, metadata=dc_config(field_name="shared_locations") + ) # Enable/disable typing events - typing_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="typing_events")) + typing_events: bool | None = dc_field( + default=None, metadata=dc_config(field_name="typing_events") + ) # Enable/disable uploads - uploads: bool | None = dc_field(default=None, metadata=dc_config(field_name="uploads")) + uploads: bool | None = dc_field( + default=None, metadata=dc_config(field_name="uploads") + ) # Enable/disable URL enrichment - url_enrichment: bool | None = dc_field(default=None, metadata=dc_config(field_name="url_enrichment")) + url_enrichment: bool | None = dc_field( + default=None, metadata=dc_config(field_name="url_enrichment") + ) # Enable/disable user message reminders - user_message_reminders: bool | None = dc_field(default=None, metadata=dc_config(field_name="user_message_reminders")) + user_message_reminders: bool | None = dc_field( + default=None, metadata=dc_config(field_name="user_message_reminders") + ) # List of available commands - commands: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="commands")) - chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) + commands: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="commands") + ) + chat_preferences: "ChatPreferences | None" = dc_field( + default=None, metadata=dc_config(field_name="chat_preferences") + ) # Permission grants modifiers - grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) + grants: "dict[str, list[str]] | None" = dc_field( + default=None, metadata=dc_config(field_name="grants") + ) + @dataclass class ConfigResponse(DataClassJsonMixin): # Whether moderation should be performed asynchronously _async: bool = dc_field(metadata=dc_config(field_name="async")) # When the configuration was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Unique identifier for the moderation configuration key: str = dc_field(metadata=dc_config(field_name="key")) # Team associated with the configuration team: str = dc_field(metadata=dc_config(field_name="team")) # When the configuration was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - supported_video_call_harm_types: list[str] = dc_field(metadata=dc_config(field_name="supported_video_call_harm_types")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + supported_video_call_harm_types: list[str] = dc_field( + metadata=dc_config(field_name="supported_video_call_harm_types") + ) # Configurable image moderation label definitions for dashboard rendering - ai_image_label_definitions: 'list[AIImageLabelDefinition] | None' = dc_field(default=None, metadata=dc_config(field_name="ai_image_label_definitions")) + ai_image_label_definitions: "list[AIImageLabelDefinition] | None" = dc_field( + default=None, metadata=dc_config(field_name="ai_image_label_definitions") + ) # Names of Bodyguard credential profiles registered on this app. The dashboard uses this list to render the profile picker on the AI Text section. - available_bodyguard_profiles: 'list[BodyguardProfileSummary] | None' = dc_field(default=None, metadata=dc_config(field_name="available_bodyguard_profiles")) - ai_audio_config: 'AIAudioConfigResponse | None' = dc_field(default=None, metadata=dc_config(field_name="ai_audio_config")) - ai_image_config: 'AIImageConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ai_image_config")) + available_bodyguard_profiles: "list[BodyguardProfileSummary] | None" = dc_field( + default=None, metadata=dc_config(field_name="available_bodyguard_profiles") + ) + ai_audio_config: "AIAudioConfigResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="ai_audio_config") + ) + ai_image_config: "AIImageConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="ai_image_config") + ) # Available L2 subclassifications per L1 image moderation label, based on the active provider - ai_image_subclassifications: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="ai_image_subclassifications")) - ai_text_config: 'AITextConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ai_text_config")) - ai_video_config: 'AIVideoConfigResponse | None' = dc_field(default=None, metadata=dc_config(field_name="ai_video_config")) - automod_platform_circumvention_config: 'AutomodPlatformCircumventionConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_platform_circumvention_config")) - automod_semantic_filters_config: 'AutomodSemanticFiltersConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_semantic_filters_config")) - automod_toxicity_config: 'AutomodToxicityConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_toxicity_config")) - block_list_config: 'BlockListConfig | None' = dc_field(default=None, metadata=dc_config(field_name="block_list_config")) - flood_config: 'FloodConfig | None' = dc_field(default=None, metadata=dc_config(field_name="flood_config")) - llm_config: 'LLMConfig | None' = dc_field(default=None, metadata=dc_config(field_name="llm_config")) - velocity_filter_config: 'VelocityFilterConfig | None' = dc_field(default=None, metadata=dc_config(field_name="velocity_filter_config")) - video_call_rule_config: 'VideoCallRuleConfig | None' = dc_field(default=None, metadata=dc_config(field_name="video_call_rule_config")) + ai_image_subclassifications: "dict[str, list[str]] | None" = dc_field( + default=None, metadata=dc_config(field_name="ai_image_subclassifications") + ) + ai_text_config: "AITextConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="ai_text_config") + ) + ai_video_config: "AIVideoConfigResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="ai_video_config") + ) + automod_platform_circumvention_config: "AutomodPlatformCircumventionConfig | None" = dc_field( + default=None, + metadata=dc_config(field_name="automod_platform_circumvention_config"), + ) + automod_semantic_filters_config: "AutomodSemanticFiltersConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="automod_semantic_filters_config") + ) + automod_toxicity_config: "AutomodToxicityConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="automod_toxicity_config") + ) + block_list_config: "BlockListConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="block_list_config") + ) + flood_config: "FloodConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="flood_config") + ) + llm_config: "LLMConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="llm_config") + ) + velocity_filter_config: "VelocityFilterConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="velocity_filter_config") + ) + video_call_rule_config: "VideoCallRuleConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="video_call_rule_config") + ) + @dataclass class ContentCountRuleParameters(DataClassJsonMixin): - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + time_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="time_window") + ) + @dataclass class ContentCustomPropertyCountParameters(DataClassJsonMixin): - operator: str | None = dc_field(default=None, metadata=dc_config(field_name="operator")) - property_key: str | None = dc_field(default=None, metadata=dc_config(field_name="property_key")) - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) + operator: str | None = dc_field( + default=None, metadata=dc_config(field_name="operator") + ) + property_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="property_key") + ) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + time_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="time_window") + ) + @dataclass class ContentCustomPropertyParameters(DataClassJsonMixin): - operator: str | None = dc_field(default=None, metadata=dc_config(field_name="operator")) - property_key: str | None = dc_field(default=None, metadata=dc_config(field_name="property_key")) + operator: str | None = dc_field( + default=None, metadata=dc_config(field_name="operator") + ) + property_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="property_key") + ) + @dataclass class CoordinatesResponse(DataClassJsonMixin): @@ -4357,16 +9268,28 @@ class CoordinatesResponse(DataClassJsonMixin): # Longitude coordinate longitude: float = dc_field(metadata=dc_config(field_name="longitude")) + @dataclass class CountByMinuteResponse(DataClassJsonMixin): count: int = dc_field(metadata=dc_config(field_name="count")) - start_ts: datetime = dc_field(metadata=dc_config(field_name="start_ts", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + start_ts: datetime = dc_field( + metadata=dc_config( + field_name="start_ts", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + @dataclass class Coverage(DataClassJsonMixin): - publisher_encoding_profiles: int = dc_field(metadata=dc_config(field_name="publisher_encoding_profiles")) - absent: 'list[AbsentMetric]' = dc_field(metadata=dc_config(field_name="absent")) - metrics_pct: 'MetricsPct' = dc_field(metadata=dc_config(field_name="metrics_pct")) + publisher_encoding_profiles: int = dc_field( + metadata=dc_config(field_name="publisher_encoding_profiles") + ) + absent: "list[AbsentMetric]" = dc_field(metadata=dc_config(field_name="absent")) + metrics_pct: "MetricsPct" = dc_field(metadata=dc_config(field_name="metrics_pct")) + @dataclass class CreateBlockListRequest(DataClassJsonMixin): @@ -4374,84 +9297,158 @@ class CreateBlockListRequest(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) # List of words to block words: list[str] = dc_field(metadata=dc_config(field_name="words")) - is_confusable_folding_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_confusable_folding_enabled")) - is_leet_check_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_leet_check_enabled")) - is_plural_check_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_plural_check_enabled")) - is_substring_matching_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_substring_matching_enabled")) + is_confusable_folding_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_confusable_folding_enabled") + ) + is_leet_check_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_leet_check_enabled") + ) + is_plural_check_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_plural_check_enabled") + ) + is_substring_matching_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_substring_matching_enabled") + ) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Block list type. One of: regex, domain, domain_allowlist, email, email_allowlist, word type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CreateBlockListResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Block list contains restricted words - blocklist: 'BlockListResponse | None' = dc_field(default=None, metadata=dc_config(field_name="blocklist")) + blocklist: "BlockListResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="blocklist") + ) + @dataclass class CreateCallTypeRequest(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) # the external storage for the call type - external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="external_storage")) + external_storage: str | None = dc_field( + default=None, metadata=dc_config(field_name="external_storage") + ) # the permissions granted to each role - grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) - notification_settings: 'NotificationSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="notification_settings")) - settings: 'CallSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="settings")) + grants: "dict[str, list[str]] | None" = dc_field( + default=None, metadata=dc_config(field_name="grants") + ) + notification_settings: "NotificationSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="notification_settings") + ) + settings: "CallSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="settings") + ) + @dataclass class CreateCallTypeResponse(DataClassJsonMixin): # the time the call type was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) duration: str = dc_field(metadata=dc_config(field_name="duration")) # the name of the call type name: str = dc_field(metadata=dc_config(field_name="name")) # the time the call type was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # the permissions granted to each role - grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) - notification_settings: 'NotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="notification_settings")) - settings: 'CallSettingsResponse' = dc_field(metadata=dc_config(field_name="settings")) + grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) + notification_settings: "NotificationSettingsResponse" = dc_field( + metadata=dc_config(field_name="notification_settings") + ) + settings: "CallSettingsResponse" = dc_field( + metadata=dc_config(field_name="settings") + ) # the external storage for the call type - external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="external_storage")) + external_storage: str | None = dc_field( + default=None, metadata=dc_config(field_name="external_storage") + ) + @dataclass class CreateCampaignRequest(DataClassJsonMixin): # The user ID of the sender sender_id: str = dc_field(metadata=dc_config(field_name="sender_id")) - message_template: 'CampaignMessageTemplate' = dc_field(metadata=dc_config(field_name="message_template")) + message_template: "CampaignMessageTemplate" = dc_field( + metadata=dc_config(field_name="message_template") + ) # Whether to create channels for the campaign, if they don't exist - create_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_channels")) + create_channels: bool | None = dc_field( + default=None, metadata=dc_config(field_name="create_channels") + ) # The description of the campaign - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # The name of the campaign name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # The sender mode of the campaign - sender_mode: str | None = dc_field(default=None, metadata=dc_config(field_name="sender_mode")) + sender_mode: str | None = dc_field( + default=None, metadata=dc_config(field_name="sender_mode") + ) # The visibility of the created channels for the sender - sender_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="sender_visibility")) + sender_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="sender_visibility") + ) # Whether the campaign should show channels, if they are hidden - show_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_channels")) + show_channels: bool | None = dc_field( + default=None, metadata=dc_config(field_name="show_channels") + ) # Whether to skip push notifications - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) # Whether to skip webhooks - skip_webhook: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_webhook")) + skip_webhook: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_webhook") + ) # The IDs of the segments to send the campaign to. Duplicate user IDs are removed. Use either user_ids or segment_ids, not both - segment_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="segment_ids")) + segment_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="segment_ids") + ) # The userIDs to send the campaign to. Use either segment ids or user ids not both - user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="user_ids")) - channel_template: 'CampaignChannelTemplate | None' = dc_field(default=None, metadata=dc_config(field_name="channel_template")) + user_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="user_ids") + ) + channel_template: "CampaignChannelTemplate | None" = dc_field( + default=None, metadata=dc_config(field_name="channel_template") + ) + @dataclass class CreateCampaignResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - campaign: 'CampaignResponse | None' = dc_field(default=None, metadata=dc_config(field_name="campaign")) - users: 'PagerResponse | None' = dc_field(default=None, metadata=dc_config(field_name="users")) + campaign: "CampaignResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="campaign") + ) + users: "PagerResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="users") + ) + @dataclass class CreateChannelTypeRequest(DataClassJsonMixin): @@ -4460,63 +9457,121 @@ class CreateChannelTypeRequest(DataClassJsonMixin): # Automod behavior. One of: flag, block automod_behavior: str = dc_field(metadata=dc_config(field_name="automod_behavior")) # Max message length - max_message_length: int = dc_field(metadata=dc_config(field_name="max_message_length")) + max_message_length: int = dc_field( + metadata=dc_config(field_name="max_message_length") + ) # Channel type name name: str = dc_field(metadata=dc_config(field_name="name")) # Blocklist - blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) + blocklist: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist") + ) # Blocklist behavior. One of: flag, block, shadow_block - blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) + blocklist_behavior: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist_behavior") + ) # Connect events - connect_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="connect_events")) + connect_events: bool | None = dc_field( + default=None, metadata=dc_config(field_name="connect_events") + ) # Count messages in channel. - count_messages: bool | None = dc_field(default=None, metadata=dc_config(field_name="count_messages")) + count_messages: bool | None = dc_field( + default=None, metadata=dc_config(field_name="count_messages") + ) # Custom events - custom_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="custom_events")) - delivery_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="delivery_events")) + custom_events: bool | None = dc_field( + default=None, metadata=dc_config(field_name="custom_events") + ) + delivery_events: bool | None = dc_field( + default=None, metadata=dc_config(field_name="delivery_events") + ) # Mark messages pending - mark_messages_pending: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_messages_pending")) + mark_messages_pending: bool | None = dc_field( + default=None, metadata=dc_config(field_name="mark_messages_pending") + ) # Message retention. One of: infinite, numeric - message_retention: str | None = dc_field(default=None, metadata=dc_config(field_name="message_retention")) + message_retention: str | None = dc_field( + default=None, metadata=dc_config(field_name="message_retention") + ) # Mutes mutes: bool | None = dc_field(default=None, metadata=dc_config(field_name="mutes")) # Partition size - partition_size: int | None = dc_field(default=None, metadata=dc_config(field_name="partition_size")) + partition_size: int | None = dc_field( + default=None, metadata=dc_config(field_name="partition_size") + ) # Partition TTL - partition_ttl: str | None = dc_field(default=None, metadata=dc_config(field_name="partition_ttl")) + partition_ttl: str | None = dc_field( + default=None, metadata=dc_config(field_name="partition_ttl") + ) # Polls polls: bool | None = dc_field(default=None, metadata=dc_config(field_name="polls")) # Default push notification level for the channel type. One of: all, all_mentions, mentions, direct_mentions, none - push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) + push_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_level") + ) # Push notifications - push_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="push_notifications")) + push_notifications: bool | None = dc_field( + default=None, metadata=dc_config(field_name="push_notifications") + ) # Reactions - reactions: bool | None = dc_field(default=None, metadata=dc_config(field_name="reactions")) + reactions: bool | None = dc_field( + default=None, metadata=dc_config(field_name="reactions") + ) # Read events - read_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="read_events")) + read_events: bool | None = dc_field( + default=None, metadata=dc_config(field_name="read_events") + ) # Replies - replies: bool | None = dc_field(default=None, metadata=dc_config(field_name="replies")) + replies: bool | None = dc_field( + default=None, metadata=dc_config(field_name="replies") + ) # Search - search: bool | None = dc_field(default=None, metadata=dc_config(field_name="search")) + search: bool | None = dc_field( + default=None, metadata=dc_config(field_name="search") + ) # Enables shared location messages - shared_locations: bool | None = dc_field(default=None, metadata=dc_config(field_name="shared_locations")) - skip_last_msg_update_for_system_msgs: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs")) + shared_locations: bool | None = dc_field( + default=None, metadata=dc_config(field_name="shared_locations") + ) + skip_last_msg_update_for_system_msgs: bool | None = dc_field( + default=None, + metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs"), + ) # Typing events - typing_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="typing_events")) + typing_events: bool | None = dc_field( + default=None, metadata=dc_config(field_name="typing_events") + ) # Uploads - uploads: bool | None = dc_field(default=None, metadata=dc_config(field_name="uploads")) + uploads: bool | None = dc_field( + default=None, metadata=dc_config(field_name="uploads") + ) # URL enrichment - url_enrichment: bool | None = dc_field(default=None, metadata=dc_config(field_name="url_enrichment")) - user_message_reminders: bool | None = dc_field(default=None, metadata=dc_config(field_name="user_message_reminders")) + url_enrichment: bool | None = dc_field( + default=None, metadata=dc_config(field_name="url_enrichment") + ) + user_message_reminders: bool | None = dc_field( + default=None, metadata=dc_config(field_name="user_message_reminders") + ) # Blocklists - blocklists: 'list[BlockListOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="blocklists")) + blocklists: "list[BlockListOptions] | None" = dc_field( + default=None, metadata=dc_config(field_name="blocklists") + ) # List of commands that channel supports - commands: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="commands")) + commands: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="commands") + ) # List of permissions for the channel type - permissions: 'list[PolicyRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="permissions")) - chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) + permissions: "list[PolicyRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="permissions") + ) + chat_preferences: "ChatPreferences | None" = dc_field( + default=None, metadata=dc_config(field_name="chat_preferences") + ) # List of grants for the channel type - grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) + grants: "dict[str, list[str]] | None" = dc_field( + default=None, metadata=dc_config(field_name="grants") + ) + @dataclass class CreateChannelTypeResponse(DataClassJsonMixin): @@ -4524,17 +9579,32 @@ class CreateChannelTypeResponse(DataClassJsonMixin): automod_behavior: str = dc_field(metadata=dc_config(field_name="automod_behavior")) connect_events: bool = dc_field(metadata=dc_config(field_name="connect_events")) count_messages: bool = dc_field(metadata=dc_config(field_name="count_messages")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom_events: bool = dc_field(metadata=dc_config(field_name="custom_events")) delivery_events: bool = dc_field(metadata=dc_config(field_name="delivery_events")) duration: str = dc_field(metadata=dc_config(field_name="duration")) - mark_messages_pending: bool = dc_field(metadata=dc_config(field_name="mark_messages_pending")) - max_message_length: int = dc_field(metadata=dc_config(field_name="max_message_length")) - message_retention: str = dc_field(metadata=dc_config(field_name="message_retention")) + mark_messages_pending: bool = dc_field( + metadata=dc_config(field_name="mark_messages_pending") + ) + max_message_length: int = dc_field( + metadata=dc_config(field_name="max_message_length") + ) + message_retention: str = dc_field( + metadata=dc_config(field_name="message_retention") + ) mutes: bool = dc_field(metadata=dc_config(field_name="mutes")) name: str = dc_field(metadata=dc_config(field_name="name")) polls: bool = dc_field(metadata=dc_config(field_name="polls")) - push_notifications: bool = dc_field(metadata=dc_config(field_name="push_notifications")) + push_notifications: bool = dc_field( + metadata=dc_config(field_name="push_notifications") + ) quotes: bool = dc_field(metadata=dc_config(field_name="quotes")) reactions: bool = dc_field(metadata=dc_config(field_name="reactions")) read_events: bool = dc_field(metadata=dc_config(field_name="read_events")) @@ -4542,39 +9612,81 @@ class CreateChannelTypeResponse(DataClassJsonMixin): replies: bool = dc_field(metadata=dc_config(field_name="replies")) search: bool = dc_field(metadata=dc_config(field_name="search")) shared_locations: bool = dc_field(metadata=dc_config(field_name="shared_locations")) - skip_last_msg_update_for_system_msgs: bool = dc_field(metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs")) + skip_last_msg_update_for_system_msgs: bool = dc_field( + metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs") + ) typing_events: bool = dc_field(metadata=dc_config(field_name="typing_events")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) uploads: bool = dc_field(metadata=dc_config(field_name="uploads")) url_enrichment: bool = dc_field(metadata=dc_config(field_name="url_enrichment")) - user_message_reminders: bool = dc_field(metadata=dc_config(field_name="user_message_reminders")) + user_message_reminders: bool = dc_field( + metadata=dc_config(field_name="user_message_reminders") + ) commands: list[str] = dc_field(metadata=dc_config(field_name="commands")) - permissions: 'list[PolicyRequest]' = dc_field(metadata=dc_config(field_name="permissions")) - grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) - blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) - blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) - partition_size: int | None = dc_field(default=None, metadata=dc_config(field_name="partition_size")) - partition_ttl: str | None = dc_field(default=None, metadata=dc_config(field_name="partition_ttl")) - push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) - allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) - blocklists: 'list[BlockListOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="blocklists")) + permissions: "list[PolicyRequest]" = dc_field( + metadata=dc_config(field_name="permissions") + ) + grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) + blocklist: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist") + ) + blocklist_behavior: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist_behavior") + ) + partition_size: int | None = dc_field( + default=None, metadata=dc_config(field_name="partition_size") + ) + partition_ttl: str | None = dc_field( + default=None, metadata=dc_config(field_name="partition_ttl") + ) + push_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_level") + ) + allowed_flag_reasons: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowed_flag_reasons") + ) + blocklists: "list[BlockListOptions] | None" = dc_field( + default=None, metadata=dc_config(field_name="blocklists") + ) # Sets thresholds for AI moderation - automod_thresholds: 'Thresholds | None' = dc_field(default=None, metadata=dc_config(field_name="automod_thresholds")) - chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) + automod_thresholds: "Thresholds | None" = dc_field( + default=None, metadata=dc_config(field_name="automod_thresholds") + ) + chat_preferences: "ChatPreferences | None" = dc_field( + default=None, metadata=dc_config(field_name="chat_preferences") + ) + @dataclass class CreateCollectionsRequest(DataClassJsonMixin): # List of collections to create - collections: 'list[CollectionRequest]' = dc_field(metadata=dc_config(field_name="collections")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + collections: "list[CollectionRequest]" = dc_field( + metadata=dc_config(field_name="collections") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CreateCollectionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of created collections - collections: 'list[CollectionResponse]' = dc_field(metadata=dc_config(field_name="collections")) + collections: "list[CollectionResponse]" = dc_field( + metadata=dc_config(field_name="collections") + ) + @dataclass class CreateCommandRequest(DataClassJsonMixin): @@ -4587,11 +9699,15 @@ class CreateCommandRequest(DataClassJsonMixin): # Set name used for grouping commands set: str | None = dc_field(default=None, metadata=dc_config(field_name="set")) + @dataclass class CreateCommandResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents custom chat command - command: 'Command | None' = dc_field(default=None, metadata=dc_config(field_name="command")) + command: "Command | None" = dc_field( + default=None, metadata=dc_config(field_name="command") + ) + @dataclass class CreateDeviceRequest(DataClassJsonMixin): @@ -4600,15 +9716,26 @@ class CreateDeviceRequest(DataClassJsonMixin): # Push provider push_provider: str = dc_field(metadata=dc_config(field_name="push_provider")) # Stable physical device identifier used to deduplicate pushes across push providers (e.g. APNs VoIP and Firebase on the same iOS device). Distinct from 'id', which is the push token. - hardware_id: str | None = dc_field(default=None, metadata=dc_config(field_name="hardware_id")) + hardware_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="hardware_id") + ) # Push provider name - push_provider_name: str | None = dc_field(default=None, metadata=dc_config(field_name="push_provider_name")) + push_provider_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_provider_name") + ) # **Server-side only**. User ID which server acts upon - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # When true the token is for Apple VoIP push notifications - voip_token: bool | None = dc_field(default=None, metadata=dc_config(field_name="voip_token")) + voip_token: bool | None = dc_field( + default=None, metadata=dc_config(field_name="voip_token") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CreateExternalStorageRequest(DataClassJsonMixin): @@ -4618,79 +9745,130 @@ class CreateExternalStorageRequest(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) # The type of storage to use storage_type: str = dc_field(metadata=dc_config(field_name="storage_type")) - gcs_credentials: str | None = dc_field(default=None, metadata=dc_config(field_name="gcs_credentials")) + gcs_credentials: str | None = dc_field( + default=None, metadata=dc_config(field_name="gcs_credentials") + ) # The path prefix to use for storing files path: str | None = dc_field(default=None, metadata=dc_config(field_name="path")) # Config for creating Amazon S3 storage. - aws_s3: 'S3Request | None' = dc_field(default=None, metadata=dc_config(field_name="aws_s3")) + aws_s3: "S3Request | None" = dc_field( + default=None, metadata=dc_config(field_name="aws_s3") + ) # Config for creating Azure Blob Storage storage - azure_blob: 'AzureRequest | None' = dc_field(default=None, metadata=dc_config(field_name="azure_blob")) + azure_blob: "AzureRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="azure_blob") + ) + @dataclass class CreateExternalStorageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class CreateFeedGroupRequest(DataClassJsonMixin): # Unique identifier for the feed group id: str = dc_field(metadata=dc_config(field_name="id")) # Role new followers of feeds in this group are given. Either a built-in (feed_follower, feed_member_viewer) or any role your app has defined. Empty means feed_follower. Applied when the follow is accepted, so a follow that starts pending picks it up on approval - default_follower_role: str | None = dc_field(default=None, metadata=dc_config(field_name="default_follower_role")) - # Default visibility for the feed group, can be 'public', 'visible', 'followers', 'members', or 'private'. Defaults to 'visible' if not provided. - default_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="default_visibility")) + default_follower_role: str | None = dc_field( + default=None, metadata=dc_config(field_name="default_follower_role") + ) + # Default visibility for the feed group, can be 'public', 'visible', 'followers', 'members', or 'private'. Defaults to 'visible' if not provided. + default_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="default_visibility") + ) # Configuration for activity processors - activity_processors: 'list[ActivityProcessorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_processors")) + activity_processors: "list[ActivityProcessorConfig] | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_processors") + ) # Configuration for activity selectors - activity_selectors: 'list[ActivitySelectorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_selectors")) - activity_filter: 'ActivityFilterConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_filter")) - activity_processing: 'ActivityProcessingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_processing")) - aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) + activity_selectors: "list[ActivitySelectorConfig] | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_selectors") + ) + activity_filter: "ActivityFilterConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_filter") + ) + activity_processing: "ActivityProcessingConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_processing") + ) + aggregation: "AggregationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="aggregation") + ) # Custom data for the feed group - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - notification: 'NotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="notification")) - push_notification: 'PushNotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="push_notification")) - ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) - stories: 'StoriesConfig | None' = dc_field(default=None, metadata=dc_config(field_name="stories")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + notification: "NotificationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="notification") + ) + push_notification: "PushNotificationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="push_notification") + ) + ranking: "RankingConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="ranking") + ) + stories: "StoriesConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="stories") + ) + @dataclass class CreateFeedGroupResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_group: 'FeedGroupResponse' = dc_field(metadata=dc_config(field_name="feed_group")) + feed_group: "FeedGroupResponse" = dc_field( + metadata=dc_config(field_name="feed_group") + ) + @dataclass class CreateFeedViewRequest(DataClassJsonMixin): # Unique identifier for the feed view id: str = dc_field(metadata=dc_config(field_name="id")) # Configuration for selecting activities - activity_selectors: 'list[ActivitySelectorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_selectors")) - aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) - ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) + activity_selectors: "list[ActivitySelectorConfig] | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_selectors") + ) + aggregation: "AggregationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="aggregation") + ) + ranking: "RankingConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="ranking") + ) + @dataclass class CreateFeedViewResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_view: 'FeedViewResponse' = dc_field(metadata=dc_config(field_name="feed_view")) + feed_view: "FeedViewResponse" = dc_field(metadata=dc_config(field_name="feed_view")) + @dataclass class CreateFeedsBatchRequest(DataClassJsonMixin): # List of feeds to create - feeds: 'list[FeedRequest]' = dc_field(metadata=dc_config(field_name="feeds")) + feeds: "list[FeedRequest]" = dc_field(metadata=dc_config(field_name="feeds")) # Server-side only. If true, auto-creates users referenced by feeds[].created_by_id that don't already exist. Default: false. - create_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_users")) + create_users: bool | None = dc_field( + default=None, metadata=dc_config(field_name="create_users") + ) # If true, enriches the created feeds with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) + enrich_own_fields: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_fields") + ) + @dataclass class CreateFeedsBatchResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of created feeds - feeds: 'list[FeedResponse]' = dc_field(metadata=dc_config(field_name="feeds")) + feeds: "list[FeedResponse]" = dc_field(metadata=dc_config(field_name="feeds")) + @dataclass class CreateGuestRequest(DataClassJsonMixin): # User request object - user: 'UserRequest' = dc_field(metadata=dc_config(field_name="user")) + user: "UserRequest" = dc_field(metadata=dc_config(field_name="user")) + @dataclass class CreateGuestResponse(DataClassJsonMixin): @@ -4699,23 +9877,33 @@ class CreateGuestResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + @dataclass class CreateImportRequest(DataClassJsonMixin): mode: str = dc_field(metadata=dc_config(field_name="mode")) path: str = dc_field(metadata=dc_config(field_name="path")) - merge_custom: bool | None = dc_field(default=None, metadata=dc_config(field_name="merge_custom")) + merge_custom: bool | None = dc_field( + default=None, metadata=dc_config(field_name="merge_custom") + ) + @dataclass class CreateImportResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - import_task: 'ImportTask | None' = dc_field(default=None, metadata=dc_config(field_name="import_task")) + import_task: "ImportTask | None" = dc_field( + default=None, metadata=dc_config(field_name="import_task") + ) + @dataclass class CreateImportURLRequest(DataClassJsonMixin): - filename: str | None = dc_field(default=None, metadata=dc_config(field_name="filename")) + filename: str | None = dc_field( + default=None, metadata=dc_config(field_name="filename") + ) + @dataclass class CreateImportURLResponse(DataClassJsonMixin): @@ -4724,25 +9912,50 @@ class CreateImportURLResponse(DataClassJsonMixin): path: str = dc_field(metadata=dc_config(field_name="path")) upload_url: str = dc_field(metadata=dc_config(field_name="upload_url")) + @dataclass class CreateImportV2TaskRequest(DataClassJsonMixin): product: str = dc_field(metadata=dc_config(field_name="product")) - settings: 'ImportV2TaskSettings' = dc_field(metadata=dc_config(field_name="settings")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + settings: "ImportV2TaskSettings" = dc_field( + metadata=dc_config(field_name="settings") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CreateImportV2TaskResponse(DataClassJsonMixin): app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) id: str = dc_field(metadata=dc_config(field_name="id")) product: str = dc_field(metadata=dc_config(field_name="product")) state: int = dc_field(metadata=dc_config(field_name="state")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - settings: 'ImportV2TaskSettings' = dc_field(metadata=dc_config(field_name="settings")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + settings: "ImportV2TaskSettings" = dc_field( + metadata=dc_config(field_name="settings") + ) + @dataclass class CreateMembershipLevelRequest(DataClassJsonMixin): @@ -4751,18 +9964,30 @@ class CreateMembershipLevelRequest(DataClassJsonMixin): # Display name for the membership level name: str = dc_field(metadata=dc_config(field_name="name")) # Optional description of the membership level - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) # Priority level (higher numbers = higher priority) - priority: int | None = dc_field(default=None, metadata=dc_config(field_name="priority")) + priority: int | None = dc_field( + default=None, metadata=dc_config(field_name="priority") + ) # Activity tags this membership level gives access to - tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="tags")) + tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="tags") + ) # Custom data for the membership level - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class CreateMembershipLevelResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - membership_level: 'MembershipLevelResponse' = dc_field(metadata=dc_config(field_name="membership_level")) + membership_level: "MembershipLevelResponse" = dc_field( + metadata=dc_config(field_name="membership_level") + ) + @dataclass class CreatePermissionRequest(DataClassJsonMixin): @@ -4775,59 +10000,101 @@ class CreatePermissionRequest(DataClassJsonMixin): # MongoDB style condition which decides whether or not the permission is granted condition: dict[str, object] = dc_field(metadata=dc_config(field_name="condition")) # Description of the permission - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) # Whether this permission applies to resource owner or not owner: bool | None = dc_field(default=None, metadata=dc_config(field_name="owner")) # Whether this permission applies to teammates (multi-tenancy mode only) - same_team: bool | None = dc_field(default=None, metadata=dc_config(field_name="same_team")) + same_team: bool | None = dc_field( + default=None, metadata=dc_config(field_name="same_team") + ) + @dataclass class CreatePolicyTestSetRequest(DataClassJsonMixin): # Display name; unique within an app name: str = dc_field(metadata=dc_config(field_name="name")) # Moderation config key (default: app default) - config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) + config_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="config_key") + ) # Execution target: 'check' or 'labels'. Optional — defaults to 'labels' when the org has the labels API enabled, 'check' otherwise mode: str | None = dc_field(default=None, metadata=dc_config(field_name="mode")) # Team scope for the config (optional) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Messages to test; capped at 1000. Mutually exclusive with seed - rows: 'list[PolicyTestRow] | None' = dc_field(default=None, metadata=dc_config(field_name="rows")) - seed: 'PolicyTestSeedSpec | None' = dc_field(default=None, metadata=dc_config(field_name="seed")) + rows: "list[PolicyTestRow] | None" = dc_field( + default=None, metadata=dc_config(field_name="rows") + ) + seed: "PolicyTestSeedSpec | None" = dc_field( + default=None, metadata=dc_config(field_name="seed") + ) + @dataclass class CreatePollOptionRequest(DataClassJsonMixin): # Option text text: str = dc_field(metadata=dc_config(field_name="text")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Custom data for this object - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CreatePollRequest(DataClassJsonMixin): # The name of the poll name: str = dc_field(metadata=dc_config(field_name="name")) # Indicates whether users can suggest user defined answers - allow_answers: bool | None = dc_field(default=None, metadata=dc_config(field_name="allow_answers")) - allow_user_suggested_options: bool | None = dc_field(default=None, metadata=dc_config(field_name="allow_user_suggested_options")) + allow_answers: bool | None = dc_field( + default=None, metadata=dc_config(field_name="allow_answers") + ) + allow_user_suggested_options: bool | None = dc_field( + default=None, metadata=dc_config(field_name="allow_user_suggested_options") + ) # A description of the poll - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) # Indicates whether users can cast multiple votes - enforce_unique_vote: bool | None = dc_field(default=None, metadata=dc_config(field_name="enforce_unique_vote")) + enforce_unique_vote: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enforce_unique_vote") + ) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # Indicates whether the poll is open for voting - is_closed: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_closed")) + is_closed: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_closed") + ) # Indicates the maximum amount of votes a user can cast - max_votes_allowed: int | None = dc_field(default=None, metadata=dc_config(field_name="max_votes_allowed")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - voting_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="voting_visibility")) - options: 'list[PollOptionInput] | None' = dc_field(default=None, metadata=dc_config(field_name="options")) + max_votes_allowed: int | None = dc_field( + default=None, metadata=dc_config(field_name="max_votes_allowed") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + voting_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="voting_visibility") + ) + options: "list[PollOptionInput] | None" = dc_field( + default=None, metadata=dc_config(field_name="options") + ) # Custom data for this object - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CreatePredefinedFilterRequest(DataClassJsonMixin): @@ -4838,49 +10105,86 @@ class CreatePredefinedFilterRequest(DataClassJsonMixin): # Filter to apply to the query filter: dict[str, object] = dc_field(metadata=dc_config(field_name="filter")) # The description of the predefined filter - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) - sort: 'list[dict[str, object]] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) + sort: "list[dict[str, object]] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) + @dataclass class CreatePredefinedFilterResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - predefined_filter: 'PredefinedFilterResponse | None' = dc_field(default=None, metadata=dc_config(field_name="predefined_filter")) + predefined_filter: "PredefinedFilterResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="predefined_filter") + ) + @dataclass class CreateQueueRequest(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) type: str = dc_field(metadata=dc_config(field_name="type")) - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - sort: 'list[dict[str, object]] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) - filters: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filters")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + sort: "list[dict[str, object]] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) + filters: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filters") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CreateReminderRequest(DataClassJsonMixin): - remind_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="remind_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + remind_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="remind_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CreateReminderResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - reminder: 'ReminderResponseData' = dc_field(metadata=dc_config(field_name="reminder")) + reminder: "ReminderResponseData" = dc_field( + metadata=dc_config(field_name="reminder") + ) + @dataclass class CreateRoleRequest(DataClassJsonMixin): # Role name name: str = dc_field(metadata=dc_config(field_name="name")) + @dataclass class CreateRoleResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - role: 'Role' = dc_field(metadata=dc_config(field_name="role")) + role: "Role" = dc_field(metadata=dc_config(field_name="role")) + @dataclass class CreateSIPTrunkRequest(DataClassJsonMixin): @@ -4889,63 +10193,96 @@ class CreateSIPTrunkRequest(DataClassJsonMixin): # Phone numbers associated with this SIP trunk numbers: list[str] = dc_field(metadata=dc_config(field_name="numbers")) # Optional password for SIP trunk authentication - password: str | None = dc_field(default=None, metadata=dc_config(field_name="password")) + password: str | None = dc_field( + default=None, metadata=dc_config(field_name="password") + ) # Optional list of allowed IPv4/IPv6 addresses or CIDR blocks - allowed_ips: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_ips")) + allowed_ips: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowed_ips") + ) + @dataclass class CreateSIPTrunkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # SIP trunk information - sip_trunk: 'SIPTrunkResponse | None' = dc_field(default=None, metadata=dc_config(field_name="sip_trunk")) + sip_trunk: "SIPTrunkResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="sip_trunk") + ) + @dataclass class CreateSegmentRequest(DataClassJsonMixin): # The type of the segment type: str = dc_field(metadata=dc_config(field_name="type")) # If true, all sender channels are included in the segment - all_sender_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="all_sender_channels")) + all_sender_channels: bool | None = dc_field( + default=None, metadata=dc_config(field_name="all_sender_channels") + ) # If true, all users are included in the segment - all_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="all_users")) + all_users: bool | None = dc_field( + default=None, metadata=dc_config(field_name="all_users") + ) # The description of the segment (max 256 characters) - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) # The ID of the segment id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # The name of the segment (max 128 characters) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # Filter to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + @dataclass class CreateSegmentResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - segment: 'SegmentResponse | None' = dc_field(default=None, metadata=dc_config(field_name="segment")) + segment: "SegmentResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="segment") + ) + @dataclass class CreateUserGroupRequest(DataClassJsonMixin): # The user friendly name of the user group name: str = dc_field(metadata=dc_config(field_name="name")) # An optional description for the group - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) # Optional user group ID. If not provided, a UUID v7 will be generated id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # Optional team ID to scope the group to a team - team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="team_id")) + team_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="team_id") + ) # Optional initial list of user IDs to add as members - member_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="member_ids")) + member_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="member_ids") + ) + @dataclass class CreateUserGroupResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - user_group: 'UserGroupResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) + user_group: "UserGroupResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user_group") + ) + @dataclass class CustomActionRequestPayload(DataClassJsonMixin): # Custom action identifier id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # Custom action options - options: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="options")) + options: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="options") + ) + @dataclass class CustomCheckFlag(DataClassJsonMixin): @@ -4954,9 +10291,14 @@ class CustomCheckFlag(DataClassJsonMixin): # Optional explanation for the flag reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) # Labels from various moderation sources - labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="labels")) + labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="labels") + ) # Additional metadata for the flag - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class CustomCheckRequest(DataClassJsonMixin): @@ -4965,14 +10307,23 @@ class CustomCheckRequest(DataClassJsonMixin): # Type of entity to perform custom check on entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) # List of custom check flags (1-10 flags required) - flags: 'list[CustomCheckFlag]' = dc_field(metadata=dc_config(field_name="flags")) + flags: "list[CustomCheckFlag]" = dc_field(metadata=dc_config(field_name="flags")) # ID of the user who created the entity (required for non-message entities) - entity_creator_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_creator_id")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + entity_creator_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_creator_id") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Content payload for moderation - moderation_payload: 'ModerationPayloadRequest | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_payload")) + moderation_payload: "ModerationPayloadRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation_payload") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class CustomCheckResponse(DataClassJsonMixin): @@ -4981,65 +10332,109 @@ class CustomCheckResponse(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) # Status of the custom check status: str = dc_field(metadata=dc_config(field_name="status")) - item: 'ReviewQueueItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="item")) + item: "ReviewQueueItemResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="item") + ) + @dataclass class CustomEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) type: str = dc_field(default="*", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class CustomVideoEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Custom data for this object custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # The type of event, "custom" in this case type: str = dc_field(default="custom", metadata=dc_config(field_name="type")) + @dataclass class DailyAggregateCallDurationReportResponse(DataClassJsonMixin): date: str = dc_field(metadata=dc_config(field_name="date")) - report: 'CallDurationReport' = dc_field(metadata=dc_config(field_name="report")) + report: "CallDurationReport" = dc_field(metadata=dc_config(field_name="report")) + @dataclass class DailyAggregateCallParticipantCountReportResponse(DataClassJsonMixin): date: str = dc_field(metadata=dc_config(field_name="date")) - report: 'CallParticipantCountReport' = dc_field(metadata=dc_config(field_name="report")) + report: "CallParticipantCountReport" = dc_field( + metadata=dc_config(field_name="report") + ) + @dataclass class DailyAggregateCallsPerDayReportResponse(DataClassJsonMixin): date: str = dc_field(metadata=dc_config(field_name="date")) - report: 'CallsPerDayReport' = dc_field(metadata=dc_config(field_name="report")) + report: "CallsPerDayReport" = dc_field(metadata=dc_config(field_name="report")) + @dataclass class DailyAggregateQualityScoreReportResponse(DataClassJsonMixin): date: str = dc_field(metadata=dc_config(field_name="date")) - report: 'QualityScoreReport' = dc_field(metadata=dc_config(field_name="report")) + report: "QualityScoreReport" = dc_field(metadata=dc_config(field_name="report")) + @dataclass class DailyAggregateSDKUsageReportResponse(DataClassJsonMixin): date: str = dc_field(metadata=dc_config(field_name="date")) - report: 'SDKUsageReport' = dc_field(metadata=dc_config(field_name="report")) + report: "SDKUsageReport" = dc_field(metadata=dc_config(field_name="report")) + @dataclass class DailyAggregateUserFeedbackReportResponse(DataClassJsonMixin): date: str = dc_field(metadata=dc_config(field_name="date")) - report: 'UserFeedbackReport' = dc_field(metadata=dc_config(field_name="report")) + report: "UserFeedbackReport" = dc_field(metadata=dc_config(field_name="report")) + @dataclass class DailyDigestCallSessionSummary(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) call_session_id: str = dc_field(metadata=dc_config(field_name="call_session_id")) has_digest: bool = dc_field(metadata=dc_config(field_name="has_digest")) - counts: 'CallStatsParticipantCounts' = dc_field(metadata=dc_config(field_name="counts")) - digest_error: str | None = dc_field(default=None, metadata=dc_config(field_name="digest_error")) - session_ended_at: str | None = dc_field(default=None, metadata=dc_config(field_name="session_ended_at")) - session_started_at: str | None = dc_field(default=None, metadata=dc_config(field_name="session_started_at")) + counts: "CallStatsParticipantCounts" = dc_field( + metadata=dc_config(field_name="counts") + ) + digest_error: str | None = dc_field( + default=None, metadata=dc_config(field_name="digest_error") + ) + session_ended_at: str | None = dc_field( + default=None, metadata=dc_config(field_name="session_ended_at") + ) + session_started_at: str | None = dc_field( + default=None, metadata=dc_config(field_name="session_started_at") + ) + @dataclass class DailyMetricResponse(DataClassJsonMixin): @@ -5048,12 +10443,16 @@ class DailyMetricResponse(DataClassJsonMixin): # Metric value for this date value: int = dc_field(metadata=dc_config(field_name="value")) + @dataclass class DailyMetricStatsResponse(DataClassJsonMixin): # Total value across all days in the date range total: int = dc_field(metadata=dc_config(field_name="total")) # Array of daily metric values - daily: 'list[DailyMetricResponse]' = dc_field(metadata=dc_config(field_name="daily")) + daily: "list[DailyMetricResponse]" = dc_field( + metadata=dc_config(field_name="daily") + ) + @dataclass class DailyValue(DataClassJsonMixin): @@ -5062,39 +10461,61 @@ class DailyValue(DataClassJsonMixin): # Metric value for this date value: int = dc_field(metadata=dc_config(field_name="value")) + @dataclass class Data(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) + @dataclass class DataDogInfo(DataClassJsonMixin): - api_key: str | None = dc_field(default=None, metadata=dc_config(field_name="api_key")) - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + api_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="api_key") + ) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) site: str | None = dc_field(default=None, metadata=dc_config(field_name="site")) + @dataclass class DeactivateUserRequest(DataClassJsonMixin): # ID of the user who deactivated the user - created_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_id")) + created_by_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="created_by_id") + ) # Makes messages appear to be deleted - mark_messages_deleted: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_messages_deleted")) + mark_messages_deleted: bool | None = dc_field( + default=None, metadata=dc_config(field_name="mark_messages_deleted") + ) + @dataclass class DeactivateUserResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class DeactivateUsersRequest(DataClassJsonMixin): # User IDs to deactivate user_ids: list[str] = dc_field(metadata=dc_config(field_name="user_ids")) # ID of the user who deactivated the users - created_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_id")) - mark_channels_deleted: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_channels_deleted")) + created_by_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="created_by_id") + ) + mark_channels_deleted: bool | None = dc_field( + default=None, metadata=dc_config(field_name="mark_channels_deleted") + ) # Makes messages appear to be deleted - mark_messages_deleted: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_messages_deleted")) + mark_messages_deleted: bool | None = dc_field( + default=None, metadata=dc_config(field_name="mark_messages_deleted") + ) + @dataclass class DeactivateUsersResponse(DataClassJsonMixin): @@ -5102,6 +10523,7 @@ class DeactivateUsersResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) + @dataclass class DecayFunctionConfig(DataClassJsonMixin): # Base value for decay function @@ -5109,7 +10531,9 @@ class DecayFunctionConfig(DataClassJsonMixin): # Decay rate decay: str | None = dc_field(default=None, metadata=dc_config(field_name="decay")) # Direction of decay - direction: str | None = dc_field(default=None, metadata=dc_config(field_name="direction")) + direction: str | None = dc_field( + default=None, metadata=dc_config(field_name="direction") + ) # Offset value for decay function offset: str | None = dc_field(default=None, metadata=dc_config(field_name="offset")) # Origin value for decay function @@ -5117,23 +10541,34 @@ class DecayFunctionConfig(DataClassJsonMixin): # Scale factor for decay function scale: str | None = dc_field(default=None, metadata=dc_config(field_name="scale")) + @dataclass class DeleteActionConfigResponse(DataClassJsonMixin): # Number of action configs deleted (0 or 1) deleted: int = dc_field(metadata=dc_config(field_name="deleted")) duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteActivitiesRequest(DataClassJsonMixin): # List of activity IDs to delete ids: list[str] = dc_field(metadata=dc_config(field_name="ids")) # Whether to also delete any notification activities created from mentions in these activities - delete_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="delete_notification_activity")) + delete_notification_activity: bool | None = dc_field( + default=None, metadata=dc_config(field_name="delete_notification_activity") + ) # Whether to permanently delete the activities - hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + hard_delete: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hard_delete") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class DeleteActivitiesResponse(DataClassJsonMixin): @@ -5141,138 +10576,189 @@ class DeleteActivitiesResponse(DataClassJsonMixin): # List of activity IDs that were successfully deleted deleted_ids: list[str] = dc_field(metadata=dc_config(field_name="deleted_ids")) + @dataclass class DeleteActivityReactionResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) - reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + reaction: "FeedsReactionResponse" = dc_field( + metadata=dc_config(field_name="reaction") + ) + @dataclass class DeleteActivityRequestPayload(DataClassJsonMixin): # ID of the activity to delete (alternative to item_id) - entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) + entity_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_id") + ) # Type of the entity (required for delete_activity to distinguish v2 vs v3) - entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) + entity_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_type") + ) # Whether to permanently delete the activity - hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) + hard_delete: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hard_delete") + ) # Reason for deletion reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) + @dataclass class DeleteActivityResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteBookmarkFolderResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteBookmarkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) + bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) + @dataclass class DeleteCallRequest(DataClassJsonMixin): # if true the call will be hard deleted along with all related data hard: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard")) + @dataclass class DeleteCallResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) - task_id: str | None = dc_field(default=None, metadata=dc_config(field_name="task_id")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + task_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="task_id") + ) + @dataclass class DeleteCampaignResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteChannelResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) + @dataclass class DeleteChannelsRequest(DataClassJsonMixin): # All channels that should be deleted cids: list[str] = dc_field(metadata=dc_config(field_name="cids")) # Specify if channels and all ressources should be hard deleted - hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) + hard_delete: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hard_delete") + ) + @dataclass class DeleteChannelsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - task_id: str | None = dc_field(default=None, metadata=dc_config(field_name="task_id")) + task_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="task_id") + ) # Map of channel IDs and their deletion results - result: 'dict[str, DeleteChannelsResultResponse | None] | None' = dc_field(default=None, metadata=dc_config(field_name="result")) + result: "dict[str, DeleteChannelsResultResponse | None] | None" = dc_field( + default=None, metadata=dc_config(field_name="result") + ) + @dataclass class DeleteChannelsResultResponse(DataClassJsonMixin): status: str = dc_field(metadata=dc_config(field_name="status")) error: str | None = dc_field(default=None, metadata=dc_config(field_name="error")) + @dataclass class DeleteCollectionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteCommandResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Command name name: str = dc_field(metadata=dc_config(field_name="name")) + @dataclass class DeleteCommentBookmarkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) + bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) + @dataclass class DeleteCommentReactionResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) - reaction: 'FeedsReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) + comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) + reaction: "FeedsReactionResponse" = dc_field( + metadata=dc_config(field_name="reaction") + ) + @dataclass class DeleteCommentRequestPayload(DataClassJsonMixin): # ID of the comment to delete (alternative to item_id) - entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) + entity_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_id") + ) # Type of the entity - entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) + entity_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_type") + ) # Whether to permanently delete the comment - hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) + hard_delete: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hard_delete") + ) # Reason for deletion reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) + @dataclass class DeleteCommentResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) - comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) + @dataclass class DeleteExternalStorageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteFeedGroupResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteFeedResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # The ID of the async task that will handle feed cleanup and hard deletion task_id: str = dc_field(metadata=dc_config(field_name="task_id")) + @dataclass class DeleteFeedUserDataRequest(DataClassJsonMixin): # Whether to perform a hard delete instead of a soft delete - hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) + hard_delete: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hard_delete") + ) + @dataclass class DeleteFeedUserDataResponse(DataClassJsonMixin): @@ -5280,18 +10766,25 @@ class DeleteFeedUserDataResponse(DataClassJsonMixin): # The task ID for the deletion task task_id: str = dc_field(metadata=dc_config(field_name="task_id")) + @dataclass class DeleteFeedViewResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteFeedsBatchRequest(DataClassJsonMixin): # List of fully qualified feed IDs (format: group_id:feed_id) to delete feeds: list[str] = dc_field(metadata=dc_config(field_name="feeds")) # Whether to permanently delete the feeds instead of soft delete - hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) + hard_delete: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hard_delete") + ) # When hard-deleting, also fully delete activities authored by each feed's owner from every other feed those activities were fanned out to. Default false preserves existing fan-out. Requires 'hard_delete' to be true; the request is rejected otherwise. Feeds with no recorded owner (created_by_id is empty) are silently skipped for the purge step — owner-matching against an empty string is a safety guard, not a wildcard. - purge_user_activities: bool | None = dc_field(default=None, metadata=dc_config(field_name="purge_user_activities")) + purge_user_activities: bool | None = dc_field( + default=None, metadata=dc_config(field_name="purge_user_activities") + ) + @dataclass class DeleteFeedsBatchResponse(DataClassJsonMixin): @@ -5299,136 +10792,192 @@ class DeleteFeedsBatchResponse(DataClassJsonMixin): # The ID of the async task that will handle feed cleanup and hard deletion task_id: str = dc_field(metadata=dc_config(field_name="task_id")) + @dataclass class DeleteImportV2TaskResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteMessageRequestPayload(DataClassJsonMixin): # ID of the message to delete (alternative to item_id) - entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) + entity_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_id") + ) # Type of the entity - entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) + entity_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_type") + ) # Whether to permanently delete the message - hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) + hard_delete: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hard_delete") + ) # Reason for deletion reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) + @dataclass class DeleteMessageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) + @dataclass class DeleteModerationConfigResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteModerationRuleResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteModerationTemplateResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteQueueRequest(DataClassJsonMixin): - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class DeleteReactionRequestPayload(DataClassJsonMixin): # ID of the reaction to delete (alternative to item_id) - entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) + entity_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_id") + ) # Type of the entity - entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) + entity_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_type") + ) # Whether to permanently delete the reaction - hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) + hard_delete: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hard_delete") + ) # Reason for deletion reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) + @dataclass class DeleteReactionResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) - reaction: 'ReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) + reaction: "ReactionResponse" = dc_field(metadata=dc_config(field_name="reaction")) + @dataclass class DeleteRecordingResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteReminderResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteRetentionPolicyRequest(DataClassJsonMixin): policy: str = dc_field(metadata=dc_config(field_name="policy")) + @dataclass class DeleteRetentionPolicyResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteSIPInboundRoutingRuleResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteSIPTrunkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteSegmentTargetsRequest(DataClassJsonMixin): # Target IDs target_ids: list[str] = dc_field(metadata=dc_config(field_name="target_ids")) + @dataclass class DeleteTranscriptionResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class DeleteUserMessagesRequestPayload(DataClassJsonMixin): # Message deletion mode: soft, pruning, or hard delete_messages: str = dc_field(metadata=dc_config(field_name="delete_messages")) # Optional: scope deletion to a single channel (alternative to app-wide deletion) - channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) + channel_cid: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_cid") + ) # Whether to also delete the user's reactions on other users' messages - delete_reactions: bool | None = dc_field(default=None, metadata=dc_config(field_name="delete_reactions")) + delete_reactions: bool | None = dc_field( + default=None, metadata=dc_config(field_name="delete_reactions") + ) # ID of the user whose messages should be deleted (alternative to item_id) - entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) + entity_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_id") + ) # Type of the entity - entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) + entity_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_type") + ) # Reason for the deletion reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) + @dataclass class DeleteUserRequestPayload(DataClassJsonMixin): # Also delete all user conversations - delete_conversation_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="delete_conversation_channels")) + delete_conversation_channels: bool | None = dc_field( + default=None, metadata=dc_config(field_name="delete_conversation_channels") + ) # Delete flagged feeds content - delete_feeds_content: bool | None = dc_field(default=None, metadata=dc_config(field_name="delete_feeds_content")) + delete_feeds_content: bool | None = dc_field( + default=None, metadata=dc_config(field_name="delete_feeds_content") + ) # ID of the user to delete (alternative to item_id) - entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) + entity_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_id") + ) # Type of the entity - entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) + entity_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_type") + ) # Whether to permanently delete the user - hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) + hard_delete: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hard_delete") + ) # Also delete all user messages - mark_messages_deleted: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_messages_deleted")) + mark_messages_deleted: bool | None = dc_field( + default=None, metadata=dc_config(field_name="mark_messages_deleted") + ) # Reason for deletion reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) + @dataclass class DeleteUsersRequest(DataClassJsonMixin): # IDs of users to delete @@ -5444,7 +10993,9 @@ class DeleteUsersRequest(DataClassJsonMixin): # * null or empty string - doesn't delete any conversation channels # * soft - marks all conversation channels as deleted (same effect as Delete Channels with 'hard' option disabled) # * hard - deletes channel and all its data completely including messages (same effect as Delete Channels with 'hard' option enabled) - conversations: str | None = dc_field(default=None, metadata=dc_config(field_name="conversations")) + conversations: str | None = dc_field( + default=None, metadata=dc_config(field_name="conversations") + ) # Delete user files. # * false or empty string - doesn't delete any files # * true - deletes all files uploaded by the user, including images and attachments. @@ -5454,15 +11005,22 @@ class DeleteUsersRequest(DataClassJsonMixin): # * soft - marks all user messages as deleted without removing any related message data # * pruning - marks all user messages as deleted, nullifies message information and removes some message data such as reactions and flags # * hard - deletes messages completely with all related information - messages: str | None = dc_field(default=None, metadata=dc_config(field_name="messages")) - new_call_owner_id: str | None = dc_field(default=None, metadata=dc_config(field_name="new_call_owner_id")) - new_channel_owner_id: str | None = dc_field(default=None, metadata=dc_config(field_name="new_channel_owner_id")) + messages: str | None = dc_field( + default=None, metadata=dc_config(field_name="messages") + ) + new_call_owner_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="new_call_owner_id") + ) + new_channel_owner_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="new_channel_owner_id") + ) # User delete mode. # * soft - marks user as deleted and retains all user data # * pruning - marks user as deleted and nullifies user information # * hard - deletes user completely. Requires 'hard' option for messages and conversations as well user: str | None = dc_field(default=None, metadata=dc_config(field_name="user")) + @dataclass class DeleteUsersResponse(DataClassJsonMixin): # Duration of the request in milliseconds @@ -5470,30 +11028,47 @@ class DeleteUsersResponse(DataClassJsonMixin): # ID of the task to delete users task_id: str = dc_field(metadata=dc_config(field_name="task_id")) + @dataclass class DeliveredMessagePayload(DataClassJsonMixin): cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) + @dataclass class DeliveryReceiptsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) + @dataclass class DeliveryZoneSegment(DataClassJsonMixin): key: str = dc_field(metadata=dc_config(field_name="key")) outlier: bool = dc_field(metadata=dc_config(field_name="outlier")) sessions: int = dc_field(metadata=dc_config(field_name="sessions")) - avg_quality_score: float | None = dc_field(default=None, metadata=dc_config(field_name="avg_quality_score")) - p5_quality_score: float | None = dc_field(default=None, metadata=dc_config(field_name="p5_quality_score")) - poor_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="poor_pct")) - share_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="share_pct")) - watch_share_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="watch_share_pct")) + avg_quality_score: float | None = dc_field( + default=None, metadata=dc_config(field_name="avg_quality_score") + ) + p5_quality_score: float | None = dc_field( + default=None, metadata=dc_config(field_name="p5_quality_score") + ) + poor_pct: float | None = dc_field( + default=None, metadata=dc_config(field_name="poor_pct") + ) + share_pct: float | None = dc_field( + default=None, metadata=dc_config(field_name="share_pct") + ) + watch_share_pct: float | None = dc_field( + default=None, metadata=dc_config(field_name="watch_share_pct") + ) + @dataclass class DeviceDataResponse(DataClassJsonMixin): name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - version: str | None = dc_field(default=None, metadata=dc_config(field_name="version")) + version: str | None = dc_field( + default=None, metadata=dc_config(field_name="version") + ) + @dataclass class DeviceErrorInfo(DataClassJsonMixin): @@ -5501,10 +11076,18 @@ class DeviceErrorInfo(DataClassJsonMixin): provider: str = dc_field(metadata=dc_config(field_name="provider")) provider_name: str = dc_field(metadata=dc_config(field_name="provider_name")) + @dataclass class DeviceResponse(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Device ID id: str = dc_field(metadata=dc_config(field_name="id")) # Push provider @@ -5512,16 +11095,25 @@ class DeviceResponse(DataClassJsonMixin): # User ID user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # Whether device is disabled or not - disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="disabled")) + disabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="disabled") + ) # Reason explaining why device had been disabled - disabled_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="disabled_reason")) + disabled_reason: str | None = dc_field( + default=None, metadata=dc_config(field_name="disabled_reason") + ) # Stable physical device identifier used to deduplicate pushes across push providers - hardware_id: str | None = dc_field(default=None, metadata=dc_config(field_name="hardware_id")) + hardware_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="hardware_id") + ) # Push provider name - push_provider_name: str | None = dc_field(default=None, metadata=dc_config(field_name="push_provider_name")) + push_provider_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_provider_name") + ) # When true the token is for Apple VoIP push notifications voip: bool | None = dc_field(default=None, metadata=dc_config(field_name="voip")) + @dataclass class DraftPayloadResponse(DataClassJsonMixin): # Message ID is unique string identifier of the message @@ -5534,43 +11126,81 @@ class DraftPayloadResponse(DataClassJsonMixin): # MML content of the message mml: str | None = dc_field(default=None, metadata=dc_config(field_name="mml")) # ID of parent message (thread) - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) # Identifier of the poll to include in the message - poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) - quoted_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="quoted_message_id")) + poll_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="poll_id") + ) + quoted_message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="quoted_message_id") + ) # Whether thread reply should be shown in the channel as well - show_in_channel: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_in_channel")) + show_in_channel: bool | None = dc_field( + default=None, metadata=dc_config(field_name="show_in_channel") + ) # Whether message is silent or not - silent: bool | None = dc_field(default=None, metadata=dc_config(field_name="silent")) + silent: bool | None = dc_field( + default=None, metadata=dc_config(field_name="silent") + ) # Contains type of the message. One of: regular, system type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) # Array of message attachments - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) # List of mentioned users - mentioned_users: 'list[UserResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_users")) + mentioned_users: "list[UserResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="mentioned_users") + ) + @dataclass class DraftResponse(DataClassJsonMixin): channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Contains the draft message content - message: 'DraftPayloadResponse' = dc_field(metadata=dc_config(field_name="message")) - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + message: "DraftPayloadResponse" = dc_field(metadata=dc_config(field_name="message")) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) # Represents any chat message - parent_message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="parent_message")) + parent_message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="parent_message") + ) # Represents any chat message - quoted_message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="quoted_message")) + quoted_message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="quoted_message") + ) + @dataclass class EMAUStatsResponse(DataClassJsonMixin): # Per-day unique engaged user counts - daily: 'list[DailyMetricResponse]' = dc_field(metadata=dc_config(field_name="daily")) + daily: "list[DailyMetricResponse]" = dc_field( + metadata=dc_config(field_name="daily") + ) # Rolling 30-day engaged user count snapshots - last_30_days: 'list[DailyMetricResponse]' = dc_field(metadata=dc_config(field_name="last_30_days")) + last_30_days: "list[DailyMetricResponse]" = dc_field( + metadata=dc_config(field_name="last_30_days") + ) # Calendar month-to-date engaged user count snapshots - month_to_date: 'list[DailyMetricResponse]' = dc_field(metadata=dc_config(field_name="month_to_date")) + month_to_date: "list[DailyMetricResponse]" = dc_field( + metadata=dc_config(field_name="month_to_date") + ) + @dataclass class EdgeResponse(DataClassJsonMixin): @@ -5582,82 +11212,155 @@ class EdgeResponse(DataClassJsonMixin): latitude: float = dc_field(metadata=dc_config(field_name="latitude")) longitude: float = dc_field(metadata=dc_config(field_name="longitude")) red: int = dc_field(metadata=dc_config(field_name="red")) - subdivision_iso_code: str = dc_field(metadata=dc_config(field_name="subdivision_iso_code")) + subdivision_iso_code: str = dc_field( + metadata=dc_config(field_name="subdivision_iso_code") + ) yellow: int = dc_field(metadata=dc_config(field_name="yellow")) + @dataclass class EgressHLSResponse(DataClassJsonMixin): playlist_url: str = dc_field(metadata=dc_config(field_name="playlist_url")) status: str = dc_field(metadata=dc_config(field_name="status")) + @dataclass class EgressRTMPResponse(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) - started_at: datetime = dc_field(metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - stream_key: str | None = dc_field(default=None, metadata=dc_config(field_name="stream_key")) - stream_url: str | None = dc_field(default=None, metadata=dc_config(field_name="stream_url")) + started_at: datetime = dc_field( + metadata=dc_config( + field_name="started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + stream_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="stream_key") + ) + stream_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="stream_url") + ) + @dataclass class EgressResponse(DataClassJsonMixin): broadcasting: bool = dc_field(metadata=dc_config(field_name="broadcasting")) - rtmps: 'list[EgressRTMPResponse]' = dc_field(metadata=dc_config(field_name="rtmps")) - composite_recording: 'CompositeRecordingResponse | None' = dc_field(default=None, metadata=dc_config(field_name="composite_recording")) - frame_recording: 'FrameRecordingResponse | None' = dc_field(default=None, metadata=dc_config(field_name="frame_recording")) - hls: 'EgressHLSResponse | None' = dc_field(default=None, metadata=dc_config(field_name="hls")) - individual_recording: 'IndividualRecordingResponse | None' = dc_field(default=None, metadata=dc_config(field_name="individual_recording")) - raw_recording: 'RawRecordingResponse | None' = dc_field(default=None, metadata=dc_config(field_name="raw_recording")) + rtmps: "list[EgressRTMPResponse]" = dc_field(metadata=dc_config(field_name="rtmps")) + composite_recording: "CompositeRecordingResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="composite_recording") + ) + frame_recording: "FrameRecordingResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="frame_recording") + ) + hls: "EgressHLSResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="hls") + ) + individual_recording: "IndividualRecordingResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="individual_recording") + ) + raw_recording: "RawRecordingResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="raw_recording") + ) + @dataclass class EncodingProfile(DataClassJsonMixin): - getstats_snapshots: int = dc_field(metadata=dc_config(field_name="getstats_snapshots")) + getstats_snapshots: int = dc_field( + metadata=dc_config(field_name="getstats_snapshots") + ) source_file: str = dc_field(metadata=dc_config(field_name="source_file")) svc_modes: list[str] = dc_field(metadata=dc_config(field_name="svc_modes")) - quality_limitation_durations_s: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="quality_limitation_durations_s")) - quality_limitation_samples: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="quality_limitation_samples")) - avg_send_kbps: int | None = dc_field(default=None, metadata=dc_config(field_name="avg_send_kbps")) + quality_limitation_durations_s: "dict[str, int]" = dc_field( + metadata=dc_config(field_name="quality_limitation_durations_s") + ) + quality_limitation_samples: "dict[str, int]" = dc_field( + metadata=dc_config(field_name="quality_limitation_samples") + ) + avg_send_kbps: int | None = dc_field( + default=None, metadata=dc_config(field_name="avg_send_kbps") + ) codec: str | None = dc_field(default=None, metadata=dc_config(field_name="codec")) - encoder_impl: str | None = dc_field(default=None, metadata=dc_config(field_name="encoder_impl")) - fps_p10: int | None = dc_field(default=None, metadata=dc_config(field_name="fps_p10")) - fps_p50: int | None = dc_field(default=None, metadata=dc_config(field_name="fps_p50")) - hardware_encode: bool | None = dc_field(default=None, metadata=dc_config(field_name="hardware_encode")) - ladder_type: str | None = dc_field(default=None, metadata=dc_config(field_name="ladder_type")) - power_efficient: bool | None = dc_field(default=None, metadata=dc_config(field_name="power_efficient")) - resolution: str | None = dc_field(default=None, metadata=dc_config(field_name="resolution")) - simulcast_layers: int | None = dc_field(default=None, metadata=dc_config(field_name="simulcast_layers")) + encoder_impl: str | None = dc_field( + default=None, metadata=dc_config(field_name="encoder_impl") + ) + fps_p10: int | None = dc_field( + default=None, metadata=dc_config(field_name="fps_p10") + ) + fps_p50: int | None = dc_field( + default=None, metadata=dc_config(field_name="fps_p50") + ) + hardware_encode: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hardware_encode") + ) + ladder_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="ladder_type") + ) + power_efficient: bool | None = dc_field( + default=None, metadata=dc_config(field_name="power_efficient") + ) + resolution: str | None = dc_field( + default=None, metadata=dc_config(field_name="resolution") + ) + simulcast_layers: int | None = dc_field( + default=None, metadata=dc_config(field_name="simulcast_layers") + ) + @dataclass class EncryptionSettingsRequest(DataClassJsonMixin): # Encryption mode. One of: available, disabled, auto-on mode: str | None = dc_field(default=None, metadata=dc_config(field_name="mode")) + @dataclass class EncryptionSettingsResponse(DataClassJsonMixin): # the resolved encryption mode for the call mode: str = dc_field(metadata=dc_config(field_name="mode")) + @dataclass class EndCallRequest(DataClassJsonMixin): pass + @dataclass class EndCallResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class EnrichedActivity(DataClassJsonMixin): - foreign_id: str | None = dc_field(default=None, metadata=dc_config(field_name="foreign_id")) + foreign_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="foreign_id") + ) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) score: float | None = dc_field(default=None, metadata=dc_config(field_name="score")) verb: str | None = dc_field(default=None, metadata=dc_config(field_name="verb")) to: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="to")) - actor: 'Data | None' = dc_field(default=None, metadata=dc_config(field_name="actor")) - latest_reactions: 'dict[str, list[EnrichedReaction]] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_reactions")) - object: 'Data | None' = dc_field(default=None, metadata=dc_config(field_name="object")) - origin: 'Data | None' = dc_field(default=None, metadata=dc_config(field_name="origin")) - own_reactions: 'dict[str, list[EnrichedReaction]] | None' = dc_field(default=None, metadata=dc_config(field_name="own_reactions")) - reaction_counts: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="reaction_counts")) - target: 'Data | None' = dc_field(default=None, metadata=dc_config(field_name="target")) + actor: "Data | None" = dc_field( + default=None, metadata=dc_config(field_name="actor") + ) + latest_reactions: "dict[str, list[EnrichedReaction]] | None" = dc_field( + default=None, metadata=dc_config(field_name="latest_reactions") + ) + object: "Data | None" = dc_field( + default=None, metadata=dc_config(field_name="object") + ) + origin: "Data | None" = dc_field( + default=None, metadata=dc_config(field_name="origin") + ) + own_reactions: "dict[str, list[EnrichedReaction]] | None" = dc_field( + default=None, metadata=dc_config(field_name="own_reactions") + ) + reaction_counts: "dict[str, int] | None" = dc_field( + default=None, metadata=dc_config(field_name="reaction_counts") + ) + target: "Data | None" = dc_field( + default=None, metadata=dc_config(field_name="target") + ) + @dataclass class EnrichedCollectionResponse(DataClassJsonMixin): @@ -5668,13 +11371,34 @@ class EnrichedCollectionResponse(DataClassJsonMixin): # Enrichment status of the collection. One of: ok, notfound status: str = dc_field(metadata=dc_config(field_name="status")) # When the collection was created - created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # When the collection was last updated - updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # ID of the user who owns this collection - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Custom data for the collection - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class EnrichedReaction(DataClassJsonMixin): @@ -5683,66 +11407,131 @@ class EnrichedReaction(DataClassJsonMixin): user_id: str = dc_field(metadata=dc_config(field_name="user_id")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) parent: str | None = dc_field(default=None, metadata=dc_config(field_name="parent")) - target_feeds: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="target_feeds")) - children_counts: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="children_counts")) - created_at: 'Time | None' = dc_field(default=None, metadata=dc_config(field_name="created_at")) - data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) - latest_children: 'dict[str, list[EnrichedReaction]] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_children")) - own_children: 'dict[str, list[EnrichedReaction]] | None' = dc_field(default=None, metadata=dc_config(field_name="own_children")) - updated_at: 'Time | None' = dc_field(default=None, metadata=dc_config(field_name="updated_at")) - user: 'Data | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + target_feeds: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="target_feeds") + ) + children_counts: "dict[str, int] | None" = dc_field( + default=None, metadata=dc_config(field_name="children_counts") + ) + created_at: "Time | None" = dc_field( + default=None, metadata=dc_config(field_name="created_at") + ) + data: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="data") + ) + latest_children: "dict[str, list[EnrichedReaction]] | None" = dc_field( + default=None, metadata=dc_config(field_name="latest_children") + ) + own_children: "dict[str, list[EnrichedReaction]] | None" = dc_field( + default=None, metadata=dc_config(field_name="own_children") + ) + updated_at: "Time | None" = dc_field( + default=None, metadata=dc_config(field_name="updated_at") + ) + user: "Data | None" = dc_field(default=None, metadata=dc_config(field_name="user")) + @dataclass class EnrichmentOptions(DataClassJsonMixin): # Default: false. When true, includes fetching and enriching own_followings (follows where activity author's feeds follow current user's feeds). - enrich_own_followings: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_followings")) + enrich_own_followings: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_followings") + ) # Controls the top-level flat 'activities' array for aggregated feeds. For new apps, defaults to false (excluded); set to true to include. For older apps, defaults to true (included) for backward compatibility; set to false to exclude. - include_flat_activities: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_flat_activities")) + include_flat_activities: bool | None = dc_field( + default=None, metadata=dc_config(field_name="include_flat_activities") + ) # Default: false. When true, includes score_vars in activity responses containing variable values used at ranking time. - include_score_vars: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_score_vars")) + include_score_vars: bool | None = dc_field( + default=None, metadata=dc_config(field_name="include_score_vars") + ) # Default: false. When true, skips all activity enrichments. - skip_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity")) + skip_activity: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_activity") + ) # Default: false. When true, skips enriching collections on activities. - skip_activity_collections: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_collections")) + skip_activity_collections: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_collections") + ) # Default: false. When true, skips enriching comments on activities. - skip_activity_comments: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_comments")) + skip_activity_comments: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_comments") + ) # Default: false. When true, skips enriching current_feed on activities. Note: CurrentFeed is still computed for permission checks, but enrichment is skipped. - skip_activity_current_feed: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_current_feed")) + skip_activity_current_feed: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_current_feed") + ) # Default: false. When true, skips enriching mentioned users on activities. - skip_activity_mentioned_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_mentioned_users")) + skip_activity_mentioned_users: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_mentioned_users") + ) # Default: false. When true, skips enriching own bookmarks on activities. - skip_activity_own_bookmarks: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_own_bookmarks")) + skip_activity_own_bookmarks: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_own_bookmarks") + ) # Default: false. When true, skips enriching parent activities. - skip_activity_parents: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_parents")) + skip_activity_parents: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_parents") + ) # Default: false. When true, skips enriching poll data on activities. - skip_activity_poll: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_poll")) + skip_activity_poll: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_poll") + ) # Default: false. When true, skips fetching and enriching latest and own reactions on activities. Note: If reactions are already denormalized in the database, they will still be included. - skip_activity_reactions: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_reactions")) + skip_activity_reactions: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_reactions") + ) # Default: false. When true, skips refreshing image URLs on activities. - skip_activity_refresh_image_urls: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_activity_refresh_image_urls")) + skip_activity_refresh_image_urls: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_refresh_image_urls") + ) # Default: false. When true, skips all enrichments. - skip_all: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_all")) + skip_all: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_all") + ) # Default: false. When true, skips enriching user data on feed members. - skip_feed_member_user: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_feed_member_user")) + skip_feed_member_user: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_feed_member_user") + ) # Default: false. When true, skips fetching and enriching followers. Note: If followers_pagination is explicitly provided, followers will be fetched regardless of this setting. - skip_followers: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_followers")) + skip_followers: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_followers") + ) # Default: false. When true, skips fetching and enriching following. Note: If following_pagination is explicitly provided, following will be fetched regardless of this setting. - skip_following: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_following")) + skip_following: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_following") + ) # Default: false. When true, skips computing and including capabilities for feeds. - skip_own_capabilities: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_own_capabilities")) + skip_own_capabilities: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_own_capabilities") + ) # Default: false. When true, skips fetching and enriching own_follows (follows where user's feeds follow target feeds). - skip_own_follows: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_own_follows")) + skip_own_follows: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_own_follows") + ) # Default: false. When true, skips enriching pinned activities. - skip_pins: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_pins")) + skip_pins: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_pins") + ) + @dataclass class EntityCreatorResponse(DataClassJsonMixin): # Number of minor actions performed on the user ban_count: int = dc_field(metadata=dc_config(field_name="ban_count")) banned: bool = dc_field(metadata=dc_config(field_name="banned")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Number of major actions performed on the user - deleted_content_count: int = dc_field(metadata=dc_config(field_name="deleted_content_count")) + deleted_content_count: int = dc_field( + metadata=dc_config(field_name="deleted_content_count") + ) # Number of flag actions performed on the user flagged_count: int = dc_field(metadata=dc_config(field_name="flagged_count")) id: str = dc_field(metadata=dc_config(field_name="id")) @@ -5751,125 +11540,294 @@ class EntityCreatorResponse(DataClassJsonMixin): online: bool = dc_field(metadata=dc_config(field_name="online")) role: str = dc_field(metadata=dc_config(field_name="role")) shadow_banned: bool = dc_field(metadata=dc_config(field_name="shadow_banned")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - blocked_user_ids: list[str] = dc_field(metadata=dc_config(field_name="blocked_user_ids")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + blocked_user_ids: list[str] = dc_field( + metadata=dc_config(field_name="blocked_user_ids") + ) teams: list[str] = dc_field(metadata=dc_config(field_name="teams")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - avg_response_time: int | None = dc_field(default=None, metadata=dc_config(field_name="avg_response_time")) - ban_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ban_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - bypass_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="bypass_moderation")) - deactivated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deactivated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + avg_response_time: int | None = dc_field( + default=None, metadata=dc_config(field_name="avg_response_time") + ) + ban_expires: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="ban_expires", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + bypass_moderation: bool | None = dc_field( + default=None, metadata=dc_config(field_name="bypass_moderation") + ) + deactivated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deactivated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) image: str | None = dc_field(default=None, metadata=dc_config(field_name="image")) - last_active: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_active", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_active: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_active", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - revoke_tokens_issued_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="revoke_tokens_issued_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - devices: 'list[DeviceResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="devices")) - privacy_settings: 'PrivacySettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="privacy_settings")) - push_notifications: 'PushNotificationSettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="push_notifications")) - teams_role: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="teams_role")) + revoke_tokens_issued_before: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="revoke_tokens_issued_before", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + devices: "list[DeviceResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="devices") + ) + privacy_settings: "PrivacySettingsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="privacy_settings") + ) + push_notifications: "PushNotificationSettingsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="push_notifications") + ) + teams_role: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="teams_role") + ) + @dataclass class ErrorResult(DataClassJsonMixin): description: str = dc_field(metadata=dc_config(field_name="description")) type: str = dc_field(metadata=dc_config(field_name="type")) - stacktrace: str | None = dc_field(default=None, metadata=dc_config(field_name="stacktrace")) - version: str | None = dc_field(default=None, metadata=dc_config(field_name="version")) + stacktrace: str | None = dc_field( + default=None, metadata=dc_config(field_name="stacktrace") + ) + version: str | None = dc_field( + default=None, metadata=dc_config(field_name="version") + ) + @dataclass class EscalatePayload(DataClassJsonMixin): # Additional context for the reviewer notes: str | None = dc_field(default=None, metadata=dc_config(field_name="notes")) # Priority of the escalation (low, medium, high) - priority: str | None = dc_field(default=None, metadata=dc_config(field_name="priority")) + priority: str | None = dc_field( + default=None, metadata=dc_config(field_name="priority") + ) # Reason for the escalation (from configured escalation_reasons) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) + @dataclass class EscalationMetadata(DataClassJsonMixin): notes: str | None = dc_field(default=None, metadata=dc_config(field_name="notes")) - priority: str | None = dc_field(default=None, metadata=dc_config(field_name="priority")) + priority: str | None = dc_field( + default=None, metadata=dc_config(field_name="priority") + ) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) + @dataclass class EventHook(DataClassJsonMixin): - created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - hook_type: str | None = dc_field(default=None, metadata=dc_config(field_name="hook_type")) + created_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + hook_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="hook_type") + ) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) - product: str | None = dc_field(default=None, metadata=dc_config(field_name="product")) - should_send_custom_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="should_send_custom_events")) - sns_auth_type: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_auth_type")) - sns_event_based_message_group_id_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="sns_event_based_message_group_id_enabled")) - sns_key: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_key")) - sns_region: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_region")) - sns_role_arn: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_role_arn")) - sns_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_secret")) - sns_topic_arn: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_topic_arn")) - sqs_auth_type: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_auth_type")) - sqs_key: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_key")) - sqs_queue_url: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_queue_url")) - sqs_region: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_region")) - sqs_role_arn: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_role_arn")) - sqs_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_secret")) - timeout_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="timeout_ms")) - updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - webhook_url: str | None = dc_field(default=None, metadata=dc_config(field_name="webhook_url")) - event_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="event_types")) - callback: 'AsyncModerationCallbackConfig | None' = dc_field(default=None, metadata=dc_config(field_name="callback")) - failover_config: 'WebhookFailoverConfig | None' = dc_field(default=None, metadata=dc_config(field_name="failover_config")) + product: str | None = dc_field( + default=None, metadata=dc_config(field_name="product") + ) + should_send_custom_events: bool | None = dc_field( + default=None, metadata=dc_config(field_name="should_send_custom_events") + ) + sns_auth_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="sns_auth_type") + ) + sns_event_based_message_group_id_enabled: bool | None = dc_field( + default=None, + metadata=dc_config(field_name="sns_event_based_message_group_id_enabled"), + ) + sns_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="sns_key") + ) + sns_region: str | None = dc_field( + default=None, metadata=dc_config(field_name="sns_region") + ) + sns_role_arn: str | None = dc_field( + default=None, metadata=dc_config(field_name="sns_role_arn") + ) + sns_secret: str | None = dc_field( + default=None, metadata=dc_config(field_name="sns_secret") + ) + sns_topic_arn: str | None = dc_field( + default=None, metadata=dc_config(field_name="sns_topic_arn") + ) + sqs_auth_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="sqs_auth_type") + ) + sqs_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="sqs_key") + ) + sqs_queue_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="sqs_queue_url") + ) + sqs_region: str | None = dc_field( + default=None, metadata=dc_config(field_name="sqs_region") + ) + sqs_role_arn: str | None = dc_field( + default=None, metadata=dc_config(field_name="sqs_role_arn") + ) + sqs_secret: str | None = dc_field( + default=None, metadata=dc_config(field_name="sqs_secret") + ) + timeout_ms: int | None = dc_field( + default=None, metadata=dc_config(field_name="timeout_ms") + ) + updated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + webhook_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="webhook_url") + ) + event_types: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="event_types") + ) + callback: "AsyncModerationCallbackConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="callback") + ) + failover_config: "WebhookFailoverConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="failover_config") + ) + @dataclass class EventNotificationSettings(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - apns: 'APNS' = dc_field(metadata=dc_config(field_name="apns")) - fcm: 'FCM' = dc_field(metadata=dc_config(field_name="fcm")) + apns: "APNS" = dc_field(metadata=dc_config(field_name="apns")) + fcm: "FCM" = dc_field(metadata=dc_config(field_name="fcm")) + @dataclass class EventNotificationSettingsRequest(DataClassJsonMixin): - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - apns: 'APNSPayload | None' = dc_field(default=None, metadata=dc_config(field_name="apns")) - fcm: 'FCMPayload | None' = dc_field(default=None, metadata=dc_config(field_name="fcm")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + apns: "APNSPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="apns") + ) + fcm: "FCMPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="fcm") + ) + @dataclass class EventNotificationSettingsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - apns: 'APNSPayload' = dc_field(metadata=dc_config(field_name="apns")) - fcm: 'FCMPayload' = dc_field(metadata=dc_config(field_name="fcm")) + apns: "APNSPayload" = dc_field(metadata=dc_config(field_name="apns")) + fcm: "FCMPayload" = dc_field(metadata=dc_config(field_name="fcm")) + @dataclass class EventRequest(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class EventResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents an BaseEvent that happened in Stream Chat - event: 'WSEvent' = dc_field(metadata=dc_config(field_name="event")) + event: "WSEvent" = dc_field(metadata=dc_config(field_name="event")) + @dataclass class ExportChannelsRequest(DataClassJsonMixin): # Export options for channels - channels: 'list[ChannelExport]' = dc_field(metadata=dc_config(field_name="channels")) + channels: "list[ChannelExport]" = dc_field( + metadata=dc_config(field_name="channels") + ) # Set if deleted message text should be cleared - clear_deleted_message_text: bool | None = dc_field(default=None, metadata=dc_config(field_name="clear_deleted_message_text")) - export_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="export_users")) + clear_deleted_message_text: bool | None = dc_field( + default=None, metadata=dc_config(field_name="clear_deleted_message_text") + ) + export_users: bool | None = dc_field( + default=None, metadata=dc_config(field_name="export_users") + ) # Output format: 'json' (default) or 'csv'. csv requires version=v2 and is incompatible with export_users format: str | None = dc_field(default=None, metadata=dc_config(field_name="format")) # Set if you want to include deleted channels - include_soft_deleted_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_soft_deleted_channels")) + include_soft_deleted_channels: bool | None = dc_field( + default=None, metadata=dc_config(field_name="include_soft_deleted_channels") + ) # Set if you want to include truncated messages - include_truncated_messages: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_truncated_messages")) + include_truncated_messages: bool | None = dc_field( + default=None, metadata=dc_config(field_name="include_truncated_messages") + ) # Export version - version: str | None = dc_field(default=None, metadata=dc_config(field_name="version")) + version: str | None = dc_field( + default=None, metadata=dc_config(field_name="version") + ) # For csv format: subset of message columns to include (defaults to a standard set) - include_fields: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="include_fields")) + include_fields: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="include_fields") + ) + @dataclass class ExportChannelsResponse(DataClassJsonMixin): @@ -5878,37 +11836,49 @@ class ExportChannelsResponse(DataClassJsonMixin): # ID of the task to export channels task_id: str = dc_field(metadata=dc_config(field_name="task_id")) + @dataclass class ExportFeedUserDataRequest(DataClassJsonMixin): pass + @dataclass class ExportFeedUserDataResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # The task ID for the export task task_id: str = dc_field(metadata=dc_config(field_name="task_id")) + @dataclass class ExportUserResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of exported messages - messages: 'list[MessageResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="messages")) + messages: "list[MessageResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="messages") + ) # List of exported reactions - reactions: 'list[ReactionResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="reactions")) + reactions: "list[ReactionResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="reactions") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ExportUsersRequest(DataClassJsonMixin): user_ids: list[str] = dc_field(metadata=dc_config(field_name="user_ids")) + @dataclass class ExportUsersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) + @dataclass class ExternalStorageResponse(DataClassJsonMixin): bucket: str = dc_field(metadata=dc_config(field_name="bucket")) @@ -5916,256 +11886,612 @@ class ExternalStorageResponse(DataClassJsonMixin): path: str = dc_field(metadata=dc_config(field_name="path")) type: str = dc_field(metadata=dc_config(field_name="type")) + @dataclass class FCM(DataClassJsonMixin): - data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) + data: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="data") + ) + @dataclass class FCMPayload(DataClassJsonMixin): - data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) + data: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="data") + ) + @dataclass class FailedChannelUpdates(DataClassJsonMixin): reason: str = dc_field(metadata=dc_config(field_name="reason")) cids: list[str] = dc_field(metadata=dc_config(field_name="cids")) + @dataclass class FeedCreatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) - members: 'list[FeedMemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + members: "list[FeedMemberResponse]" = dc_field( + metadata=dc_config(field_name="members") + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - feed: 'FeedResponse' = dc_field(metadata=dc_config(field_name="feed")) - user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) + feed: "FeedResponse" = dc_field(metadata=dc_config(field_name="feed")) + user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "feeds.feed.created" in this case - type: str = dc_field(default="feeds.feed.created", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="feeds.feed.created", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class FeedDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.feed.deleted" in this case - type: str = dc_field(default="feeds.feed.deleted", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.feed.deleted", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class FeedGroup(DataClassJsonMixin): - aggregation_version: int = dc_field(metadata=dc_config(field_name="aggregation_version")) + aggregation_version: int = dc_field( + metadata=dc_config(field_name="aggregation_version") + ) app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - default_follower_role: str = dc_field(metadata=dc_config(field_name="default_follower_role")) - default_visibility: str = dc_field(metadata=dc_config(field_name="default_visibility")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + default_follower_role: str = dc_field( + metadata=dc_config(field_name="default_follower_role") + ) + default_visibility: str = dc_field( + metadata=dc_config(field_name="default_visibility") + ) group_id: str = dc_field(metadata=dc_config(field_name="group_id")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - activity_processors: 'list[ActivityProcessorConfig]' = dc_field(metadata=dc_config(field_name="activity_processors")) - activity_selectors: 'list[ActivitySelectorConfig]' = dc_field(metadata=dc_config(field_name="activity_selectors")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + activity_processors: "list[ActivityProcessorConfig]" = dc_field( + metadata=dc_config(field_name="activity_processors") + ) + activity_selectors: "list[ActivitySelectorConfig]" = dc_field( + metadata=dc_config(field_name="activity_selectors") + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - last_feed_get_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_feed_get_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - activity_filter: 'ActivityFilterConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_filter")) - aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) - notification: 'NotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="notification")) - push_notification: 'PushNotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="push_notification")) - ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) - stories: 'StoriesConfig | None' = dc_field(default=None, metadata=dc_config(field_name="stories")) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + last_feed_get_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_feed_get_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + activity_filter: "ActivityFilterConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_filter") + ) + aggregation: "AggregationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="aggregation") + ) + notification: "NotificationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="notification") + ) + push_notification: "PushNotificationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="push_notification") + ) + ranking: "RankingConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="ranking") + ) + stories: "StoriesConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="stories") + ) + @dataclass class FeedGroupChangedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.feed_group.changed" in this case - type: str = dc_field(default="feeds.feed_group.changed", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - feed_group: 'FeedGroup | None' = dc_field(default=None, metadata=dc_config(field_name="feed_group")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.feed_group.changed", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + feed_group: "FeedGroup | None" = dc_field( + default=None, metadata=dc_config(field_name="feed_group") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class FeedGroupDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) # The ID of the feed group that was deleted group_id: str = dc_field(metadata=dc_config(field_name="group_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.feed_group.deleted" in this case - type: str = dc_field(default="feeds.feed_group.deleted", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="feeds.feed_group.deleted", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class FeedGroupResponse(DataClassJsonMixin): # When the feed group was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Identifier within the group id: str = dc_field(metadata=dc_config(field_name="id")) # When the feed group was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Role new followers of feeds in this group are given. Either a built-in (feed_follower, feed_member_viewer) or any role your app has defined. Empty means feed_follower. Applied when the follow is accepted, so a follow that starts pending picks it up on approval - default_follower_role: str | None = dc_field(default=None, metadata=dc_config(field_name="default_follower_role")) + default_follower_role: str | None = dc_field( + default=None, metadata=dc_config(field_name="default_follower_role") + ) # Default visibility for activities. One of: public, visible, followers, members, private - default_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="default_visibility")) - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + default_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="default_visibility") + ) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Configuration for activity processors - activity_processors: 'list[ActivityProcessorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_processors")) + activity_processors: "list[ActivityProcessorConfig] | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_processors") + ) # Configuration for activity selectors - activity_selectors: 'list[ActivitySelectorConfigResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_selectors")) - activity_filter: 'ActivityFilterConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_filter")) - activity_processing: 'ActivityProcessingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_processing")) - aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) + activity_selectors: "list[ActivitySelectorConfigResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_selectors") + ) + activity_filter: "ActivityFilterConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_filter") + ) + activity_processing: "ActivityProcessingConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_processing") + ) + aggregation: "AggregationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="aggregation") + ) # Custom data for the feed group - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - notification: 'NotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="notification")) - push_notification: 'PushNotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="push_notification")) - ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) - stories: 'StoriesConfig | None' = dc_field(default=None, metadata=dc_config(field_name="stories")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + notification: "NotificationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="notification") + ) + push_notification: "PushNotificationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="push_notification") + ) + ranking: "RankingConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="ranking") + ) + stories: "StoriesConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="stories") + ) + @dataclass class FeedGroupRestoredEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) # The ID of the feed group that was restored group_id: str = dc_field(metadata=dc_config(field_name="group_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.feed_group.restored" in this case - type: str = dc_field(default="feeds.feed_group.restored", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="feeds.feed_group.restored", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class FeedInput(DataClassJsonMixin): - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility")) - filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) - members: 'list[FeedMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) + visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="visibility") + ) + filter_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_tags") + ) + members: "list[FeedMemberRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="members") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + location: "Location | None" = dc_field( + default=None, metadata=dc_config(field_name="location") + ) + @dataclass class FeedMemberAddedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - member: 'FeedMemberResponse' = dc_field(metadata=dc_config(field_name="member")) + member: "FeedMemberResponse" = dc_field(metadata=dc_config(field_name="member")) # The type of event: "feeds.feed_member.added" in this case - type: str = dc_field(default="feeds.feed_member.added", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.feed_member.added", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class FeedMemberRemovedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) member_id: str = dc_field(metadata=dc_config(field_name="member_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.feed_member.removed" in this case - type: str = dc_field(default="feeds.feed_member.removed", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.feed_member.removed", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class FeedMemberRequest(DataClassJsonMixin): # ID of the user to add as a member user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # Whether this is an invite to become a member - invite: bool | None = dc_field(default=None, metadata=dc_config(field_name="invite")) + invite: bool | None = dc_field( + default=None, metadata=dc_config(field_name="invite") + ) # ID of the membership level to assign to the member - membership_level: str | None = dc_field(default=None, metadata=dc_config(field_name="membership_level")) + membership_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="membership_level") + ) # Role of the member in the feed role: str | None = dc_field(default=None, metadata=dc_config(field_name="role")) # Custom data for the member - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class FeedMemberResponse(DataClassJsonMixin): # When the membership was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Role of the member in the feed role: str = dc_field(metadata=dc_config(field_name="role")) # Status of the membership. One of: member, pending, rejected status: str = dc_field(metadata=dc_config(field_name="status")) # When the membership was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # When the invite was accepted - invite_accepted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="invite_accepted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + invite_accepted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="invite_accepted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # When the invite was rejected - invite_rejected_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="invite_rejected_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + invite_rejected_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="invite_rejected_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Custom data for the membership - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - membership_level: 'MembershipLevelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="membership_level")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + membership_level: "MembershipLevelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="membership_level") + ) + @dataclass class FeedMemberUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - member: 'FeedMemberResponse' = dc_field(metadata=dc_config(field_name="member")) + member: "FeedMemberResponse" = dc_field(metadata=dc_config(field_name="member")) # The type of event: "feeds.feed_member.updated" in this case - type: str = dc_field(default="feeds.feed_member.updated", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.feed_member.updated", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + + +FeedOwnCapabilityType = NewType("FeedOwnCapabilityType", str) -FeedOwnCapabilityType = NewType('FeedOwnCapabilityType', str) class FeedOwnCapability: - ADD_ACTIVITY: Final[FeedOwnCapabilityType] = 'add-activity' - ADD_ACTIVITY_BOOKMARK: Final[FeedOwnCapabilityType] = 'add-activity-bookmark' - ADD_ACTIVITY_REACTION: Final[FeedOwnCapabilityType] = 'add-activity-reaction' - ADD_COMMENT: Final[FeedOwnCapabilityType] = 'add-comment' - ADD_COMMENT_REACTION: Final[FeedOwnCapabilityType] = 'add-comment-reaction' - CREATE_FEED: Final[FeedOwnCapabilityType] = 'create-feed' - DELETE_ANY_ACTIVITY: Final[FeedOwnCapabilityType] = 'delete-any-activity' - DELETE_ANY_COMMENT: Final[FeedOwnCapabilityType] = 'delete-any-comment' - DELETE_FEED: Final[FeedOwnCapabilityType] = 'delete-feed' - DELETE_OWN_ACTIVITY: Final[FeedOwnCapabilityType] = 'delete-own-activity' - DELETE_OWN_ACTIVITY_BOOKMARK: Final[FeedOwnCapabilityType] = 'delete-own-activity-bookmark' - DELETE_OWN_ACTIVITY_REACTION: Final[FeedOwnCapabilityType] = 'delete-own-activity-reaction' - DELETE_OWN_COMMENT: Final[FeedOwnCapabilityType] = 'delete-own-comment' - DELETE_OWN_COMMENT_REACTION: Final[FeedOwnCapabilityType] = 'delete-own-comment-reaction' - FOLLOW: Final[FeedOwnCapabilityType] = 'follow' - PIN_ACTIVITY: Final[FeedOwnCapabilityType] = 'pin-activity' - QUERY_FEED_MEMBERS: Final[FeedOwnCapabilityType] = 'query-feed-members' - QUERY_FOLLOWS: Final[FeedOwnCapabilityType] = 'query-follows' - READ_ACTIVITIES: Final[FeedOwnCapabilityType] = 'read-activities' - READ_FEED: Final[FeedOwnCapabilityType] = 'read-feed' - UNFOLLOW: Final[FeedOwnCapabilityType] = 'unfollow' - UPDATE_ANY_ACTIVITY: Final[FeedOwnCapabilityType] = 'update-any-activity' - UPDATE_ANY_COMMENT: Final[FeedOwnCapabilityType] = 'update-any-comment' - UPDATE_FEED: Final[FeedOwnCapabilityType] = 'update-feed' - UPDATE_FEED_FOLLOWERS: Final[FeedOwnCapabilityType] = 'update-feed-followers' - UPDATE_FEED_MEMBERS: Final[FeedOwnCapabilityType] = 'update-feed-members' - UPDATE_OWN_ACTIVITY: Final[FeedOwnCapabilityType] = 'update-own-activity' - UPDATE_OWN_ACTIVITY_BOOKMARK: Final[FeedOwnCapabilityType] = 'update-own-activity-bookmark' - UPDATE_OWN_COMMENT: Final[FeedOwnCapabilityType] = 'update-own-comment' + ADD_ACTIVITY: Final[FeedOwnCapabilityType] = "add-activity" + ADD_ACTIVITY_BOOKMARK: Final[FeedOwnCapabilityType] = "add-activity-bookmark" + ADD_ACTIVITY_REACTION: Final[FeedOwnCapabilityType] = "add-activity-reaction" + ADD_COMMENT: Final[FeedOwnCapabilityType] = "add-comment" + ADD_COMMENT_REACTION: Final[FeedOwnCapabilityType] = "add-comment-reaction" + CREATE_FEED: Final[FeedOwnCapabilityType] = "create-feed" + DELETE_ANY_ACTIVITY: Final[FeedOwnCapabilityType] = "delete-any-activity" + DELETE_ANY_COMMENT: Final[FeedOwnCapabilityType] = "delete-any-comment" + DELETE_FEED: Final[FeedOwnCapabilityType] = "delete-feed" + DELETE_OWN_ACTIVITY: Final[FeedOwnCapabilityType] = "delete-own-activity" + DELETE_OWN_ACTIVITY_BOOKMARK: Final[FeedOwnCapabilityType] = ( + "delete-own-activity-bookmark" + ) + DELETE_OWN_ACTIVITY_REACTION: Final[FeedOwnCapabilityType] = ( + "delete-own-activity-reaction" + ) + DELETE_OWN_COMMENT: Final[FeedOwnCapabilityType] = "delete-own-comment" + DELETE_OWN_COMMENT_REACTION: Final[FeedOwnCapabilityType] = ( + "delete-own-comment-reaction" + ) + FOLLOW: Final[FeedOwnCapabilityType] = "follow" + PIN_ACTIVITY: Final[FeedOwnCapabilityType] = "pin-activity" + QUERY_FEED_MEMBERS: Final[FeedOwnCapabilityType] = "query-feed-members" + QUERY_FOLLOWS: Final[FeedOwnCapabilityType] = "query-follows" + READ_ACTIVITIES: Final[FeedOwnCapabilityType] = "read-activities" + READ_FEED: Final[FeedOwnCapabilityType] = "read-feed" + UNFOLLOW: Final[FeedOwnCapabilityType] = "unfollow" + UPDATE_ANY_ACTIVITY: Final[FeedOwnCapabilityType] = "update-any-activity" + UPDATE_ANY_COMMENT: Final[FeedOwnCapabilityType] = "update-any-comment" + UPDATE_FEED: Final[FeedOwnCapabilityType] = "update-feed" + UPDATE_FEED_FOLLOWERS: Final[FeedOwnCapabilityType] = "update-feed-followers" + UPDATE_FEED_MEMBERS: Final[FeedOwnCapabilityType] = "update-feed-members" + UPDATE_OWN_ACTIVITY: Final[FeedOwnCapabilityType] = "update-own-activity" + UPDATE_OWN_ACTIVITY_BOOKMARK: Final[FeedOwnCapabilityType] = ( + "update-own-activity-bookmark" + ) + UPDATE_OWN_COMMENT: Final[FeedOwnCapabilityType] = "update-own-comment" + @dataclass class FeedOwnData(DataClassJsonMixin): # Capabilities the current user has for this feed - own_capabilities: 'list[FeedOwnCapability] | None' = dc_field(default=None, metadata=dc_config(field_name="own_capabilities")) + own_capabilities: "list[FeedOwnCapability] | None" = dc_field( + default=None, metadata=dc_config(field_name="own_capabilities") + ) # Follow relationships where the feed owner's feeds are following the current user's feeds (up to 5 total) - own_followings: 'list[FollowResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="own_followings")) + own_followings: "list[FollowResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="own_followings") + ) # Follow relationships where the current user's feeds are following this feed - own_follows: 'list[FollowResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="own_follows")) - own_membership: 'FeedMemberResponse | None' = dc_field(default=None, metadata=dc_config(field_name="own_membership")) + own_follows: "list[FollowResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="own_follows") + ) + own_membership: "FeedMemberResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="own_membership") + ) + @dataclass class FeedRequest(DataClassJsonMixin): @@ -6174,26 +12500,48 @@ class FeedRequest(DataClassJsonMixin): # ID of the feed feed_id: str = dc_field(metadata=dc_config(field_name="feed_id")) # ID of the feed creator - created_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_id")) + created_by_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="created_by_id") + ) # Description of the feed - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) # Name of the feed name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # Visibility setting for the feed. One of: public, visible, followers, members, private - visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility")) + visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="visibility") + ) # Tags used for filtering feeds - filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) + filter_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_tags") + ) # Initial members for the feed - members: 'list[FeedMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) + members: "list[FeedMemberRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="members") + ) # Custom data for the feed - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + location: "Location | None" = dc_field( + default=None, metadata=dc_config(field_name="location") + ) + @dataclass class FeedResponse(DataClassJsonMixin): activity_count: int = dc_field(metadata=dc_config(field_name="activity_count")) # When the feed was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Description of the feed description: str = dc_field(metadata=dc_config(field_name="description")) # Fully qualified feed ID (group_id:id) @@ -6213,31 +12561,70 @@ class FeedResponse(DataClassJsonMixin): # Number of pinned activities in this feed pin_count: int = dc_field(metadata=dc_config(field_name="pin_count")) # When the feed was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # User response object - created_by: 'UserResponse' = dc_field(metadata=dc_config(field_name="created_by")) + created_by: "UserResponse" = dc_field(metadata=dc_config(field_name="created_by")) # When the feed was deleted - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Visibility setting for the feed - visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility")) + visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="visibility") + ) # Tags used for filtering feeds - filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) + filter_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_tags") + ) # Capabilities the current user has for this feed - own_capabilities: 'list[FeedOwnCapability] | None' = dc_field(default=None, metadata=dc_config(field_name="own_capabilities")) + own_capabilities: "list[FeedOwnCapability] | None" = dc_field( + default=None, metadata=dc_config(field_name="own_capabilities") + ) # Follow relationships where the feed owner’s feeds are following the current user's feeds - own_followings: 'list[FollowResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="own_followings")) + own_followings: "list[FollowResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="own_followings") + ) # Follow relationships where the current user's feeds are following this feed - own_follows: 'list[FollowResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="own_follows")) + own_follows: "list[FollowResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="own_follows") + ) # Custom data for the feed - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) - own_membership: 'FeedMemberResponse | None' = dc_field(default=None, metadata=dc_config(field_name="own_membership")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + location: "Location | None" = dc_field( + default=None, metadata=dc_config(field_name="location") + ) + own_membership: "FeedMemberResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="own_membership") + ) + @dataclass class FeedSuggestionResponse(DataClassJsonMixin): activity_count: int = dc_field(metadata=dc_config(field_name="activity_count")) # When the feed was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Description of the feed description: str = dc_field(metadata=dc_config(field_name="description")) # Fully qualified feed ID (group_id:id) @@ -6257,91 +12644,209 @@ class FeedSuggestionResponse(DataClassJsonMixin): # Number of pinned activities in this feed pin_count: int = dc_field(metadata=dc_config(field_name="pin_count")) # When the feed was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # User response object - created_by: 'UserResponse' = dc_field(metadata=dc_config(field_name="created_by")) + created_by: "UserResponse" = dc_field(metadata=dc_config(field_name="created_by")) # When the feed was deleted - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - recommendation_score: float | None = dc_field(default=None, metadata=dc_config(field_name="recommendation_score")) + recommendation_score: float | None = dc_field( + default=None, metadata=dc_config(field_name="recommendation_score") + ) # Visibility setting for the feed - visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility")) + visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="visibility") + ) # Tags used for filtering feeds - filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) + filter_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_tags") + ) # Capabilities the current user has for this feed - own_capabilities: 'list[FeedOwnCapability] | None' = dc_field(default=None, metadata=dc_config(field_name="own_capabilities")) + own_capabilities: "list[FeedOwnCapability] | None" = dc_field( + default=None, metadata=dc_config(field_name="own_capabilities") + ) # Follow relationships where the feed owner’s feeds are following the current user's feeds - own_followings: 'list[FollowResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="own_followings")) + own_followings: "list[FollowResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="own_followings") + ) # Follow relationships where the current user's feeds are following this feed - own_follows: 'list[FollowResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="own_follows")) - algorithm_scores: 'dict[str, float] | None' = dc_field(default=None, metadata=dc_config(field_name="algorithm_scores")) + own_follows: "list[FollowResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="own_follows") + ) + algorithm_scores: "dict[str, float] | None" = dc_field( + default=None, metadata=dc_config(field_name="algorithm_scores") + ) # Custom data for the feed - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) - own_membership: 'FeedMemberResponse | None' = dc_field(default=None, metadata=dc_config(field_name="own_membership")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + location: "Location | None" = dc_field( + default=None, metadata=dc_config(field_name="location") + ) + own_membership: "FeedMemberResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="own_membership") + ) + @dataclass class FeedUpdatedEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - feed: 'FeedResponse' = dc_field(metadata=dc_config(field_name="feed")) + feed: "FeedResponse" = dc_field(metadata=dc_config(field_name="feed")) # The type of event: "feeds.feed.updated" in this case - type: str = dc_field(default="feeds.feed.updated", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + type: str = dc_field( + default="feeds.feed.updated", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class FeedViewResponse(DataClassJsonMixin): # Unique identifier for the custom feed view id: str = dc_field(metadata=dc_config(field_name="id")) # When the feed view was last used - last_used_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_used_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_used_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_used_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Configured activity selectors - activity_selectors: 'list[ActivitySelectorConfigResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_selectors")) - aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) - ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) + activity_selectors: "list[ActivitySelectorConfigResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_selectors") + ) + aggregation: "AggregationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="aggregation") + ) + ranking: "RankingConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="ranking") + ) + @dataclass class FeedVisibilityResponse(DataClassJsonMixin): # Name of the feed visibility level name: str = dc_field(metadata=dc_config(field_name="name")) # List of permission policies - permissions: 'list[Permission]' = dc_field(metadata=dc_config(field_name="permissions")) + permissions: "list[Permission]" = dc_field( + metadata=dc_config(field_name="permissions") + ) # Permission grants for each role - grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) + grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) + @dataclass class FeedsActivityLocation(DataClassJsonMixin): lat: float = dc_field(metadata=dc_config(field_name="lat")) lng: float = dc_field(metadata=dc_config(field_name="lng")) + @dataclass class FeedsBookmarkResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) object_id: str = dc_field(metadata=dc_config(field_name="object_id")) object_type: str = dc_field(metadata=dc_config(field_name="object_type")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) - activity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="activity_id")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + activity_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="activity_id") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class FeedsEnrichedCollectionResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) id: str = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) status: str = dc_field(metadata=dc_config(field_name="status")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + @dataclass class FeedsFeedResponse(DataClassJsonMixin): activity_count: int = dc_field(metadata=dc_config(field_name="activity_count")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) description: str = dc_field(metadata=dc_config(field_name="description")) feed: str = dc_field(metadata=dc_config(field_name="feed")) follower_count: int = dc_field(metadata=dc_config(field_name="follower_count")) @@ -6351,41 +12856,81 @@ class FeedsFeedResponse(DataClassJsonMixin): member_count: int = dc_field(metadata=dc_config(field_name="member_count")) name: str = dc_field(metadata=dc_config(field_name="name")) pin_count: int = dc_field(metadata=dc_config(field_name="pin_count")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # User response object - created_by: 'UserResponse' = dc_field(metadata=dc_config(field_name="created_by")) - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility")) - filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - location: 'FeedsActivityLocation | None' = dc_field(default=None, metadata=dc_config(field_name="location")) + created_by: "UserResponse" = dc_field(metadata=dc_config(field_name="created_by")) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="visibility") + ) + filter_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_tags") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + location: "FeedsActivityLocation | None" = dc_field( + default=None, metadata=dc_config(field_name="location") + ) + @dataclass class FeedsModerationTemplateConfigPayload(DataClassJsonMixin): # Map of data type names to their content types - data_types: 'dict[str, str]' = dc_field(metadata=dc_config(field_name="data_types")) + data_types: "dict[str, str]" = dc_field(metadata=dc_config(field_name="data_types")) # Key of the moderation configuration to use - config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) + config_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="config_key") + ) + @dataclass class FeedsNotificationComment(DataClassJsonMixin): comment: str = dc_field(metadata=dc_config(field_name="comment")) id: str = dc_field(metadata=dc_config(field_name="id")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) + @dataclass class FeedsNotificationContext(DataClassJsonMixin): - target: 'FeedsNotificationTarget | None' = dc_field(default=None, metadata=dc_config(field_name="target")) - trigger: 'FeedsNotificationTrigger | None' = dc_field(default=None, metadata=dc_config(field_name="trigger")) + target: "FeedsNotificationTarget | None" = dc_field( + default=None, metadata=dc_config(field_name="target") + ) + trigger: "FeedsNotificationTrigger | None" = dc_field( + default=None, metadata=dc_config(field_name="trigger") + ) + @dataclass class FeedsNotificationParentActivity(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) + @dataclass class FeedsNotificationTarget(DataClassJsonMixin): @@ -6393,78 +12938,173 @@ class FeedsNotificationTarget(DataClassJsonMixin): name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) - comment: 'FeedsNotificationComment | None' = dc_field(default=None, metadata=dc_config(field_name="comment")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - parent_activity: 'FeedsNotificationParentActivity | None' = dc_field(default=None, metadata=dc_config(field_name="parent_activity")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) + comment: "FeedsNotificationComment | None" = dc_field( + default=None, metadata=dc_config(field_name="comment") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + parent_activity: "FeedsNotificationParentActivity | None" = dc_field( + default=None, metadata=dc_config(field_name="parent_activity") + ) + @dataclass class FeedsNotificationTrigger(DataClassJsonMixin): text: str = dc_field(metadata=dc_config(field_name="text")) type: str = dc_field(metadata=dc_config(field_name="type")) - comment: 'FeedsNotificationComment | None' = dc_field(default=None, metadata=dc_config(field_name="comment")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + comment: "FeedsNotificationComment | None" = dc_field( + default=None, metadata=dc_config(field_name="comment") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class FeedsPreferences(DataClassJsonMixin): # Push notification preference for comments on user's activities. One of: all, none - comment: str | None = dc_field(default=None, metadata=dc_config(field_name="comment")) + comment: str | None = dc_field( + default=None, metadata=dc_config(field_name="comment") + ) # Push notification preference for mentions in comments. One of: all, none - comment_mention: str | None = dc_field(default=None, metadata=dc_config(field_name="comment_mention")) + comment_mention: str | None = dc_field( + default=None, metadata=dc_config(field_name="comment_mention") + ) # Push notification preference for reactions on comments. One of: all, none - comment_reaction: str | None = dc_field(default=None, metadata=dc_config(field_name="comment_reaction")) + comment_reaction: str | None = dc_field( + default=None, metadata=dc_config(field_name="comment_reaction") + ) # Push notification preference for replies to comments. One of: all, none - comment_reply: str | None = dc_field(default=None, metadata=dc_config(field_name="comment_reply")) + comment_reply: str | None = dc_field( + default=None, metadata=dc_config(field_name="comment_reply") + ) # Push notification preference for new followers. One of: all, none follow: str | None = dc_field(default=None, metadata=dc_config(field_name="follow")) # Push notification preference for mentions in activities. One of: all, none - mention: str | None = dc_field(default=None, metadata=dc_config(field_name="mention")) + mention: str | None = dc_field( + default=None, metadata=dc_config(field_name="mention") + ) # Push notification preference for reactions on user's activities or comments. One of: all, none - reaction: str | None = dc_field(default=None, metadata=dc_config(field_name="reaction")) + reaction: str | None = dc_field( + default=None, metadata=dc_config(field_name="reaction") + ) # Push notification preferences for custom activity types. Map of activity type to preference (all or none) - custom_activity_types: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="custom_activity_types")) + custom_activity_types: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="custom_activity_types") + ) + @dataclass class FeedsPreferencesResponse(DataClassJsonMixin): - comment: str | None = dc_field(default=None, metadata=dc_config(field_name="comment")) - comment_mention: str | None = dc_field(default=None, metadata=dc_config(field_name="comment_mention")) - comment_reaction: str | None = dc_field(default=None, metadata=dc_config(field_name="comment_reaction")) - comment_reply: str | None = dc_field(default=None, metadata=dc_config(field_name="comment_reply")) + comment: str | None = dc_field( + default=None, metadata=dc_config(field_name="comment") + ) + comment_mention: str | None = dc_field( + default=None, metadata=dc_config(field_name="comment_mention") + ) + comment_reaction: str | None = dc_field( + default=None, metadata=dc_config(field_name="comment_reaction") + ) + comment_reply: str | None = dc_field( + default=None, metadata=dc_config(field_name="comment_reply") + ) follow: str | None = dc_field(default=None, metadata=dc_config(field_name="follow")) - mention: str | None = dc_field(default=None, metadata=dc_config(field_name="mention")) - reaction: str | None = dc_field(default=None, metadata=dc_config(field_name="reaction")) - custom_activity_types: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="custom_activity_types")) + mention: str | None = dc_field( + default=None, metadata=dc_config(field_name="mention") + ) + reaction: str | None = dc_field( + default=None, metadata=dc_config(field_name="reaction") + ) + custom_activity_types: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="custom_activity_types") + ) + @dataclass class FeedsReactionGroupResponse(DataClassJsonMixin): count: int = dc_field(metadata=dc_config(field_name="count")) - first_reaction_at: datetime = dc_field(metadata=dc_config(field_name="first_reaction_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - last_reaction_at: datetime = dc_field(metadata=dc_config(field_name="last_reaction_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + first_reaction_at: datetime = dc_field( + metadata=dc_config( + field_name="first_reaction_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + last_reaction_at: datetime = dc_field( + metadata=dc_config( + field_name="last_reaction_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + @dataclass class FeedsReactionResponse(DataClassJsonMixin): activity_id: str = dc_field(metadata=dc_config(field_name="activity_id")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) - comment_id: str | None = dc_field(default=None, metadata=dc_config(field_name="comment_id")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + comment_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="comment_id") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class FeedsShareResponse(DataClassJsonMixin): activity_id: str = dc_field(metadata=dc_config(field_name="activity_id")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + @dataclass class FeedsV3ActivityResponse(DataClassJsonMixin): bookmark_count: int = dc_field(metadata=dc_config(field_name="bookmark_count")) comment_count: int = dc_field(metadata=dc_config(field_name="comment_count")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) hidden: bool = dc_field(metadata=dc_config(field_name="hidden")) id: str = dc_field(metadata=dc_config(field_name="id")) popularity: int = dc_field(metadata=dc_config(field_name="popularity")) @@ -6474,51 +13114,146 @@ class FeedsV3ActivityResponse(DataClassJsonMixin): score: float = dc_field(metadata=dc_config(field_name="score")) share_count: int = dc_field(metadata=dc_config(field_name="share_count")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) visibility: str = dc_field(metadata=dc_config(field_name="visibility")) - attachments: 'list[Attachment]' = dc_field(metadata=dc_config(field_name="attachments")) - comments: 'list[FeedsV3CommentResponse]' = dc_field(metadata=dc_config(field_name="comments")) + attachments: "list[Attachment]" = dc_field( + metadata=dc_config(field_name="attachments") + ) + comments: "list[FeedsV3CommentResponse]" = dc_field( + metadata=dc_config(field_name="comments") + ) feeds: list[str] = dc_field(metadata=dc_config(field_name="feeds")) filter_tags: list[str] = dc_field(metadata=dc_config(field_name="filter_tags")) interest_tags: list[str] = dc_field(metadata=dc_config(field_name="interest_tags")) - latest_reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="latest_reactions")) - mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) - own_bookmarks: 'list[FeedsBookmarkResponse]' = dc_field(metadata=dc_config(field_name="own_bookmarks")) - own_reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) - collections: 'dict[str, FeedsEnrichedCollectionResponse]' = dc_field(metadata=dc_config(field_name="collections")) - custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction_groups: 'dict[str, FeedsReactionGroupResponse]' = dc_field(metadata=dc_config(field_name="reaction_groups")) - search_data: dict[str, object] = dc_field(metadata=dc_config(field_name="search_data")) + latest_reactions: "list[FeedsReactionResponse]" = dc_field( + metadata=dc_config(field_name="latest_reactions") + ) + mentioned_users: "list[UserResponse]" = dc_field( + metadata=dc_config(field_name="mentioned_users") + ) + own_bookmarks: "list[FeedsBookmarkResponse]" = dc_field( + metadata=dc_config(field_name="own_bookmarks") + ) + own_reactions: "list[FeedsReactionResponse]" = dc_field( + metadata=dc_config(field_name="own_reactions") + ) + collections: "dict[str, FeedsEnrichedCollectionResponse]" = dc_field( + metadata=dc_config(field_name="collections") + ) + custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + reaction_groups: "dict[str, FeedsReactionGroupResponse]" = dc_field( + metadata=dc_config(field_name="reaction_groups") + ) + search_data: dict[str, object] = dc_field( + metadata=dc_config(field_name="search_data") + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - edited_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="edited_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - expires_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expires_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - friend_reaction_count: int | None = dc_field(default=None, metadata=dc_config(field_name="friend_reaction_count")) - is_read: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_read")) - is_seen: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_seen")) - is_watched: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_watched")) - moderation_action: str | None = dc_field(default=None, metadata=dc_config(field_name="moderation_action")) - selector_source: str | None = dc_field(default=None, metadata=dc_config(field_name="selector_source")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + edited_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="edited_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + expires_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="expires_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + friend_reaction_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="friend_reaction_count") + ) + is_read: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_read") + ) + is_seen: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_seen") + ) + is_watched: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_watched") + ) + moderation_action: str | None = dc_field( + default=None, metadata=dc_config(field_name="moderation_action") + ) + selector_source: str | None = dc_field( + default=None, metadata=dc_config(field_name="selector_source") + ) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) - visibility_tag: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility_tag")) - friend_reactions: 'list[FeedsReactionResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="friend_reactions")) - latest_shares: 'list[FeedsShareResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_shares")) - current_feed: 'FeedsFeedResponse | None' = dc_field(default=None, metadata=dc_config(field_name="current_feed")) - i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) - location: 'FeedsActivityLocation | None' = dc_field(default=None, metadata=dc_config(field_name="location")) - metrics: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="metrics")) - moderation: 'ModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) - notification_context: 'FeedsNotificationContext | None' = dc_field(default=None, metadata=dc_config(field_name="notification_context")) - parent: 'FeedsV3ActivityResponse | None' = dc_field(default=None, metadata=dc_config(field_name="parent")) - poll: 'PollResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll")) - score_vars: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="score_vars")) + visibility_tag: str | None = dc_field( + default=None, metadata=dc_config(field_name="visibility_tag") + ) + friend_reactions: "list[FeedsReactionResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="friend_reactions") + ) + latest_shares: "list[FeedsShareResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="latest_shares") + ) + current_feed: "FeedsFeedResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="current_feed") + ) + i18n: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="i18n") + ) + location: "FeedsActivityLocation | None" = dc_field( + default=None, metadata=dc_config(field_name="location") + ) + metrics: "dict[str, int] | None" = dc_field( + default=None, metadata=dc_config(field_name="metrics") + ) + moderation: "ModerationV2Response | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation") + ) + notification_context: "FeedsNotificationContext | None" = dc_field( + default=None, metadata=dc_config(field_name="notification_context") + ) + parent: "FeedsV3ActivityResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="parent") + ) + poll: "PollResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="poll") + ) + score_vars: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="score_vars") + ) + @dataclass class FeedsV3CommentResponse(DataClassJsonMixin): bookmark_count: int = dc_field(metadata=dc_config(field_name="bookmark_count")) - confidence_score: float = dc_field(metadata=dc_config(field_name="confidence_score")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + confidence_score: float = dc_field( + metadata=dc_config(field_name="confidence_score") + ) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) downvote_count: int = dc_field(metadata=dc_config(field_name="downvote_count")) id: str = dc_field(metadata=dc_config(field_name="id")) object_id: str = dc_field(metadata=dc_config(field_name="object_id")) @@ -6527,23 +13262,67 @@ class FeedsV3CommentResponse(DataClassJsonMixin): reply_count: int = dc_field(metadata=dc_config(field_name="reply_count")) score: int = dc_field(metadata=dc_config(field_name="score")) status: str = dc_field(metadata=dc_config(field_name="status")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) upvote_count: int = dc_field(metadata=dc_config(field_name="upvote_count")) - mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) - own_reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) + mentioned_users: "list[UserResponse]" = dc_field( + metadata=dc_config(field_name="mentioned_users") + ) + own_reactions: "list[FeedsReactionResponse]" = dc_field( + metadata=dc_config(field_name="own_reactions") + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) - controversy_score: float | None = dc_field(default=None, metadata=dc_config(field_name="controversy_score")) - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - edited_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="edited_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + controversy_score: float | None = dc_field( + default=None, metadata=dc_config(field_name="controversy_score") + ) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + edited_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="edited_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) - latest_reactions: 'list[FeedsReactionResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_reactions")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) - moderation: 'ModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) - reaction_groups: 'dict[str, FeedsReactionGroupResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="reaction_groups")) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) + latest_reactions: "list[FeedsReactionResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="latest_reactions") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + i18n: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="i18n") + ) + moderation: "ModerationV2Response | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation") + ) + reaction_groups: "dict[str, FeedsReactionGroupResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="reaction_groups") + ) + @dataclass class Field(DataClassJsonMixin): @@ -6551,19 +13330,32 @@ class Field(DataClassJsonMixin): title: str = dc_field(metadata=dc_config(field_name="title")) value: str = dc_field(metadata=dc_config(field_name="value")) + @dataclass class FileUploadConfig(DataClassJsonMixin): size_limit: int = dc_field(metadata=dc_config(field_name="size_limit")) - allowed_file_extensions: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_file_extensions")) - allowed_mime_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_mime_types")) - blocked_file_extensions: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="blocked_file_extensions")) - blocked_mime_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="blocked_mime_types")) + allowed_file_extensions: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowed_file_extensions") + ) + allowed_mime_types: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowed_mime_types") + ) + blocked_file_extensions: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="blocked_file_extensions") + ) + blocked_mime_types: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="blocked_mime_types") + ) + @dataclass class FileUploadRequest(DataClassJsonMixin): # file field file: str | None = dc_field(default=None, metadata=dc_config(field_name="file")) - user: 'OnlyUserID | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "OnlyUserID | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class FileUploadResponse(DataClassJsonMixin): @@ -6572,61 +13364,118 @@ class FileUploadResponse(DataClassJsonMixin): # URL to the uploaded asset. Should be used to put to `asset_url` attachment field file: str | None = dc_field(default=None, metadata=dc_config(field_name="file")) # URL of the file thumbnail for supported file formats. Should be put to `thumb_url` attachment field - thumb_url: str | None = dc_field(default=None, metadata=dc_config(field_name="thumb_url")) + thumb_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="thumb_url") + ) + @dataclass class FilterConfigResponse(DataClassJsonMixin): # LLM moderation labels available as filter values llm_labels: list[str] = dc_field(metadata=dc_config(field_name="llm_labels")) # AI image moderation labels available as filter values. Reflects the app's effective image taxonomy: custom Bodyguard taxonomy when enabled, otherwise the standard L1 label set. - ai_image_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="ai_image_labels")) + ai_image_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="ai_image_labels") + ) # AI text moderation labels available as filter values - ai_text_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="ai_text_labels")) + ai_text_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="ai_text_labels") + ) # Moderation config keys present in the queue, available as filter values - config_keys: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="config_keys")) + config_keys: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="config_keys") + ) # The moderation_payload.custom keys the app has configured as review-queue filter chips (via moderation_dashboard_preferences.filterable_custom_keys). Discovery hint for the dashboard only — the filter accepts any custom key regardless of this list. - filterable_custom_keys: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filterable_custom_keys")) + filterable_custom_keys: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="filterable_custom_keys") + ) # AI image moderation labels available as filter values, as a map of L1 label to its L2 sub-labels. Reflects the app's effective image taxonomy: custom Bodyguard taxonomy when enabled, otherwise the standard catalogue of the org's enabled image providers. - ai_image_taxonomy: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="ai_image_taxonomy")) + ai_image_taxonomy: "dict[str, list[str]] | None" = dc_field( + default=None, metadata=dc_config(field_name="ai_image_taxonomy") + ) + @dataclass class FirebaseConfig(DataClassJsonMixin): - apn_template: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_template")) - credentials_json: str | None = dc_field(default=None, metadata=dc_config(field_name="credentials_json")) - data_template: str | None = dc_field(default=None, metadata=dc_config(field_name="data_template")) - disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="Disabled")) - notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="notification_template")) - server_key: str | None = dc_field(default=None, metadata=dc_config(field_name="server_key")) + apn_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_template") + ) + credentials_json: str | None = dc_field( + default=None, metadata=dc_config(field_name="credentials_json") + ) + data_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="data_template") + ) + disabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="Disabled") + ) + notification_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="notification_template") + ) + server_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="server_key") + ) + @dataclass class FirebaseConfigFields(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - apn_template: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_template")) - credentials_json: str | None = dc_field(default=None, metadata=dc_config(field_name="credentials_json")) - data_template: str | None = dc_field(default=None, metadata=dc_config(field_name="data_template")) - notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="notification_template")) - server_key: str | None = dc_field(default=None, metadata=dc_config(field_name="server_key")) + apn_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_template") + ) + credentials_json: str | None = dc_field( + default=None, metadata=dc_config(field_name="credentials_json") + ) + data_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="data_template") + ) + notification_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="notification_template") + ) + server_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="server_key") + ) + @dataclass class FlagCountRuleParameters(DataClassJsonMixin): - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + @dataclass class FlagDetails(DataClassJsonMixin): original_text: str = dc_field(metadata=dc_config(field_name="original_text")) - automod: 'AutomodDetailsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="automod")) + automod: "AutomodDetailsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="automod") + ) + @dataclass class FlagDetailsResponse(DataClassJsonMixin): original_text: str = dc_field(metadata=dc_config(field_name="original_text")) - automod: 'AutomodDetailsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="automod")) - extra: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="extra")) + automod: "AutomodDetailsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="automod") + ) + extra: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="extra") + ) + @dataclass class FlagFeedbackResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) - labels: 'list[LabelResponse]' = dc_field(metadata=dc_config(field_name="labels")) + labels: "list[LabelResponse]" = dc_field(metadata=dc_config(field_name="labels")) + @dataclass class FlagItemResponse(DataClassJsonMixin): @@ -6634,12 +13483,22 @@ class FlagItemResponse(DataClassJsonMixin): # Unique identifier of the created moderation item item_id: str = dc_field(metadata=dc_config(field_name="item_id")) + @dataclass class FlagMessageDetailsResponse(DataClassJsonMixin): - pin_changed: bool | None = dc_field(default=None, metadata=dc_config(field_name="pin_changed")) - should_enrich: bool | None = dc_field(default=None, metadata=dc_config(field_name="should_enrich")) - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) - updated_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="updated_by_id")) + pin_changed: bool | None = dc_field( + default=None, metadata=dc_config(field_name="pin_changed") + ) + should_enrich: bool | None = dc_field( + default=None, metadata=dc_config(field_name="should_enrich") + ) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) + updated_by_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="updated_by_id") + ) + @dataclass class FlagRequest(DataClassJsonMixin): @@ -6648,127 +13507,301 @@ class FlagRequest(DataClassJsonMixin): # Type of entity being flagged (e.g., message, user) entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) # ID of the user who created the flagged entity - entity_creator_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_creator_id")) + entity_creator_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_creator_id") + ) # Optional explanation for why the content is being flagged reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Additional metadata about the flag - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - moderation_payload: 'ModerationPayload | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_payload")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + moderation_payload: "ModerationPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation_payload") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class FlagResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - created_by_automod: bool = dc_field(metadata=dc_config(field_name="created_by_automod")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - approved_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="approved_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + created_by_automod: bool = dc_field( + metadata=dc_config(field_name="created_by_automod") + ) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + approved_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="approved_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - rejected_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="rejected_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - reviewed_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="reviewed_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - reviewed_by: str | None = dc_field(default=None, metadata=dc_config(field_name="reviewed_by")) - target_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="target_message_id")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - details: 'FlagDetails | None' = dc_field(default=None, metadata=dc_config(field_name="details")) + rejected_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="rejected_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + reviewed_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="reviewed_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + reviewed_by: str | None = dc_field( + default=None, metadata=dc_config(field_name="reviewed_by") + ) + target_message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="target_message_id") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + details: "FlagDetails | None" = dc_field( + default=None, metadata=dc_config(field_name="details") + ) # Represents any chat message - target_message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="target_message")) + target_message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="target_message") + ) # User response object - target_user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="target_user")) + target_user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="target_user") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class FlagUpdatedEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) type: str = dc_field(default="flag.updated", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # User response object - created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="CreatedBy")) + created_by: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="CreatedBy") + ) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="Message")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="Message") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="User")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="User") + ) + @dataclass class FlagUserOptions(DataClassJsonMixin): reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) + @dataclass class FloodConfig(DataClassJsonMixin): - allowlist: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowlist")) - identical: 'FloodIdenticalConfig | None' = dc_field(default=None, metadata=dc_config(field_name="identical")) - similar: 'FloodSimilarConfig | None' = dc_field(default=None, metadata=dc_config(field_name="similar")) + allowlist: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowlist") + ) + identical: "FloodIdenticalConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="identical") + ) + similar: "FloodSimilarConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="similar") + ) + @dataclass class FloodIdenticalConfig(DataClassJsonMixin): action: str | None = dc_field(default=None, metadata=dc_config(field_name="action")) - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + time_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="time_window") + ) + @dataclass class FloodIdenticalRuleParameters(DataClassJsonMixin): - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) - allowlist: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowlist")) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + time_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="time_window") + ) + allowlist: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowlist") + ) + @dataclass class FloodSimilarConfig(DataClassJsonMixin): action: str | None = dc_field(default=None, metadata=dc_config(field_name="action")) - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - similarity_distance: int | None = dc_field(default=None, metadata=dc_config(field_name="similarity_distance")) - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + similarity_distance: int | None = dc_field( + default=None, metadata=dc_config(field_name="similarity_distance") + ) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + time_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="time_window") + ) + @dataclass class FloodSimilarRuleParameters(DataClassJsonMixin): - similarity_distance: int | None = dc_field(default=None, metadata=dc_config(field_name="similarity_distance")) - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) - allowlist: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowlist")) + similarity_distance: int | None = dc_field( + default=None, metadata=dc_config(field_name="similarity_distance") + ) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + time_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="time_window") + ) + allowlist: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowlist") + ) + @dataclass class FollowBatchRequest(DataClassJsonMixin): # List of follow relationships to create - follows: 'list[FollowRequest]' = dc_field(metadata=dc_config(field_name="follows")) + follows: "list[FollowRequest]" = dc_field(metadata=dc_config(field_name="follows")) # If true, auto-creates users referenced by source/target FIDs in the batch when they don't already exist. Server-side only. Defaults to false. This top-level field is the only supported batch/upsert create_users control. - create_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_users")) + create_users: bool | None = dc_field( + default=None, metadata=dc_config(field_name="create_users") + ) # If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) + enrich_own_fields: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_fields") + ) + @dataclass class FollowBatchResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of newly created follow relationships - created: 'list[FollowResponse]' = dc_field(metadata=dc_config(field_name="created")) + created: "list[FollowResponse]" = dc_field(metadata=dc_config(field_name="created")) # List of current follow relationships - follows: 'list[FollowResponse]' = dc_field(metadata=dc_config(field_name="follows")) + follows: "list[FollowResponse]" = dc_field(metadata=dc_config(field_name="follows")) + @dataclass class FollowCreatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) + follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) # The type of event: "feeds.follow.created" in this case - type: str = dc_field(default="feeds.follow.created", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="feeds.follow.created", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class FollowDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) + follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) # The type of event: "feeds.follow.deleted" in this case - type: str = dc_field(default="feeds.follow.deleted", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="feeds.follow.deleted", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class FollowRequest(DataClassJsonMixin): @@ -6777,29 +13810,53 @@ class FollowRequest(DataClassJsonMixin): # Fully qualified ID of the target feed target: str = dc_field(metadata=dc_config(field_name="target")) # Maximum number of historical activities to copy from the target feed when the follow is first materialized. Not set = unlimited (default). 0 = copy nothing. Range: 0-1000. - activity_copy_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="activity_copy_limit")) + activity_copy_limit: int | None = dc_field( + default=None, metadata=dc_config(field_name="activity_copy_limit") + ) # Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) + copy_custom_to_notification: bool | None = dc_field( + default=None, metadata=dc_config(field_name="copy_custom_to_notification") + ) # Whether to create a notification activity for this follow - create_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_notification_activity")) + create_notification_activity: bool | None = dc_field( + default=None, metadata=dc_config(field_name="create_notification_activity") + ) # If true, auto-creates users referenced by the source and target FIDs when they don't already exist. Server-side only. Defaults to false. Use directly on single follow endpoints (Follow, GetOrCreateFollow). On batch endpoints (FollowBatch, GetOrCreateFollows), use the top-level create_users field; per-item follows[i].create_users is rejected. - create_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_users")) + create_users: bool | None = dc_field( + default=None, metadata=dc_config(field_name="create_users") + ) # If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) + enrich_own_fields: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_fields") + ) # Push preference for the follow relationship - push_preference: str | None = dc_field(default=None, metadata=dc_config(field_name="push_preference")) + push_preference: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_preference") + ) # Whether to skip push for this follow - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) # Status of the follow relationship. One of: accepted, pending, rejected status: str | None = dc_field(default=None, metadata=dc_config(field_name="status")) # Custom data for the follow relationship - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class FollowResponse(DataClassJsonMixin): # When the follow relationship was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Role of the follower (source user) in the follow relationship, as stored. A reserved name, or a role your app no longer defines, is reported as stored but evaluated as 'feed_follower'. follower_role: str = dc_field(metadata=dc_config(field_name="follower_role")) # Push preference for notifications. One of: all, none @@ -6807,199 +13864,435 @@ class FollowResponse(DataClassJsonMixin): # Status of the follow relationship. One of: accepted, pending, rejected status: str = dc_field(metadata=dc_config(field_name="status")) # When the follow relationship was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - source_feed: 'FeedResponse' = dc_field(metadata=dc_config(field_name="source_feed")) - target_feed: 'FeedResponse' = dc_field(metadata=dc_config(field_name="target_feed")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + source_feed: "FeedResponse" = dc_field(metadata=dc_config(field_name="source_feed")) + target_feed: "FeedResponse" = dc_field(metadata=dc_config(field_name="target_feed")) # When the follow request was accepted - request_accepted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="request_accepted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + request_accepted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="request_accepted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # When the follow request was rejected - request_rejected_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="request_rejected_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + request_rejected_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="request_rejected_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Custom data for the follow relationship - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class FollowUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) + follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) # The type of event: "feeds.follow.updated" in this case - type: str = dc_field(default="feeds.follow.updated", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="feeds.follow.updated", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class FrameRecordSettings(DataClassJsonMixin): - capture_interval_in_seconds: int = dc_field(metadata=dc_config(field_name="capture_interval_in_seconds")) + capture_interval_in_seconds: int = dc_field( + metadata=dc_config(field_name="capture_interval_in_seconds") + ) mode: str = dc_field(metadata=dc_config(field_name="mode")) - quality: str | None = dc_field(default=None, metadata=dc_config(field_name="quality")) + quality: str | None = dc_field( + default=None, metadata=dc_config(field_name="quality") + ) + @dataclass class FrameRecordingResponse(DataClassJsonMixin): status: str = dc_field(metadata=dc_config(field_name="status")) + @dataclass class FrameRecordingSettingsRequest(DataClassJsonMixin): - capture_interval_in_seconds: int = dc_field(metadata=dc_config(field_name="capture_interval_in_seconds")) + capture_interval_in_seconds: int = dc_field( + metadata=dc_config(field_name="capture_interval_in_seconds") + ) mode: str = dc_field(metadata=dc_config(field_name="mode")) - quality: str | None = dc_field(default=None, metadata=dc_config(field_name="quality")) + quality: str | None = dc_field( + default=None, metadata=dc_config(field_name="quality") + ) + @dataclass class FrameRecordingSettingsResponse(DataClassJsonMixin): - capture_interval_in_seconds: int = dc_field(metadata=dc_config(field_name="capture_interval_in_seconds")) + capture_interval_in_seconds: int = dc_field( + metadata=dc_config(field_name="capture_interval_in_seconds") + ) mode: str = dc_field(metadata=dc_config(field_name="mode")) - quality: str | None = dc_field(default=None, metadata=dc_config(field_name="quality")) + quality: str | None = dc_field( + default=None, metadata=dc_config(field_name="quality") + ) + @dataclass class FriendReactionsOptions(DataClassJsonMixin): # Default: false. When true, fetches friend reactions for activities. - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) # Default: 3, Max: 10. The maximum number of friend reactions to return per activity. limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) # Default: 'following'. The type of friend relationship to use. 'following' = users you follow, 'mutual' = users with mutual follows. One of: following, mutual type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) + @dataclass class FullUserResponse(DataClassJsonMixin): banned: bool = dc_field(metadata=dc_config(field_name="banned")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) id: str = dc_field(metadata=dc_config(field_name="id")) invisible: bool = dc_field(metadata=dc_config(field_name="invisible")) language: str = dc_field(metadata=dc_config(field_name="language")) online: bool = dc_field(metadata=dc_config(field_name="online")) role: str = dc_field(metadata=dc_config(field_name="role")) shadow_banned: bool = dc_field(metadata=dc_config(field_name="shadow_banned")) - total_unread_count: int = dc_field(metadata=dc_config(field_name="total_unread_count")) + total_unread_count: int = dc_field( + metadata=dc_config(field_name="total_unread_count") + ) unread_channels: int = dc_field(metadata=dc_config(field_name="unread_channels")) unread_count: int = dc_field(metadata=dc_config(field_name="unread_count")) unread_threads: int = dc_field(metadata=dc_config(field_name="unread_threads")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - blocked_user_ids: list[str] = dc_field(metadata=dc_config(field_name="blocked_user_ids")) - channel_mutes: 'list[ChannelMute]' = dc_field(metadata=dc_config(field_name="channel_mutes")) - devices: 'list[DeviceResponse]' = dc_field(metadata=dc_config(field_name="devices")) - mutes: 'list[UserMuteResponse]' = dc_field(metadata=dc_config(field_name="mutes")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + blocked_user_ids: list[str] = dc_field( + metadata=dc_config(field_name="blocked_user_ids") + ) + channel_mutes: "list[ChannelMute]" = dc_field( + metadata=dc_config(field_name="channel_mutes") + ) + devices: "list[DeviceResponse]" = dc_field(metadata=dc_config(field_name="devices")) + mutes: "list[UserMuteResponse]" = dc_field(metadata=dc_config(field_name="mutes")) teams: list[str] = dc_field(metadata=dc_config(field_name="teams")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - avg_response_time: int | None = dc_field(default=None, metadata=dc_config(field_name="avg_response_time")) - ban_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ban_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - bypass_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="bypass_moderation")) - deactivated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deactivated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + avg_response_time: int | None = dc_field( + default=None, metadata=dc_config(field_name="avg_response_time") + ) + ban_expires: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="ban_expires", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + bypass_moderation: bool | None = dc_field( + default=None, metadata=dc_config(field_name="bypass_moderation") + ) + deactivated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deactivated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) image: str | None = dc_field(default=None, metadata=dc_config(field_name="image")) - last_active: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_active", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_active: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_active", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - revoke_tokens_issued_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="revoke_tokens_issued_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - latest_hidden_channels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="latest_hidden_channels")) - privacy_settings: 'PrivacySettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="privacy_settings")) - teams_role: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="teams_role")) + revoke_tokens_issued_before: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="revoke_tokens_issued_before", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + latest_hidden_channels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="latest_hidden_channels") + ) + privacy_settings: "PrivacySettingsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="privacy_settings") + ) + teams_role: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="teams_role") + ) + @dataclass class FutureChannelBanResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + expires: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="expires", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - shadow: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow")) + shadow: bool | None = dc_field( + default=None, metadata=dc_config(field_name="shadow") + ) # User response object - banned_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="banned_by")) + banned_by: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="banned_by") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class GeofenceResponse(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - country_codes: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="country_codes")) + country_codes: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="country_codes") + ) + @dataclass class GeofenceSettings(DataClassJsonMixin): names: list[str] = dc_field(metadata=dc_config(field_name="names")) + @dataclass class GeofenceSettingsRequest(DataClassJsonMixin): - names: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="names")) + names: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="names") + ) + @dataclass class GeofenceSettingsResponse(DataClassJsonMixin): names: list[str] = dc_field(metadata=dc_config(field_name="names")) + @dataclass class GetActionConfigResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Moderation action configs grouped by entity type, sorted by order ascending - action_config: 'dict[str, list[ModerationActionConfigResponse]]' = dc_field(metadata=dc_config(field_name="action_config")) + action_config: "dict[str, list[ModerationActionConfigResponse]]" = dc_field( + metadata=dc_config(field_name="action_config") + ) + @dataclass class GetActiveCallsStatusResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # End time of the status period - end_time: datetime = dc_field(metadata=dc_config(field_name="end_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + end_time: datetime = dc_field( + metadata=dc_config( + field_name="end_time", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Start time of the status period - start_time: datetime = dc_field(metadata=dc_config(field_name="start_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - metrics: 'ActiveCallsMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="metrics")) - summary: 'ActiveCallsSummary | None' = dc_field(default=None, metadata=dc_config(field_name="summary")) + start_time: datetime = dc_field( + metadata=dc_config( + field_name="start_time", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + metrics: "ActiveCallsMetrics | None" = dc_field( + default=None, metadata=dc_config(field_name="metrics") + ) + summary: "ActiveCallsSummary | None" = dc_field( + default=None, metadata=dc_config(field_name="summary") + ) + @dataclass class GetActivityResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + @dataclass class GetAppealResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - item: 'AppealItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="item")) + item: "AppealItemResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="item") + ) + @dataclass class GetApplicationResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - app: 'AppResponseFields' = dc_field(metadata=dc_config(field_name="app")) + app: "AppResponseFields" = dc_field(metadata=dc_config(field_name="app")) + @dataclass class GetBlockListResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Block list contains restricted words - blocklist: 'BlockListResponse | None' = dc_field(default=None, metadata=dc_config(field_name="blocklist")) + blocklist: "BlockListResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="blocklist") + ) + @dataclass class GetBlockedUsersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Array of blocked user object - blocks: 'list[BlockedUserResponse]' = dc_field(metadata=dc_config(field_name="blocks")) + blocks: "list[BlockedUserResponse]" = dc_field( + metadata=dc_config(field_name="blocks") + ) + @dataclass class GetCallParticipantSessionMetricsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - is_publisher: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_publisher")) - is_subscriber: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_subscriber")) - joined_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="joined_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - publisher_type: str | None = dc_field(default=None, metadata=dc_config(field_name="publisher_type")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - user_session_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_session_id")) - published_tracks: 'list[PublishedTrackMetrics] | None' = dc_field(default=None, metadata=dc_config(field_name="published_tracks")) - client: 'SessionClient | None' = dc_field(default=None, metadata=dc_config(field_name="client")) + is_publisher: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_publisher") + ) + is_subscriber: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_subscriber") + ) + joined_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="joined_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + publisher_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="publisher_type") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + user_session_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_session_id") + ) + published_tracks: "list[PublishedTrackMetrics] | None" = dc_field( + default=None, metadata=dc_config(field_name="published_tracks") + ) + client: "SessionClient | None" = dc_field( + default=None, metadata=dc_config(field_name="client") + ) + @dataclass class GetCallReportResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) session_id: str = dc_field(metadata=dc_config(field_name="session_id")) - report: 'ReportResponse' = dc_field(metadata=dc_config(field_name="report")) - video_reactions: 'list[VideoReactionsResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="video_reactions")) - chat_activity: 'ChatActivityStatsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="chat_activity")) - digest: 'BroadcastDigest | None' = dc_field(default=None, metadata=dc_config(field_name="digest")) - session: 'CallSessionResponse | None' = dc_field(default=None, metadata=dc_config(field_name="session")) + report: "ReportResponse" = dc_field(metadata=dc_config(field_name="report")) + video_reactions: "list[VideoReactionsResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="video_reactions") + ) + chat_activity: "ChatActivityStatsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="chat_activity") + ) + digest: "BroadcastDigest | None" = dc_field( + default=None, metadata=dc_config(field_name="digest") + ) + session: "CallSessionResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="session") + ) + @dataclass class GetCallResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) - own_capabilities: 'list[OwnCapability]' = dc_field(metadata=dc_config(field_name="own_capabilities")) + members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) + own_capabilities: "list[OwnCapability]" = dc_field( + metadata=dc_config(field_name="own_capabilities") + ) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + @dataclass class GetCallSessionParticipantStatsDetailsResponse(DataClassJsonMixin): @@ -7010,28 +14303,63 @@ class GetCallSessionParticipantStatsDetailsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) user_session_id: str = dc_field(metadata=dc_config(field_name="user_session_id")) - publisher: 'ParticipantSeriesPublisherStats | None' = dc_field(default=None, metadata=dc_config(field_name="publisher")) - subscriber: 'ParticipantSeriesSubscriberStats | None' = dc_field(default=None, metadata=dc_config(field_name="subscriber")) - timeframe: 'ParticipantSeriesTimeframe | None' = dc_field(default=None, metadata=dc_config(field_name="timeframe")) - user: 'ParticipantSeriesUserStats | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + publisher: "ParticipantSeriesPublisherStats | None" = dc_field( + default=None, metadata=dc_config(field_name="publisher") + ) + subscriber: "ParticipantSeriesSubscriberStats | None" = dc_field( + default=None, metadata=dc_config(field_name="subscriber") + ) + timeframe: "ParticipantSeriesTimeframe | None" = dc_field( + default=None, metadata=dc_config(field_name="timeframe") + ) + user: "ParticipantSeriesUserStats | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class GetCallTypeResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) duration: str = dc_field(metadata=dc_config(field_name="duration")) name: str = dc_field(metadata=dc_config(field_name="name")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) - notification_settings: 'NotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="notification_settings")) - settings: 'CallSettingsResponse' = dc_field(metadata=dc_config(field_name="settings")) - external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="external_storage")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) + notification_settings: "NotificationSettingsResponse" = dc_field( + metadata=dc_config(field_name="notification_settings") + ) + settings: "CallSettingsResponse" = dc_field( + metadata=dc_config(field_name="settings") + ) + external_storage: str | None = dc_field( + default=None, metadata=dc_config(field_name="external_storage") + ) + @dataclass class GetCampaignResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - campaign: 'CampaignResponse | None' = dc_field(default=None, metadata=dc_config(field_name="campaign")) - users: 'PagerResponse | None' = dc_field(default=None, metadata=dc_config(field_name="users")) + campaign: "CampaignResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="campaign") + ) + users: "PagerResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="users") + ) + @dataclass class GetChannelTypeResponse(DataClassJsonMixin): @@ -7039,18 +14367,33 @@ class GetChannelTypeResponse(DataClassJsonMixin): automod_behavior: str = dc_field(metadata=dc_config(field_name="automod_behavior")) connect_events: bool = dc_field(metadata=dc_config(field_name="connect_events")) count_messages: bool = dc_field(metadata=dc_config(field_name="count_messages")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom_events: bool = dc_field(metadata=dc_config(field_name="custom_events")) delivery_events: bool = dc_field(metadata=dc_config(field_name="delivery_events")) # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - mark_messages_pending: bool = dc_field(metadata=dc_config(field_name="mark_messages_pending")) - max_message_length: int = dc_field(metadata=dc_config(field_name="max_message_length")) - message_retention: str = dc_field(metadata=dc_config(field_name="message_retention")) + mark_messages_pending: bool = dc_field( + metadata=dc_config(field_name="mark_messages_pending") + ) + max_message_length: int = dc_field( + metadata=dc_config(field_name="max_message_length") + ) + message_retention: str = dc_field( + metadata=dc_config(field_name="message_retention") + ) mutes: bool = dc_field(metadata=dc_config(field_name="mutes")) name: str = dc_field(metadata=dc_config(field_name="name")) polls: bool = dc_field(metadata=dc_config(field_name="polls")) - push_notifications: bool = dc_field(metadata=dc_config(field_name="push_notifications")) + push_notifications: bool = dc_field( + metadata=dc_config(field_name="push_notifications") + ) quotes: bool = dc_field(metadata=dc_config(field_name="quotes")) reactions: bool = dc_field(metadata=dc_config(field_name="reactions")) read_events: bool = dc_field(metadata=dc_config(field_name="read_events")) @@ -7058,25 +14401,57 @@ class GetChannelTypeResponse(DataClassJsonMixin): replies: bool = dc_field(metadata=dc_config(field_name="replies")) search: bool = dc_field(metadata=dc_config(field_name="search")) shared_locations: bool = dc_field(metadata=dc_config(field_name="shared_locations")) - skip_last_msg_update_for_system_msgs: bool = dc_field(metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs")) + skip_last_msg_update_for_system_msgs: bool = dc_field( + metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs") + ) typing_events: bool = dc_field(metadata=dc_config(field_name="typing_events")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) uploads: bool = dc_field(metadata=dc_config(field_name="uploads")) url_enrichment: bool = dc_field(metadata=dc_config(field_name="url_enrichment")) - user_message_reminders: bool = dc_field(metadata=dc_config(field_name="user_message_reminders")) - commands: 'list[Command]' = dc_field(metadata=dc_config(field_name="commands")) - permissions: 'list[PolicyRequest]' = dc_field(metadata=dc_config(field_name="permissions")) - grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) - blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) - blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) - partition_size: int | None = dc_field(default=None, metadata=dc_config(field_name="partition_size")) - partition_ttl: str | None = dc_field(default=None, metadata=dc_config(field_name="partition_ttl")) - push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) - allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) - blocklists: 'list[BlockListOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="blocklists")) + user_message_reminders: bool = dc_field( + metadata=dc_config(field_name="user_message_reminders") + ) + commands: "list[Command]" = dc_field(metadata=dc_config(field_name="commands")) + permissions: "list[PolicyRequest]" = dc_field( + metadata=dc_config(field_name="permissions") + ) + grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) + blocklist: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist") + ) + blocklist_behavior: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist_behavior") + ) + partition_size: int | None = dc_field( + default=None, metadata=dc_config(field_name="partition_size") + ) + partition_ttl: str | None = dc_field( + default=None, metadata=dc_config(field_name="partition_ttl") + ) + push_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_level") + ) + allowed_flag_reasons: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowed_flag_reasons") + ) + blocklists: "list[BlockListOptions] | None" = dc_field( + default=None, metadata=dc_config(field_name="blocklists") + ) # Sets thresholds for AI moderation - automod_thresholds: 'Thresholds | None' = dc_field(default=None, metadata=dc_config(field_name="automod_thresholds")) - chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) + automod_thresholds: "Thresholds | None" = dc_field( + default=None, metadata=dc_config(field_name="automod_thresholds") + ) + chat_preferences: "ChatPreferences | None" = dc_field( + default=None, metadata=dc_config(field_name="chat_preferences") + ) + @dataclass class GetCommandResponse(DataClassJsonMixin): @@ -7085,8 +14460,25 @@ class GetCommandResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) name: str = dc_field(metadata=dc_config(field_name="name")) set: str = dc_field(metadata=dc_config(field_name="set")) - created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + updated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class GetCommentRepliesResponse(DataClassJsonMixin): @@ -7094,14 +14486,18 @@ class GetCommentRepliesResponse(DataClassJsonMixin): # Sort order used for the replies (first, last, top, best, controversial) sort: str = dc_field(metadata=dc_config(field_name="sort")) # Threaded listing of replies to the comment - comments: 'list[ThreadedCommentResponse]' = dc_field(metadata=dc_config(field_name="comments")) + comments: "list[ThreadedCommentResponse]" = dc_field( + metadata=dc_config(field_name="comments") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class GetCommentResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) + comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) + @dataclass class GetCommentsResponse(DataClassJsonMixin): @@ -7109,20 +14505,27 @@ class GetCommentsResponse(DataClassJsonMixin): # Sort order used for the comments (first, last, top, best, controversial) sort: str = dc_field(metadata=dc_config(field_name="sort")) # Threaded listing for the activity - comments: 'list[ThreadedCommentResponse]' = dc_field(metadata=dc_config(field_name="comments")) + comments: "list[ThreadedCommentResponse]" = dc_field( + metadata=dc_config(field_name="comments") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class GetConfigResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - config: 'ConfigResponse | None' = dc_field(default=None, metadata=dc_config(field_name="config")) + config: "ConfigResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="config") + ) + @dataclass class GetCustomPermissionResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - permission: 'Permission' = dc_field(metadata=dc_config(field_name="permission")) + permission: "Permission" = dc_field(metadata=dc_config(field_name="permission")) + @dataclass class GetDailyDigestResponse(DataClassJsonMixin): @@ -7130,49 +14533,93 @@ class GetDailyDigestResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) status: str = dc_field(metadata=dc_config(field_name="status")) - generated_at: str | None = dc_field(default=None, metadata=dc_config(field_name="generated_at")) - retry_after: int | None = dc_field(default=None, metadata=dc_config(field_name="retry_after")) - revision: int | None = dc_field(default=None, metadata=dc_config(field_name="revision")) - schema_version: str | None = dc_field(default=None, metadata=dc_config(field_name="schema_version")) - broadcasts: 'list[BroadcastDigest] | None' = dc_field(default=None, metadata=dc_config(field_name="broadcasts")) - call_sessions: 'list[DailyDigestCallSessionSummary] | None' = dc_field(default=None, metadata=dc_config(field_name="call_sessions")) - digest_kinds: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="digest_kinds")) - broadcast_rollup: 'BroadcastDailyRollup | None' = dc_field(default=None, metadata=dc_config(field_name="broadcast_rollup")) + generated_at: str | None = dc_field( + default=None, metadata=dc_config(field_name="generated_at") + ) + retry_after: int | None = dc_field( + default=None, metadata=dc_config(field_name="retry_after") + ) + revision: int | None = dc_field( + default=None, metadata=dc_config(field_name="revision") + ) + schema_version: str | None = dc_field( + default=None, metadata=dc_config(field_name="schema_version") + ) + broadcasts: "list[BroadcastDigest] | None" = dc_field( + default=None, metadata=dc_config(field_name="broadcasts") + ) + call_sessions: "list[DailyDigestCallSessionSummary] | None" = dc_field( + default=None, metadata=dc_config(field_name="call_sessions") + ) + digest_kinds: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="digest_kinds") + ) + broadcast_rollup: "BroadcastDailyRollup | None" = dc_field( + default=None, metadata=dc_config(field_name="broadcast_rollup") + ) + @dataclass class GetDraftResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - draft: 'DraftResponse' = dc_field(metadata=dc_config(field_name="draft")) + draft: "DraftResponse" = dc_field(metadata=dc_config(field_name="draft")) + @dataclass class GetEdgesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - edges: 'list[EdgeResponse]' = dc_field(metadata=dc_config(field_name="edges")) + edges: "list[EdgeResponse]" = dc_field(metadata=dc_config(field_name="edges")) + @dataclass class GetExternalStorageAWSS3Response(DataClassJsonMixin): bucket: str = dc_field(metadata=dc_config(field_name="bucket")) region: str = dc_field(metadata=dc_config(field_name="region")) role_arn: str = dc_field(metadata=dc_config(field_name="role_arn")) - path_prefix: str | None = dc_field(default=None, metadata=dc_config(field_name="path_prefix")) + path_prefix: str | None = dc_field( + default=None, metadata=dc_config(field_name="path_prefix") + ) + @dataclass class GetExternalStorageGCSResponse(DataClassJsonMixin): bucket: str = dc_field(metadata=dc_config(field_name="bucket")) credentials_set: bool = dc_field(metadata=dc_config(field_name="credentials_set")) - path_prefix: str | None = dc_field(default=None, metadata=dc_config(field_name="path_prefix")) + path_prefix: str | None = dc_field( + default=None, metadata=dc_config(field_name="path_prefix") + ) + @dataclass class GetExternalStorageResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - aws_s3: 'GetExternalStorageAWSS3Response | None' = dc_field(default=None, metadata=dc_config(field_name="aws_s3")) - gcs: 'GetExternalStorageGCSResponse | None' = dc_field(default=None, metadata=dc_config(field_name="gcs")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + aws_s3: "GetExternalStorageAWSS3Response | None" = dc_field( + default=None, metadata=dc_config(field_name="aws_s3") + ) + gcs: "GetExternalStorageGCSResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="gcs") + ) + @dataclass class GetFeedCountsResponse(DataClassJsonMixin): @@ -7184,41 +14631,65 @@ class GetFeedCountsResponse(DataClassJsonMixin): # Sum of activity_count and comment_count total_count: int = dc_field(metadata=dc_config(field_name="total_count")) + @dataclass class GetFeedGroupResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_group: 'FeedGroupResponse' = dc_field(metadata=dc_config(field_name="feed_group")) + feed_group: "FeedGroupResponse" = dc_field( + metadata=dc_config(field_name="feed_group") + ) + @dataclass class GetFeedViewResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_view: 'FeedViewResponse' = dc_field(metadata=dc_config(field_name="feed_view")) + feed_view: "FeedViewResponse" = dc_field(metadata=dc_config(field_name="feed_view")) + @dataclass class GetFeedVisibilityResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_visibility: 'FeedVisibilityResponse' = dc_field(metadata=dc_config(field_name="feed_visibility")) + feed_visibility: "FeedVisibilityResponse" = dc_field( + metadata=dc_config(field_name="feed_visibility") + ) + @dataclass class GetFeedsRateLimitsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Rate limits for Android platform (endpoint name -> limit info) - android: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="android")) + android: "dict[str, LimitInfoResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="android") + ) # Rate limits for iOS platform (endpoint name -> limit info) - ios: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="ios")) + ios: "dict[str, LimitInfoResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="ios") + ) # Rate limits for server-side platform (endpoint name -> limit info) - server_side: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="server_side")) + server_side: "dict[str, LimitInfoResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="server_side") + ) # Rate limits for Unity platform (endpoint name -> limit info) - unity: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="unity")) + unity: "dict[str, LimitInfoResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="unity") + ) # Rate limits for Web platform (endpoint name -> limit info) - web: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="web")) + web: "dict[str, LimitInfoResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="web") + ) + @dataclass class GetFlagCountRequest(DataClassJsonMixin): # ID of the user whose content was flagged - entity_creator_id: str = dc_field(metadata=dc_config(field_name="entity_creator_id")) + entity_creator_id: str = dc_field( + metadata=dc_config(field_name="entity_creator_id") + ) # Optional entity type filter (e.g., stream:chat:v1:message, stream:user) - entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) + entity_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_type") + ) + @dataclass class GetFlagCountResponse(DataClassJsonMixin): @@ -7226,200 +14697,369 @@ class GetFlagCountResponse(DataClassJsonMixin): count: int = dc_field(metadata=dc_config(field_name="count")) duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class GetFollowSuggestionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of suggested feeds to follow - suggestions: 'list[FeedSuggestionResponse]' = dc_field(metadata=dc_config(field_name="suggestions")) - algorithm_used: str | None = dc_field(default=None, metadata=dc_config(field_name="algorithm_used")) + suggestions: "list[FeedSuggestionResponse]" = dc_field( + metadata=dc_config(field_name="suggestions") + ) + algorithm_used: str | None = dc_field( + default=None, metadata=dc_config(field_name="algorithm_used") + ) + @dataclass class GetImportResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - import_task: 'ImportTask | None' = dc_field(default=None, metadata=dc_config(field_name="import_task")) + import_task: "ImportTask | None" = dc_field( + default=None, metadata=dc_config(field_name="import_task") + ) + @dataclass class GetImportV2TaskResponse(DataClassJsonMixin): app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) id: str = dc_field(metadata=dc_config(field_name="id")) product: str = dc_field(metadata=dc_config(field_name="product")) state: int = dc_field(metadata=dc_config(field_name="state")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - settings: 'ImportV2TaskSettings' = dc_field(metadata=dc_config(field_name="settings")) - result: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="result")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + settings: "ImportV2TaskSettings" = dc_field( + metadata=dc_config(field_name="settings") + ) + result: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="result") + ) + @dataclass class GetManyMessagesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of messages - messages: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="messages")) + messages: "list[MessageResponse]" = dc_field( + metadata=dc_config(field_name="messages") + ) + @dataclass class GetMessageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: 'MessageWithChannelResponse' = dc_field(metadata=dc_config(field_name="message")) - pending_message_metadata: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="pending_message_metadata")) + message: "MessageWithChannelResponse" = dc_field( + metadata=dc_config(field_name="message") + ) + pending_message_metadata: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="pending_message_metadata") + ) + @dataclass class GetModerationRuleResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - rule: 'ModerationRuleV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="rule")) + rule: "ModerationRuleV2Response | None" = dc_field( + default=None, metadata=dc_config(field_name="rule") + ) + @dataclass class GetOGResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # URL of detected video or audio - asset_url: str | None = dc_field(default=None, metadata=dc_config(field_name="asset_url")) - author_icon: str | None = dc_field(default=None, metadata=dc_config(field_name="author_icon")) + asset_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="asset_url") + ) + author_icon: str | None = dc_field( + default=None, metadata=dc_config(field_name="author_icon") + ) # og:site - author_link: str | None = dc_field(default=None, metadata=dc_config(field_name="author_link")) + author_link: str | None = dc_field( + default=None, metadata=dc_config(field_name="author_link") + ) # og:site_name - author_name: str | None = dc_field(default=None, metadata=dc_config(field_name="author_name")) + author_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="author_name") + ) color: str | None = dc_field(default=None, metadata=dc_config(field_name="color")) - fallback: str | None = dc_field(default=None, metadata=dc_config(field_name="fallback")) + fallback: str | None = dc_field( + default=None, metadata=dc_config(field_name="fallback") + ) footer: str | None = dc_field(default=None, metadata=dc_config(field_name="footer")) - footer_icon: str | None = dc_field(default=None, metadata=dc_config(field_name="footer_icon")) + footer_icon: str | None = dc_field( + default=None, metadata=dc_config(field_name="footer_icon") + ) # URL of detected image - image_url: str | None = dc_field(default=None, metadata=dc_config(field_name="image_url")) + image_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="image_url") + ) # extracted url from the text - og_scrape_url: str | None = dc_field(default=None, metadata=dc_config(field_name="og_scrape_url")) - original_height: int | None = dc_field(default=None, metadata=dc_config(field_name="original_height")) - original_width: int | None = dc_field(default=None, metadata=dc_config(field_name="original_width")) - pretext: str | None = dc_field(default=None, metadata=dc_config(field_name="pretext")) + og_scrape_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="og_scrape_url") + ) + original_height: int | None = dc_field( + default=None, metadata=dc_config(field_name="original_height") + ) + original_width: int | None = dc_field( + default=None, metadata=dc_config(field_name="original_width") + ) + pretext: str | None = dc_field( + default=None, metadata=dc_config(field_name="pretext") + ) # og:description text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) # URL of detected thumb image - thumb_url: str | None = dc_field(default=None, metadata=dc_config(field_name="thumb_url")) + thumb_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="thumb_url") + ) # og:title title: str | None = dc_field(default=None, metadata=dc_config(field_name="title")) # og:url - title_link: str | None = dc_field(default=None, metadata=dc_config(field_name="title_link")) + title_link: str | None = dc_field( + default=None, metadata=dc_config(field_name="title_link") + ) # Attachment type, could be empty, image, audio or video type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - actions: 'list[Action] | None' = dc_field(default=None, metadata=dc_config(field_name="actions")) - fields: 'list[Field] | None' = dc_field(default=None, metadata=dc_config(field_name="fields")) - giphy: 'Images | None' = dc_field(default=None, metadata=dc_config(field_name="giphy")) + actions: "list[Action] | None" = dc_field( + default=None, metadata=dc_config(field_name="actions") + ) + fields: "list[Field] | None" = dc_field( + default=None, metadata=dc_config(field_name="fields") + ) + giphy: "Images | None" = dc_field( + default=None, metadata=dc_config(field_name="giphy") + ) + @dataclass class GetOrCreateCallRequest(DataClassJsonMixin): - members_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="members_limit")) + members_limit: int | None = dc_field( + default=None, metadata=dc_config(field_name="members_limit") + ) # if provided it sends a notification event to the members for this call - notify: bool | None = dc_field(default=None, metadata=dc_config(field_name="notify")) + notify: bool | None = dc_field( + default=None, metadata=dc_config(field_name="notify") + ) # if provided it sends a ring event to the members for this call ring: bool | None = dc_field(default=None, metadata=dc_config(field_name="ring")) video: bool | None = dc_field(default=None, metadata=dc_config(field_name="video")) # CallRequest is the payload for creating a call. - data: 'CallRequest | None' = dc_field(default=None, metadata=dc_config(field_name="data")) + data: "CallRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="data") + ) + @dataclass class GetOrCreateCallResponse(DataClassJsonMixin): created: bool = dc_field(metadata=dc_config(field_name="created")) duration: str = dc_field(metadata=dc_config(field_name="duration")) - members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) - own_capabilities: 'list[OwnCapability]' = dc_field(metadata=dc_config(field_name="own_capabilities")) + members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) + own_capabilities: "list[OwnCapability]" = dc_field( + metadata=dc_config(field_name="own_capabilities") + ) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + @dataclass class GetOrCreateFeedGroupRequest(DataClassJsonMixin): # Role new followers of feeds in this group are given. Either a built-in (feed_follower, feed_member_viewer) or any role your app has defined. Empty means feed_follower. Applied when the follow is accepted, so a follow that starts pending picks it up on approval - default_follower_role: str | None = dc_field(default=None, metadata=dc_config(field_name="default_follower_role")) - # Default visibility for the feed group, can be 'public', 'visible', 'followers', 'members', or 'private'. Defaults to 'visible' if not provided. - default_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="default_visibility")) + default_follower_role: str | None = dc_field( + default=None, metadata=dc_config(field_name="default_follower_role") + ) + # Default visibility for the feed group, can be 'public', 'visible', 'followers', 'members', or 'private'. Defaults to 'visible' if not provided. + default_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="default_visibility") + ) # Configuration for activity processors - activity_processors: 'list[ActivityProcessorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_processors")) + activity_processors: "list[ActivityProcessorConfig] | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_processors") + ) # Configuration for activity selectors - activity_selectors: 'list[ActivitySelectorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_selectors")) - activity_filter: 'ActivityFilterConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_filter")) - activity_processing: 'ActivityProcessingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_processing")) - aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) + activity_selectors: "list[ActivitySelectorConfig] | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_selectors") + ) + activity_filter: "ActivityFilterConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_filter") + ) + activity_processing: "ActivityProcessingConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_processing") + ) + aggregation: "AggregationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="aggregation") + ) # Custom data for the feed group - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - notification: 'NotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="notification")) - push_notification: 'PushNotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="push_notification")) - ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) - stories: 'StoriesConfig | None' = dc_field(default=None, metadata=dc_config(field_name="stories")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + notification: "NotificationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="notification") + ) + push_notification: "PushNotificationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="push_notification") + ) + ranking: "RankingConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="ranking") + ) + stories: "StoriesConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="stories") + ) + @dataclass class GetOrCreateFeedGroupResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Indicates whether the feed group was created (true) or already existed (false) was_created: bool = dc_field(metadata=dc_config(field_name="was_created")) - feed_group: 'FeedGroupResponse' = dc_field(metadata=dc_config(field_name="feed_group")) + feed_group: "FeedGroupResponse" = dc_field( + metadata=dc_config(field_name="feed_group") + ) + @dataclass class GetOrCreateFeedRequest(DataClassJsonMixin): - id_around: str | None = dc_field(default=None, metadata=dc_config(field_name="id_around")) + id_around: str | None = dc_field( + default=None, metadata=dc_config(field_name="id_around") + ) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) - overwrite_interest_weights: bool | None = dc_field(default=None, metadata=dc_config(field_name="overwrite_interest_weights")) + overwrite_interest_weights: bool | None = dc_field( + default=None, metadata=dc_config(field_name="overwrite_interest_weights") + ) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) view: str | None = dc_field(default=None, metadata=dc_config(field_name="view")) watch: bool | None = dc_field(default=None, metadata=dc_config(field_name="watch")) - data: 'FeedInput | None' = dc_field(default=None, metadata=dc_config(field_name="data")) + data: "FeedInput | None" = dc_field( + default=None, metadata=dc_config(field_name="data") + ) # Options to skip specific enrichments to improve performance. Default is false (enrichments are included). Setting a field to true skips that enrichment. - enrichment_options: 'EnrichmentOptions | None' = dc_field(default=None, metadata=dc_config(field_name="enrichment_options")) - external_ranking: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="external_ranking")) - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) - followers_pagination: 'PagerRequest | None' = dc_field(default=None, metadata=dc_config(field_name="followers_pagination")) - following_pagination: 'PagerRequest | None' = dc_field(default=None, metadata=dc_config(field_name="following_pagination")) + enrichment_options: "EnrichmentOptions | None" = dc_field( + default=None, metadata=dc_config(field_name="enrichment_options") + ) + external_ranking: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="external_ranking") + ) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + followers_pagination: "PagerRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="followers_pagination") + ) + following_pagination: "PagerRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="following_pagination") + ) # Options to control fetching reactions from friends (users you follow or have mutual follows with). - friend_reactions_options: 'FriendReactionsOptions | None' = dc_field(default=None, metadata=dc_config(field_name="friend_reactions_options")) - interest_weights: 'dict[str, float] | None' = dc_field(default=None, metadata=dc_config(field_name="interest_weights")) - member_pagination: 'PagerRequest | None' = dc_field(default=None, metadata=dc_config(field_name="member_pagination")) + friend_reactions_options: "FriendReactionsOptions | None" = dc_field( + default=None, metadata=dc_config(field_name="friend_reactions_options") + ) + interest_weights: "dict[str, float] | None" = dc_field( + default=None, metadata=dc_config(field_name="interest_weights") + ) + member_pagination: "PagerRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="member_pagination") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class GetOrCreateFeedResponse(DataClassJsonMixin): created: bool = dc_field(metadata=dc_config(field_name="created")) # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - activities: 'list[ActivityResponse]' = dc_field(metadata=dc_config(field_name="activities")) - aggregated_activities: 'list[AggregatedActivityResponse]' = dc_field(metadata=dc_config(field_name="aggregated_activities")) - followers: 'list[FollowResponse]' = dc_field(metadata=dc_config(field_name="followers")) - following: 'list[FollowResponse]' = dc_field(metadata=dc_config(field_name="following")) - members: 'list[FeedMemberResponse]' = dc_field(metadata=dc_config(field_name="members")) - pinned_activities: 'list[ActivityPinResponse]' = dc_field(metadata=dc_config(field_name="pinned_activities")) - feed: 'FeedResponse' = dc_field(metadata=dc_config(field_name="feed")) + activities: "list[ActivityResponse]" = dc_field( + metadata=dc_config(field_name="activities") + ) + aggregated_activities: "list[AggregatedActivityResponse]" = dc_field( + metadata=dc_config(field_name="aggregated_activities") + ) + followers: "list[FollowResponse]" = dc_field( + metadata=dc_config(field_name="followers") + ) + following: "list[FollowResponse]" = dc_field( + metadata=dc_config(field_name="following") + ) + members: "list[FeedMemberResponse]" = dc_field( + metadata=dc_config(field_name="members") + ) + pinned_activities: "list[ActivityPinResponse]" = dc_field( + metadata=dc_config(field_name="pinned_activities") + ) + feed: "FeedResponse" = dc_field(metadata=dc_config(field_name="feed")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - followers_pagination: 'PagerResponse | None' = dc_field(default=None, metadata=dc_config(field_name="followers_pagination")) - following_pagination: 'PagerResponse | None' = dc_field(default=None, metadata=dc_config(field_name="following_pagination")) - member_pagination: 'PagerResponse | None' = dc_field(default=None, metadata=dc_config(field_name="member_pagination")) - notification_status: 'NotificationStatusResponse | None' = dc_field(default=None, metadata=dc_config(field_name="notification_status")) + followers_pagination: "PagerResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="followers_pagination") + ) + following_pagination: "PagerResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="following_pagination") + ) + member_pagination: "PagerResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="member_pagination") + ) + notification_status: "NotificationStatusResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="notification_status") + ) + @dataclass class GetOrCreateFeedViewRequest(DataClassJsonMixin): # Configuration for selecting activities - activity_selectors: 'list[ActivitySelectorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_selectors")) - aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) - ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) + activity_selectors: "list[ActivitySelectorConfig] | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_selectors") + ) + aggregation: "AggregationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="aggregation") + ) + ranking: "RankingConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="ranking") + ) + @dataclass class GetOrCreateFeedViewResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Indicates whether the feed view was newly created (true) or already existed (false) was_created: bool = dc_field(metadata=dc_config(field_name="was_created")) - feed_view: 'FeedViewResponse' = dc_field(metadata=dc_config(field_name="feed_view")) + feed_view: "FeedViewResponse" = dc_field(metadata=dc_config(field_name="feed_view")) + @dataclass class GetOrCreateFollowResponse(DataClassJsonMixin): # True if the follow was newly created by this request; false if it already existed created: bool = dc_field(metadata=dc_config(field_name="created")) duration: str = dc_field(metadata=dc_config(field_name="duration")) - follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) + follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) # Whether a notification activity was successfully created (only set when the follow was newly created) - notification_created: bool | None = dc_field(default=None, metadata=dc_config(field_name="notification_created")) + notification_created: bool | None = dc_field( + default=None, metadata=dc_config(field_name="notification_created") + ) + @dataclass class GetOrCreateUnfollowRequest(DataClassJsonMixin): @@ -7428,69 +15068,108 @@ class GetOrCreateUnfollowRequest(DataClassJsonMixin): # Fully qualified ID of the target feed target: str = dc_field(metadata=dc_config(field_name="target")) # Whether to delete the corresponding notification activity (default: false) - delete_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="delete_notification_activity")) + delete_notification_activity: bool | None = dc_field( + default=None, metadata=dc_config(field_name="delete_notification_activity") + ) # If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) + enrich_own_fields: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_fields") + ) # When true, activities from the unfollowed feed will remain in the source feed's timeline (default: false) - keep_history: bool | None = dc_field(default=None, metadata=dc_config(field_name="keep_history")) + keep_history: bool | None = dc_field( + default=None, metadata=dc_config(field_name="keep_history") + ) + @dataclass class GetOrCreateUnfollowResponse(DataClassJsonMixin): # True if a follow was found and removed by this request; false if no follow existed deleted: bool = dc_field(metadata=dc_config(field_name="deleted")) duration: str = dc_field(metadata=dc_config(field_name="duration")) - follow: 'FollowResponse | None' = dc_field(default=None, metadata=dc_config(field_name="follow")) + follow: "FollowResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="follow") + ) + @dataclass class GetPinnedMessagesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Messages - messages: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="messages")) + messages: "list[MessageResponse]" = dc_field( + metadata=dc_config(field_name="messages") + ) + @dataclass class GetPredefinedFilterResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - predefined_filter: 'PredefinedFilterResponse | None' = dc_field(default=None, metadata=dc_config(field_name="predefined_filter")) + predefined_filter: "PredefinedFilterResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="predefined_filter") + ) + @dataclass class GetPushTemplatesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - templates: 'list[PushTemplateResponse]' = dc_field(metadata=dc_config(field_name="templates")) + templates: "list[PushTemplateResponse]" = dc_field( + metadata=dc_config(field_name="templates") + ) + @dataclass class GetRateLimitsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Map of endpoint rate limits for the Android platform - android: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="android")) + android: "dict[str, LimitInfoResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="android") + ) # Map of endpoint rate limits for the iOS platform - ios: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="ios")) + ios: "dict[str, LimitInfoResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="ios") + ) # Map of endpoint rate limits for the server-side platform - server_side: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="server_side")) + server_side: "dict[str, LimitInfoResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="server_side") + ) # Map of endpoint rate limits for the Unity platform - unity: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="unity")) + unity: "dict[str, LimitInfoResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="unity") + ) # Map of endpoint rate limits for the web platform - web: 'dict[str, LimitInfoResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="web")) + web: "dict[str, LimitInfoResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="web") + ) + @dataclass class GetReactionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of reactions - reactions: 'list[ReactionResponse]' = dc_field(metadata=dc_config(field_name="reactions")) + reactions: "list[ReactionResponse]" = dc_field( + metadata=dc_config(field_name="reactions") + ) + @dataclass class GetRepliesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - messages: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="messages")) + messages: "list[MessageResponse]" = dc_field( + metadata=dc_config(field_name="messages") + ) + @dataclass class GetRetentionPolicyResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - policies: 'list[RetentionPolicy]' = dc_field(metadata=dc_config(field_name="policies")) + policies: "list[RetentionPolicy]" = dc_field( + metadata=dc_config(field_name="policies") + ) + @dataclass class GetRetentionPolicyRunsRequest(DataClassJsonMixin): @@ -7498,96 +15177,165 @@ class GetRetentionPolicyRunsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) + filter_conditions: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_conditions") + ) + @dataclass class GetRetentionPolicyRunsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - runs: 'list[RetentionRunResponse]' = dc_field(metadata=dc_config(field_name="runs")) + runs: "list[RetentionRunResponse]" = dc_field(metadata=dc_config(field_name="runs")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class GetReviewQueueItemResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - item: 'ReviewQueueItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="item")) + item: "ReviewQueueItemResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="item") + ) + @dataclass class GetSegmentResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - segment: 'SegmentResponse | None' = dc_field(default=None, metadata=dc_config(field_name="segment")) + segment: "SegmentResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="segment") + ) + @dataclass class GetSetupSessionResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - setup_session: 'SetupSession | None' = dc_field(default=None, metadata=dc_config(field_name="setup_session")) + setup_session: "SetupSession | None" = dc_field( + default=None, metadata=dc_config(field_name="setup_session") + ) + @dataclass class GetTaskResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) duration: str = dc_field(metadata=dc_config(field_name="duration")) # Current status of task status: str = dc_field(metadata=dc_config(field_name="status")) # ID of task task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - error: 'ErrorResult | None' = dc_field(default=None, metadata=dc_config(field_name="error")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + error: "ErrorResult | None" = dc_field( + default=None, metadata=dc_config(field_name="error") + ) # Result produced by task after completion - result: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="result")) + result: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="result") + ) + @dataclass class GetThreadResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - thread: 'ThreadStateResponse' = dc_field(metadata=dc_config(field_name="thread")) + thread: "ThreadStateResponse" = dc_field(metadata=dc_config(field_name="thread")) + @dataclass class GetUserGroupResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - user_group: 'UserGroupResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) + user_group: "UserGroupResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user_group") + ) + @dataclass class GetUserInterestsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Top-N interest tags sorted by descending count, then alphabetically by tag - interests: 'list[InterestTagResponse]' = dc_field(metadata=dc_config(field_name="interests")) + interests: "list[InterestTagResponse]" = dc_field( + metadata=dc_config(field_name="interests") + ) + @dataclass class GoLiveRequest(DataClassJsonMixin): - recording_storage_name: str | None = dc_field(default=None, metadata=dc_config(field_name="recording_storage_name")) - start_closed_caption: bool | None = dc_field(default=None, metadata=dc_config(field_name="start_closed_caption")) - start_composite_recording: bool | None = dc_field(default=None, metadata=dc_config(field_name="start_composite_recording")) - start_hls: bool | None = dc_field(default=None, metadata=dc_config(field_name="start_hls")) - start_individual_recording: bool | None = dc_field(default=None, metadata=dc_config(field_name="start_individual_recording")) - start_raw_recording: bool | None = dc_field(default=None, metadata=dc_config(field_name="start_raw_recording")) - start_recording: bool | None = dc_field(default=None, metadata=dc_config(field_name="start_recording")) - start_transcription: bool | None = dc_field(default=None, metadata=dc_config(field_name="start_transcription")) - transcription_storage_name: str | None = dc_field(default=None, metadata=dc_config(field_name="transcription_storage_name")) + recording_storage_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="recording_storage_name") + ) + start_closed_caption: bool | None = dc_field( + default=None, metadata=dc_config(field_name="start_closed_caption") + ) + start_composite_recording: bool | None = dc_field( + default=None, metadata=dc_config(field_name="start_composite_recording") + ) + start_hls: bool | None = dc_field( + default=None, metadata=dc_config(field_name="start_hls") + ) + start_individual_recording: bool | None = dc_field( + default=None, metadata=dc_config(field_name="start_individual_recording") + ) + start_raw_recording: bool | None = dc_field( + default=None, metadata=dc_config(field_name="start_raw_recording") + ) + start_recording: bool | None = dc_field( + default=None, metadata=dc_config(field_name="start_recording") + ) + start_transcription: bool | None = dc_field( + default=None, metadata=dc_config(field_name="start_transcription") + ) + transcription_storage_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="transcription_storage_name") + ) + @dataclass class GoLiveResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + @dataclass class GoogleVisionConfig(DataClassJsonMixin): - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + @dataclass class GroupedChannelsBucket(DataClassJsonMixin): # Channels returned for this bucket - channels: 'list[ChannelStateResponseFields]' = dc_field(metadata=dc_config(field_name="channels")) + channels: "list[ChannelStateResponseFields]" = dc_field( + metadata=dc_config(field_name="channels") + ) # Cursor for the next page of this group next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for the previous page of this group prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Unread channels currently classified into this bucket - unread_channels: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_channels")) + unread_channels: int | None = dc_field( + default=None, metadata=dc_config(field_name="unread_channels") + ) + @dataclass class GroupedChannelsGroupRequest(DataClassJsonMixin): @@ -7595,102 +15343,175 @@ class GroupedChannelsGroupRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class GroupedQueryChannelsRequest(DataClassJsonMixin): # Default max channels per group (default 10) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Groups to return, keyed by group name. Each group can define limit, next, or prev. 'next' and 'prev' cursors are only allowed when the request contains exactly one group; multi-group pagination is rejected. - groups: 'dict[str, GroupedChannelsGroupRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="groups")) + groups: "dict[str, GroupedChannelsGroupRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="groups") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class GroupedQueryChannelsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Predefined channel groups keyed by group name - groups: 'dict[str, GroupedChannelsBucket]' = dc_field(metadata=dc_config(field_name="groups")) + groups: "dict[str, GroupedChannelsBucket]" = dc_field( + metadata=dc_config(field_name="groups") + ) + @dataclass class GroupedStatsResponse(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) unique: int = dc_field(metadata=dc_config(field_name="unique")) + @dataclass class HLSSettings(DataClassJsonMixin): auto_on: bool = dc_field(metadata=dc_config(field_name="auto_on")) enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - quality_tracks: list[str] = dc_field(metadata=dc_config(field_name="quality_tracks")) - layout: 'LayoutSettings | None' = dc_field(default=None, metadata=dc_config(field_name="layout")) + quality_tracks: list[str] = dc_field( + metadata=dc_config(field_name="quality_tracks") + ) + layout: "LayoutSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="layout") + ) + @dataclass class HLSSettingsRequest(DataClassJsonMixin): # Quality tracks for HLS. One of: 360p, 480p, 720p, 1080p, 1440p, portrait-360x640, portrait-480x854, portrait-720x1280, portrait-1080x1920, portrait-1440x2560 - quality_tracks: list[str] = dc_field(metadata=dc_config(field_name="quality_tracks")) + quality_tracks: list[str] = dc_field( + metadata=dc_config(field_name="quality_tracks") + ) # Whether HLS broadcasting should start automatically - auto_on: bool | None = dc_field(default=None, metadata=dc_config(field_name="auto_on")) + auto_on: bool | None = dc_field( + default=None, metadata=dc_config(field_name="auto_on") + ) # Whether HLS broadcasting is enabled - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - layout: 'LayoutSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="layout")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + layout: "LayoutSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="layout") + ) + @dataclass class HLSSettingsResponse(DataClassJsonMixin): auto_on: bool = dc_field(metadata=dc_config(field_name="auto_on")) enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - quality_tracks: list[str] = dc_field(metadata=dc_config(field_name="quality_tracks")) - layout: 'LayoutSettingsResponse' = dc_field(metadata=dc_config(field_name="layout")) + quality_tracks: list[str] = dc_field( + metadata=dc_config(field_name="quality_tracks") + ) + layout: "LayoutSettingsResponse" = dc_field(metadata=dc_config(field_name="layout")) + @dataclass class HarmConfig(DataClassJsonMixin): - cooldown_period: int | None = dc_field(default=None, metadata=dc_config(field_name="cooldown_period")) - severity: int | None = dc_field(default=None, metadata=dc_config(field_name="severity")) - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - action_sequences: 'list[ActionSequence] | None' = dc_field(default=None, metadata=dc_config(field_name="action_sequences")) - harm_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_types")) + cooldown_period: int | None = dc_field( + default=None, metadata=dc_config(field_name="cooldown_period") + ) + severity: int | None = dc_field( + default=None, metadata=dc_config(field_name="severity") + ) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + action_sequences: "list[ActionSequence] | None" = dc_field( + default=None, metadata=dc_config(field_name="action_sequences") + ) + harm_types: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="harm_types") + ) + @dataclass class HideChannelRequest(DataClassJsonMixin): # Whether to clear message history of the channel or not - clear_history: bool | None = dc_field(default=None, metadata=dc_config(field_name="clear_history")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + clear_history: bool | None = dc_field( + default=None, metadata=dc_config(field_name="clear_history") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class HideChannelResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class HuaweiConfig(DataClassJsonMixin): - disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="Disabled")) + disabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="Disabled") + ) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) secret: str | None = dc_field(default=None, metadata=dc_config(field_name="secret")) + @dataclass class HuaweiConfigFields(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) secret: str | None = dc_field(default=None, metadata=dc_config(field_name="secret")) + @dataclass class IPContentCountRuleParameters(DataClassJsonMixin): - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + time_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="time_window") + ) + @dataclass class IPFlagCountRuleParameters(DataClassJsonMixin): - severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) - harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) + severity: str | None = dc_field( + default=None, metadata=dc_config(field_name="severity") + ) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + time_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="time_window") + ) + harm_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="harm_labels") + ) + @dataclass class ImageContentParameters(DataClassJsonMixin): - label_operator: str | None = dc_field(default=None, metadata=dc_config(field_name="label_operator")) - min_confidence: float | None = dc_field(default=None, metadata=dc_config(field_name="min_confidence")) - harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) + label_operator: str | None = dc_field( + default=None, metadata=dc_config(field_name="label_operator") + ) + min_confidence: float | None = dc_field( + default=None, metadata=dc_config(field_name="min_confidence") + ) + harm_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="harm_labels") + ) + @dataclass class ImageData(DataClassJsonMixin): @@ -7700,12 +15521,22 @@ class ImageData(DataClassJsonMixin): url: str = dc_field(metadata=dc_config(field_name="url")) width: str = dc_field(metadata=dc_config(field_name="width")) + @dataclass class ImageRuleParameters(DataClassJsonMixin): - min_confidence: float | None = dc_field(default=None, metadata=dc_config(field_name="min_confidence")) - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) - harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) + min_confidence: float | None = dc_field( + default=None, metadata=dc_config(field_name="min_confidence") + ) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + time_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="time_window") + ) + harm_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="harm_labels") + ) + @dataclass class ImageSize(DataClassJsonMixin): @@ -7718,36 +15549,59 @@ class ImageSize(DataClassJsonMixin): # Target image width width: int | None = dc_field(default=None, metadata=dc_config(field_name="width")) + @dataclass class ImageUploadRequest(DataClassJsonMixin): file: str | None = dc_field(default=None, metadata=dc_config(field_name="file")) # field with JSON-encoded array of image size configurations - upload_sizes: 'list[ImageSize] | None' = dc_field(default=None, metadata=dc_config(field_name="upload_sizes")) - user: 'OnlyUserID | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + upload_sizes: "list[ImageSize] | None" = dc_field( + default=None, metadata=dc_config(field_name="upload_sizes") + ) + user: "OnlyUserID | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ImageUploadResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) file: str | None = dc_field(default=None, metadata=dc_config(field_name="file")) - thumb_url: str | None = dc_field(default=None, metadata=dc_config(field_name="thumb_url")) + thumb_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="thumb_url") + ) # Array of image size configurations - upload_sizes: 'list[ImageSize] | None' = dc_field(default=None, metadata=dc_config(field_name="upload_sizes")) + upload_sizes: "list[ImageSize] | None" = dc_field( + default=None, metadata=dc_config(field_name="upload_sizes") + ) + @dataclass class Images(DataClassJsonMixin): - fixed_height: 'ImageData' = dc_field(metadata=dc_config(field_name="fixed_height")) - fixed_height_downsampled: 'ImageData' = dc_field(metadata=dc_config(field_name="fixed_height_downsampled")) - fixed_height_still: 'ImageData' = dc_field(metadata=dc_config(field_name="fixed_height_still")) - fixed_width: 'ImageData' = dc_field(metadata=dc_config(field_name="fixed_width")) - fixed_width_downsampled: 'ImageData' = dc_field(metadata=dc_config(field_name="fixed_width_downsampled")) - fixed_width_still: 'ImageData' = dc_field(metadata=dc_config(field_name="fixed_width_still")) - original: 'ImageData' = dc_field(metadata=dc_config(field_name="original")) + fixed_height: "ImageData" = dc_field(metadata=dc_config(field_name="fixed_height")) + fixed_height_downsampled: "ImageData" = dc_field( + metadata=dc_config(field_name="fixed_height_downsampled") + ) + fixed_height_still: "ImageData" = dc_field( + metadata=dc_config(field_name="fixed_height_still") + ) + fixed_width: "ImageData" = dc_field(metadata=dc_config(field_name="fixed_width")) + fixed_width_downsampled: "ImageData" = dc_field( + metadata=dc_config(field_name="fixed_width_downsampled") + ) + fixed_width_still: "ImageData" = dc_field( + metadata=dc_config(field_name="fixed_width_still") + ) + original: "ImageData" = dc_field(metadata=dc_config(field_name="original")) + @dataclass class ImportBlockListRequest(DataClassJsonMixin): items: list[str] = dc_field(metadata=dc_config(field_name="items")) - chunk_size: int | None = dc_field(default=None, metadata=dc_config(field_name="chunk_size")) + chunk_size: int | None = dc_field( + default=None, metadata=dc_config(field_name="chunk_size") + ) + @dataclass class ImportBlockListResponse(DataClassJsonMixin): @@ -7755,42 +15609,96 @@ class ImportBlockListResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) + @dataclass class ImportTask(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) id: str = dc_field(metadata=dc_config(field_name="id")) mode: str = dc_field(metadata=dc_config(field_name="mode")) path: str = dc_field(metadata=dc_config(field_name="path")) state: str = dc_field(metadata=dc_config(field_name="state")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - history: 'list[ImportTaskHistory]' = dc_field(metadata=dc_config(field_name="history")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + history: "list[ImportTaskHistory]" = dc_field( + metadata=dc_config(field_name="history") + ) size: int | None = dc_field(default=None, metadata=dc_config(field_name="size")) + @dataclass class ImportTaskHistory(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) next_state: str = dc_field(metadata=dc_config(field_name="next_state")) prev_state: str = dc_field(metadata=dc_config(field_name="prev_state")) + @dataclass class ImportV2TaskItem(DataClassJsonMixin): app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) id: str = dc_field(metadata=dc_config(field_name="id")) product: str = dc_field(metadata=dc_config(field_name="product")) state: int = dc_field(metadata=dc_config(field_name="state")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - settings: 'ImportV2TaskSettings' = dc_field(metadata=dc_config(field_name="settings")) - result: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="result")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + settings: "ImportV2TaskSettings" = dc_field( + metadata=dc_config(field_name="settings") + ) + result: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="result") + ) + @dataclass class ImportV2TaskSettings(DataClassJsonMixin): - merge_custom: bool | None = dc_field(default=None, metadata=dc_config(field_name="merge_custom")) + merge_custom: bool | None = dc_field( + default=None, metadata=dc_config(field_name="merge_custom") + ) mode: str | None = dc_field(default=None, metadata=dc_config(field_name="mode")) path: str | None = dc_field(default=None, metadata=dc_config(field_name="path")) - skip_references_check: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_references_check")) - use_import_time_as_op_time: bool | None = dc_field(default=None, metadata=dc_config(field_name="use_import_time_as_op_time")) - s3: 'ImportV2TaskSettingsS3 | None' = dc_field(default=None, metadata=dc_config(field_name="s3")) + skip_references_check: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_references_check") + ) + use_import_time_as_op_time: bool | None = dc_field( + default=None, metadata=dc_config(field_name="use_import_time_as_op_time") + ) + s3: "ImportV2TaskSettingsS3 | None" = dc_field( + default=None, metadata=dc_config(field_name="s3") + ) + @dataclass class ImportV2TaskSettingsS3(DataClassJsonMixin): @@ -7798,33 +15706,47 @@ class ImportV2TaskSettingsS3(DataClassJsonMixin): dir: str | None = dc_field(default=None, metadata=dc_config(field_name="dir")) region: str | None = dc_field(default=None, metadata=dc_config(field_name="region")) + @dataclass class Incident(DataClassJsonMixin): _from: str = dc_field(metadata=dc_config(field_name="from")) peak_concurrency: int = dc_field(metadata=dc_config(field_name="peak_concurrency")) to: str = dc_field(metadata=dc_config(field_name="to")) - viewers_interrupted: int = dc_field(metadata=dc_config(field_name="viewers_interrupted")) + viewers_interrupted: int = dc_field( + metadata=dc_config(field_name="viewers_interrupted") + ) + @dataclass class IndividualRecordSettings(DataClassJsonMixin): mode: str = dc_field(metadata=dc_config(field_name="mode")) - output_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="output_types")) + output_types: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="output_types") + ) + @dataclass class IndividualRecordingResponse(DataClassJsonMixin): status: str = dc_field(metadata=dc_config(field_name="status")) + @dataclass class IndividualRecordingSettingsRequest(DataClassJsonMixin): # Recording mode. One of: available, disabled, auto-on mode: str = dc_field(metadata=dc_config(field_name="mode")) # Output types to include: audio_only, video_only, audio_video, screenshare_audio_only, screenshare_video_only, screenshare_audio_video - output_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="output_types")) + output_types: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="output_types") + ) + @dataclass class IndividualRecordingSettingsResponse(DataClassJsonMixin): mode: str = dc_field(metadata=dc_config(field_name="mode")) - output_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="output_types")) + output_types: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="output_types") + ) + @dataclass class IngressAudioEncodingOptions(DataClassJsonMixin): @@ -7832,11 +15754,15 @@ class IngressAudioEncodingOptions(DataClassJsonMixin): channels: int = dc_field(metadata=dc_config(field_name="channels")) enable_dtx: bool = dc_field(metadata=dc_config(field_name="enable_dtx")) + @dataclass class IngressAudioEncodingOptionsRequest(DataClassJsonMixin): bitrate: int = dc_field(metadata=dc_config(field_name="bitrate")) channels: int = dc_field(metadata=dc_config(field_name="channels")) - enable_dtx: bool | None = dc_field(default=None, metadata=dc_config(field_name="enable_dtx")) + enable_dtx: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enable_dtx") + ) + @dataclass class IngressAudioEncodingResponse(DataClassJsonMixin): @@ -7844,14 +15770,24 @@ class IngressAudioEncodingResponse(DataClassJsonMixin): channels: int = dc_field(metadata=dc_config(field_name="channels")) enable_dtx: bool = dc_field(metadata=dc_config(field_name="enable_dtx")) + @dataclass class IngressErrorEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Human-readable error message error: str = dc_field(metadata=dc_config(field_name="error")) # Unique identifier for the stream - ingress_stream_id: str = dc_field(metadata=dc_config(field_name="ingress_stream_id")) + ingress_stream_id: str = dc_field( + metadata=dc_config(field_name="ingress_stream_id") + ) # User who was streaming user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # The type of event: "ingress.error" in this case @@ -7859,23 +15795,41 @@ class IngressErrorEvent(DataClassJsonMixin): # Error code code: str | None = dc_field(default=None, metadata=dc_config(field_name="code")) + @dataclass class IngressSettings(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - audio_encoding_options: 'IngressAudioEncodingOptions | None' = dc_field(default=None, metadata=dc_config(field_name="audio_encoding_options")) - video_encoding_options: 'dict[str, IngressVideoEncodingOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="video_encoding_options")) + audio_encoding_options: "IngressAudioEncodingOptions | None" = dc_field( + default=None, metadata=dc_config(field_name="audio_encoding_options") + ) + video_encoding_options: "dict[str, IngressVideoEncodingOptions] | None" = dc_field( + default=None, metadata=dc_config(field_name="video_encoding_options") + ) + @dataclass class IngressSettingsRequest(DataClassJsonMixin): - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - audio_encoding_options: 'IngressAudioEncodingOptionsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="audio_encoding_options")) - video_encoding_options: 'dict[str, IngressVideoEncodingOptionsRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="video_encoding_options")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + audio_encoding_options: "IngressAudioEncodingOptionsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="audio_encoding_options") + ) + video_encoding_options: "dict[str, IngressVideoEncodingOptionsRequest] | None" = ( + dc_field(default=None, metadata=dc_config(field_name="video_encoding_options")) + ) + @dataclass class IngressSettingsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - audio_encoding_options: 'IngressAudioEncodingResponse | None' = dc_field(default=None, metadata=dc_config(field_name="audio_encoding_options")) - video_encoding_options: 'dict[str, IngressVideoEncodingResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="video_encoding_options")) + audio_encoding_options: "IngressAudioEncodingResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="audio_encoding_options") + ) + video_encoding_options: "dict[str, IngressVideoEncodingResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="video_encoding_options") + ) + @dataclass class IngressSource(DataClassJsonMixin): @@ -7883,62 +15837,106 @@ class IngressSource(DataClassJsonMixin): height: int = dc_field(metadata=dc_config(field_name="height")) width: int = dc_field(metadata=dc_config(field_name="width")) + @dataclass class IngressSourceRequest(DataClassJsonMixin): fps: int = dc_field(metadata=dc_config(field_name="fps")) height: int = dc_field(metadata=dc_config(field_name="height")) width: int = dc_field(metadata=dc_config(field_name="width")) + @dataclass class IngressSourceResponse(DataClassJsonMixin): fps: int = dc_field(metadata=dc_config(field_name="fps")) height: int = dc_field(metadata=dc_config(field_name="height")) width: int = dc_field(metadata=dc_config(field_name="width")) + @dataclass class IngressStartedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Unique identifier for this stream - ingress_stream_id: str = dc_field(metadata=dc_config(field_name="ingress_stream_id")) + ingress_stream_id: str = dc_field( + metadata=dc_config(field_name="ingress_stream_id") + ) # Streaming protocol (e.g., 'rtmps', 'srt', 'rtmp', 'rtsp') publisher_type: str = dc_field(metadata=dc_config(field_name="publisher_type")) # User who started the stream user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # The type of event: "ingress.started" in this case - type: str = dc_field(default="ingress.started", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="ingress.started", metadata=dc_config(field_name="type") + ) # Client IP address - client_ip: str | None = dc_field(default=None, metadata=dc_config(field_name="client_ip")) + client_ip: str | None = dc_field( + default=None, metadata=dc_config(field_name="client_ip") + ) # Streaming client software name (e.g., 'OBS Studio') - client_name: str | None = dc_field(default=None, metadata=dc_config(field_name="client_name")) + client_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="client_name") + ) # Client software version - version: str | None = dc_field(default=None, metadata=dc_config(field_name="version")) + version: str | None = dc_field( + default=None, metadata=dc_config(field_name="version") + ) + @dataclass class IngressStoppedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Unique identifier for the stream - ingress_stream_id: str = dc_field(metadata=dc_config(field_name="ingress_stream_id")) + ingress_stream_id: str = dc_field( + metadata=dc_config(field_name="ingress_stream_id") + ) # User who was streaming user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # The type of event: "ingress.stopped" in this case - type: str = dc_field(default="ingress.stopped", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="ingress.stopped", metadata=dc_config(field_name="type") + ) + @dataclass class IngressVideoEncodingOptions(DataClassJsonMixin): - layers: 'list[IngressVideoLayer]' = dc_field(metadata=dc_config(field_name="layers")) - source: 'IngressSource | None' = dc_field(default=None, metadata=dc_config(field_name="source")) + layers: "list[IngressVideoLayer]" = dc_field( + metadata=dc_config(field_name="layers") + ) + source: "IngressSource | None" = dc_field( + default=None, metadata=dc_config(field_name="source") + ) + @dataclass class IngressVideoEncodingOptionsRequest(DataClassJsonMixin): - layers: 'list[IngressVideoLayerRequest]' = dc_field(metadata=dc_config(field_name="layers")) - source: 'IngressSourceRequest' = dc_field(metadata=dc_config(field_name="source")) + layers: "list[IngressVideoLayerRequest]" = dc_field( + metadata=dc_config(field_name="layers") + ) + source: "IngressSourceRequest" = dc_field(metadata=dc_config(field_name="source")) + @dataclass class IngressVideoEncodingResponse(DataClassJsonMixin): - layers: 'list[IngressVideoLayerResponse]' = dc_field(metadata=dc_config(field_name="layers")) - source: 'IngressSourceResponse' = dc_field(metadata=dc_config(field_name="source")) + layers: "list[IngressVideoLayerResponse]" = dc_field( + metadata=dc_config(field_name="layers") + ) + source: "IngressSourceResponse" = dc_field(metadata=dc_config(field_name="source")) + @dataclass class IngressVideoLayer(DataClassJsonMixin): @@ -7948,6 +15946,7 @@ class IngressVideoLayer(DataClassJsonMixin): max_dimension: int = dc_field(metadata=dc_config(field_name="max_dimension")) min_dimension: int = dc_field(metadata=dc_config(field_name="min_dimension")) + @dataclass class IngressVideoLayerRequest(DataClassJsonMixin): bitrate: int = dc_field(metadata=dc_config(field_name="bitrate")) @@ -7956,6 +15955,7 @@ class IngressVideoLayerRequest(DataClassJsonMixin): max_dimension: int = dc_field(metadata=dc_config(field_name="max_dimension")) min_dimension: int = dc_field(metadata=dc_config(field_name="min_dimension")) + @dataclass class IngressVideoLayerResponse(DataClassJsonMixin): bitrate: int = dc_field(metadata=dc_config(field_name="bitrate")) @@ -7964,12 +15964,15 @@ class IngressVideoLayerResponse(DataClassJsonMixin): max_dimension: int = dc_field(metadata=dc_config(field_name="max_dimension")) min_dimension: int = dc_field(metadata=dc_config(field_name="min_dimension")) + @dataclass class InsertActionLogRequest(DataClassJsonMixin): # Type of moderation action taken action_type: str = dc_field(metadata=dc_config(field_name="action_type")) # ID of the user who created the entity - entity_creator_id: str = dc_field(metadata=dc_config(field_name="entity_creator_id")) + entity_creator_id: str = dc_field( + metadata=dc_config(field_name="entity_creator_id") + ) # ID of the entity the action was taken on entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) # Type of entity the action was taken on @@ -7977,16 +15980,24 @@ class InsertActionLogRequest(DataClassJsonMixin): # Reason for the action reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) # Type of reporter; 'api_integration' when the action was triggered by an API integration call with no authenticated user - reporter_type: str | None = dc_field(default=None, metadata=dc_config(field_name="reporter_type")) + reporter_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="reporter_type") + ) # ID of the user who triggered the action; empty for automated actions - reporter_user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="reporter_user_id")) + reporter_user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="reporter_user_id") + ) # Custom metadata for the action log - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class InsertActionLogResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class InterestTagResponse(DataClassJsonMixin): # Number of distinct reacted-to activities tagged with this value @@ -7994,32 +16005,61 @@ class InterestTagResponse(DataClassJsonMixin): # The interest tag value tag: str = dc_field(metadata=dc_config(field_name="tag")) + @dataclass class JoinCallAPIMetrics(DataClassJsonMixin): failures: float = dc_field(metadata=dc_config(field_name="failures")) total: float = dc_field(metadata=dc_config(field_name="total")) - latency: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="latency")) + latency: "ActiveCallsLatencyStats | None" = dc_field( + default=None, metadata=dc_config(field_name="latency") + ) + @dataclass class Joins(DataClassJsonMixin): reason: str = dc_field(metadata=dc_config(field_name="reason")) - disconnect_reasons: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="disconnect_reasons")) - failure_stages: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="failure_stages")) - join_attempts: int | None = dc_field(default=None, metadata=dc_config(field_name="join_attempts")) - join_success_rate: float | None = dc_field(default=None, metadata=dc_config(field_name="join_success_rate")) + disconnect_reasons: "dict[str, int]" = dc_field( + metadata=dc_config(field_name="disconnect_reasons") + ) + failure_stages: "dict[str, int]" = dc_field( + metadata=dc_config(field_name="failure_stages") + ) + join_attempts: int | None = dc_field( + default=None, metadata=dc_config(field_name="join_attempts") + ) + join_success_rate: float | None = dc_field( + default=None, metadata=dc_config(field_name="join_success_rate") + ) + @dataclass class KeyframeOCRRuleParameters(DataClassJsonMixin): - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) - harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + time_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="time_window") + ) + harm_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="harm_labels") + ) + @dataclass class KeyframeRuleParameters(DataClassJsonMixin): - min_confidence: float | None = dc_field(default=None, metadata=dc_config(field_name="min_confidence")) - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) - harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) + min_confidence: float | None = dc_field( + default=None, metadata=dc_config(field_name="min_confidence") + ) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + time_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="time_window") + ) + harm_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="harm_labels") + ) + @dataclass class KickUserRequest(DataClassJsonMixin): @@ -8028,46 +16068,83 @@ class KickUserRequest(DataClassJsonMixin): # If true, also block the user from rejoining the call block: bool | None = dc_field(default=None, metadata=dc_config(field_name="block")) # Server-side: ID of the user performing the action - kicked_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="kicked_by_id")) + kicked_by_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="kicked_by_id") + ) # User request object - kicked_by: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="kicked_by")) + kicked_by: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="kicked_by") + ) + @dataclass class KickUserResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class KickedUserEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.kicked_user" in this case - type: str = dc_field(default="call.kicked_user", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.kicked_user", metadata=dc_config(field_name="type") + ) # User response object - kicked_by_user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="kicked_by_user")) + kicked_by_user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="kicked_by_user") + ) + @dataclass class LLMConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - app_context: str | None = dc_field(default=None, metadata=dc_config(field_name="app_context")) - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - rules: 'list[LLMRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) - severity_descriptions: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="severity_descriptions")) + app_context: str | None = dc_field( + default=None, metadata=dc_config(field_name="app_context") + ) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + rules: "list[LLMRule] | None" = dc_field( + default=None, metadata=dc_config(field_name="rules") + ) + severity_descriptions: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="severity_descriptions") + ) + @dataclass class LLMRule(DataClassJsonMixin): label: str = dc_field(metadata=dc_config(field_name="label")) action: str | None = dc_field(default=None, metadata=dc_config(field_name="action")) - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) - severity_rules: 'list[BodyguardSeverityRule] | None' = dc_field(default=None, metadata=dc_config(field_name="severity_rules")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) + severity_rules: "list[BodyguardSeverityRule] | None" = dc_field( + default=None, metadata=dc_config(field_name="severity_rules") + ) + @dataclass class LabelResponse(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) - harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) - phrase_list_ids: 'list[int] | None' = dc_field(default=None, metadata=dc_config(field_name="phrase_list_ids")) + harm_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="harm_labels") + ) + phrase_list_ids: "list[int] | None" = dc_field( + default=None, metadata=dc_config(field_name="phrase_list_ids") + ) + @dataclass class LabelResultResponse(DataClassJsonMixin): @@ -8077,7 +16154,14 @@ class LabelResultResponse(DataClassJsonMixin): content: str = dc_field(metadata=dc_config(field_name="content")) content_type: str = dc_field(metadata=dc_config(field_name="content_type")) # Timestamp - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # High-level harm category harm_type: str = dc_field(metadata=dc_config(field_name="harm_type")) # Unique identifier @@ -8085,22 +16169,35 @@ class LabelResultResponse(DataClassJsonMixin): # Detected language language: str = dc_field(metadata=dc_config(field_name="language")) # Provider recommended action - recommended_action: str = dc_field(metadata=dc_config(field_name="recommended_action")) + recommended_action: str = dc_field( + metadata=dc_config(field_name="recommended_action") + ) # Severity level severity: str = dc_field(metadata=dc_config(field_name="severity")) # Moderation labels labels: list[str] = dc_field(metadata=dc_config(field_name="labels")) # Customer-supplied identifier for the moderated content - content_id: str | None = dc_field(default=None, metadata=dc_config(field_name="content_id")) + content_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="content_id") + ) # Who the content is directed at (USER, GROUP, EVERYONE, NONE, etc.) - directed_at: str | None = dc_field(default=None, metadata=dc_config(field_name="directed_at")) + directed_at: str | None = dc_field( + default=None, metadata=dc_config(field_name="directed_at") + ) # The stored content with every non-whitespace character masked. Present only when recommended_action is not 'keep'. Derived at runtime and never stored. - fully_masked_content: str | None = dc_field(default=None, metadata=dc_config(field_name="fully_masked_content")) + fully_masked_content: str | None = dc_field( + default=None, metadata=dc_config(field_name="fully_masked_content") + ) # Content with blocklisted tokens masked (when a blocklist rule with action=mask rewrote the original) - masked_content: str | None = dc_field(default=None, metadata=dc_config(field_name="masked_content")) + masked_content: str | None = dc_field( + default=None, metadata=dc_config(field_name="masked_content") + ) policy: str | None = dc_field(default=None, metadata=dc_config(field_name="policy")) # Customer-supplied user identifier for the content author - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + @dataclass class LabelThresholds(DataClassJsonMixin): @@ -8109,68 +16206,118 @@ class LabelThresholds(DataClassJsonMixin): # Threshold for automatic message flag flag: float | None = dc_field(default=None, metadata=dc_config(field_name="flag")) + @dataclass class LabelsRequest(DataClassJsonMixin): # Content to moderate content: str = dc_field(metadata=dc_config(field_name="content")) # Optional category for filtering (max 128 chars) - category: str | None = dc_field(default=None, metadata=dc_config(field_name="category")) + category: str | None = dc_field( + default=None, metadata=dc_config(field_name="category") + ) # Customer-supplied identifier for the moderated content, for tracing - content_id: str | None = dc_field(default=None, metadata=dc_config(field_name="content_id")) + content_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="content_id") + ) # Type of content: 'text' (default), 'message', or 'username'. Stored as-sent; only 'username' routes to the username moderation API. - content_type: str | None = dc_field(default=None, metadata=dc_config(field_name="content_type")) + content_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="content_type") + ) # When true, run moderation and return labels without persisting the result. Useful for one-off checks (e.g. UI testers) that should not be recorded in the stored history. - dry_run: bool | None = dc_field(default=None, metadata=dc_config(field_name="dry_run")) + dry_run: bool | None = dc_field( + default=None, metadata=dc_config(field_name="dry_run") + ) # Optional moderation policy key (max 128 chars). For username moderation, set this to a policy whose key starts with 'username:' (e.g. 'username:default') to opt into the low-latency fast-path: blocklists (customer + Stream-managed defaults) short-circuit the LLM, and the LLM fallback uses gpt-4.1-nano with a 24h Valkey verdict cache. Without a 'username:' prefix the request falls through to the standard Bodyguard Analyze v1 username path. policy: str | None = dc_field(default=None, metadata=dc_config(field_name="policy")) # Optional customer-supplied user identifier for the content author (max 256 chars). Enables filtering stored results by user_id. - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + @dataclass class LabelsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Provider recommended action - recommended_action: str = dc_field(metadata=dc_config(field_name="recommended_action")) + recommended_action: str = dc_field( + metadata=dc_config(field_name="recommended_action") + ) # Customer-supplied identifier for the moderated content, for tracing - content_id: str | None = dc_field(default=None, metadata=dc_config(field_name="content_id")) + content_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="content_id") + ) # Who the content is directed at (USER, GROUP, EVERYONE, NONE, etc.), when the provider exposes it - directed_at: str | None = dc_field(default=None, metadata=dc_config(field_name="directed_at")) + directed_at: str | None = dc_field( + default=None, metadata=dc_config(field_name="directed_at") + ) # The original content with every non-whitespace character masked. Present only when recommended_action is not 'keep'. Derived at runtime and never stored. - fully_masked_content: str | None = dc_field(default=None, metadata=dc_config(field_name="fully_masked_content")) + fully_masked_content: str | None = dc_field( + default=None, metadata=dc_config(field_name="fully_masked_content") + ) # High-level harm category - harm_type: str | None = dc_field(default=None, metadata=dc_config(field_name="harm_type")) + harm_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="harm_type") + ) # Detected language - language: str | None = dc_field(default=None, metadata=dc_config(field_name="language")) + language: str | None = dc_field( + default=None, metadata=dc_config(field_name="language") + ) # Content with blocklisted tokens masked or substituted. Present only when a blocklist rewrote the original content. - masked_content: str | None = dc_field(default=None, metadata=dc_config(field_name="masked_content")) + masked_content: str | None = dc_field( + default=None, metadata=dc_config(field_name="masked_content") + ) # Severity level - severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) + severity: str | None = dc_field( + default=None, metadata=dc_config(field_name="severity") + ) # Moderation labels detected - labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="labels")) + labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="labels") + ) + @dataclass class LayoutSettings(DataClassJsonMixin): external_app_url: str = dc_field(metadata=dc_config(field_name="external_app_url")) external_css_url: str = dc_field(metadata=dc_config(field_name="external_css_url")) name: str = dc_field(metadata=dc_config(field_name="name")) - detect_orientation: bool | None = dc_field(default=None, metadata=dc_config(field_name="detect_orientation")) - options: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="options")) + detect_orientation: bool | None = dc_field( + default=None, metadata=dc_config(field_name="detect_orientation") + ) + options: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="options") + ) + @dataclass class LayoutSettingsRequest(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) - detect_orientation: bool | None = dc_field(default=None, metadata=dc_config(field_name="detect_orientation")) - external_app_url: str | None = dc_field(default=None, metadata=dc_config(field_name="external_app_url")) - external_css_url: str | None = dc_field(default=None, metadata=dc_config(field_name="external_css_url")) - options: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="options")) + detect_orientation: bool | None = dc_field( + default=None, metadata=dc_config(field_name="detect_orientation") + ) + external_app_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="external_app_url") + ) + external_css_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="external_css_url") + ) + options: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="options") + ) + @dataclass class LayoutSettingsResponse(DataClassJsonMixin): external_app_url: str = dc_field(metadata=dc_config(field_name="external_app_url")) external_css_url: str = dc_field(metadata=dc_config(field_name="external_css_url")) name: str = dc_field(metadata=dc_config(field_name="name")) - detect_orientation: bool | None = dc_field(default=None, metadata=dc_config(field_name="detect_orientation")) - options: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="options")) + detect_orientation: bool | None = dc_field( + default=None, metadata=dc_config(field_name="detect_orientation") + ) + options: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="options") + ) + @dataclass class LimitInfoResponse(DataClassJsonMixin): @@ -8181,147 +16328,231 @@ class LimitInfoResponse(DataClassJsonMixin): # The Unix timestamp when the rate limit resets reset: int = dc_field(metadata=dc_config(field_name="reset")) + @dataclass class LimitsSettings(DataClassJsonMixin): - max_participants_exclude_roles: list[str] = dc_field(metadata=dc_config(field_name="max_participants_exclude_roles")) - max_duration_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="max_duration_seconds")) - max_participants: int | None = dc_field(default=None, metadata=dc_config(field_name="max_participants")) - max_participants_exclude_owner: bool | None = dc_field(default=None, metadata=dc_config(field_name="max_participants_exclude_owner")) + max_participants_exclude_roles: list[str] = dc_field( + metadata=dc_config(field_name="max_participants_exclude_roles") + ) + max_duration_seconds: int | None = dc_field( + default=None, metadata=dc_config(field_name="max_duration_seconds") + ) + max_participants: int | None = dc_field( + default=None, metadata=dc_config(field_name="max_participants") + ) + max_participants_exclude_owner: bool | None = dc_field( + default=None, metadata=dc_config(field_name="max_participants_exclude_owner") + ) + @dataclass class LimitsSettingsRequest(DataClassJsonMixin): - max_duration_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="max_duration_seconds")) - max_participants: int | None = dc_field(default=None, metadata=dc_config(field_name="max_participants")) - max_participants_exclude_owner: bool | None = dc_field(default=None, metadata=dc_config(field_name="max_participants_exclude_owner")) - max_participants_exclude_roles: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="max_participants_exclude_roles")) + max_duration_seconds: int | None = dc_field( + default=None, metadata=dc_config(field_name="max_duration_seconds") + ) + max_participants: int | None = dc_field( + default=None, metadata=dc_config(field_name="max_participants") + ) + max_participants_exclude_owner: bool | None = dc_field( + default=None, metadata=dc_config(field_name="max_participants_exclude_owner") + ) + max_participants_exclude_roles: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="max_participants_exclude_roles") + ) + @dataclass class LimitsSettingsResponse(DataClassJsonMixin): - max_participants_exclude_roles: list[str] = dc_field(metadata=dc_config(field_name="max_participants_exclude_roles")) - max_duration_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="max_duration_seconds")) - max_participants: int | None = dc_field(default=None, metadata=dc_config(field_name="max_participants")) - max_participants_exclude_owner: bool | None = dc_field(default=None, metadata=dc_config(field_name="max_participants_exclude_owner")) + max_participants_exclude_roles: list[str] = dc_field( + metadata=dc_config(field_name="max_participants_exclude_roles") + ) + max_duration_seconds: int | None = dc_field( + default=None, metadata=dc_config(field_name="max_duration_seconds") + ) + max_participants: int | None = dc_field( + default=None, metadata=dc_config(field_name="max_participants") + ) + max_participants_exclude_owner: bool | None = dc_field( + default=None, metadata=dc_config(field_name="max_participants_exclude_owner") + ) + @dataclass class ListBlockListResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - blocklists: 'list[BlockListResponse]' = dc_field(metadata=dc_config(field_name="blocklists")) - next_cursor: str | None = dc_field(default=None, metadata=dc_config(field_name="next_cursor")) + blocklists: "list[BlockListResponse]" = dc_field( + metadata=dc_config(field_name="blocklists") + ) + next_cursor: str | None = dc_field( + default=None, metadata=dc_config(field_name="next_cursor") + ) + @dataclass class ListCallTypeResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - call_types: 'dict[str, CallTypeResponse]' = dc_field(metadata=dc_config(field_name="call_types")) + call_types: "dict[str, CallTypeResponse]" = dc_field( + metadata=dc_config(field_name="call_types") + ) + @dataclass class ListChannelTypesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Object with all channel types - channel_types: 'dict[str, ChannelTypeConfig | None]' = dc_field(metadata=dc_config(field_name="channel_types")) + channel_types: "dict[str, ChannelTypeConfig | None]" = dc_field( + metadata=dc_config(field_name="channel_types") + ) + @dataclass class ListCommandsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of commands - commands: 'list[Command]' = dc_field(metadata=dc_config(field_name="commands")) + commands: "list[Command]" = dc_field(metadata=dc_config(field_name="commands")) + @dataclass class ListDevicesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of devices - devices: 'list[DeviceResponse]' = dc_field(metadata=dc_config(field_name="devices")) + devices: "list[DeviceResponse]" = dc_field(metadata=dc_config(field_name="devices")) + @dataclass class ListExternalStorageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - external_storages: 'dict[str, ExternalStorageResponse]' = dc_field(metadata=dc_config(field_name="external_storages")) + external_storages: "dict[str, ExternalStorageResponse]" = dc_field( + metadata=dc_config(field_name="external_storages") + ) + @dataclass class ListFeedGroupsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - groups: 'dict[str, FeedGroupResponse]' = dc_field(metadata=dc_config(field_name="groups")) + groups: "dict[str, FeedGroupResponse]" = dc_field( + metadata=dc_config(field_name="groups") + ) + @dataclass class ListFeedViewsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Map of feed view ID to feed view - views: 'dict[str, FeedViewResponse]' = dc_field(metadata=dc_config(field_name="views")) + views: "dict[str, FeedViewResponse]" = dc_field( + metadata=dc_config(field_name="views") + ) + @dataclass class ListFeedVisibilitiesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Map of feed visibility configurations by name - feed_visibilities: 'dict[str, FeedVisibilityResponse]' = dc_field(metadata=dc_config(field_name="feed_visibilities")) + feed_visibilities: "dict[str, FeedVisibilityResponse]" = dc_field( + metadata=dc_config(field_name="feed_visibilities") + ) + @dataclass class ListImportV2TasksResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - import_tasks: 'list[ImportV2TaskItem]' = dc_field(metadata=dc_config(field_name="import_tasks")) + import_tasks: "list[ImportV2TaskItem]" = dc_field( + metadata=dc_config(field_name="import_tasks") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class ListImportsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - import_tasks: 'list[ImportTask]' = dc_field(metadata=dc_config(field_name="import_tasks")) + import_tasks: "list[ImportTask]" = dc_field( + metadata=dc_config(field_name="import_tasks") + ) + @dataclass class ListPermissionsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - permissions: 'list[Permission]' = dc_field(metadata=dc_config(field_name="permissions")) + permissions: "list[Permission]" = dc_field( + metadata=dc_config(field_name="permissions") + ) + @dataclass class ListPushProvidersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - push_providers: 'list[PushProviderResponse]' = dc_field(metadata=dc_config(field_name="push_providers")) + push_providers: "list[PushProviderResponse]" = dc_field( + metadata=dc_config(field_name="push_providers") + ) + @dataclass class ListQueuesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - queues: 'list[ModerationQueueResponse]' = dc_field(metadata=dc_config(field_name="queues")) + queues: "list[ModerationQueueResponse]" = dc_field( + metadata=dc_config(field_name="queues") + ) + @dataclass class ListRecordingsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - recordings: 'list[CallRecording]' = dc_field(metadata=dc_config(field_name="recordings")) + recordings: "list[CallRecording]" = dc_field( + metadata=dc_config(field_name="recordings") + ) + @dataclass class ListRolesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - roles: 'list[Role]' = dc_field(metadata=dc_config(field_name="roles")) + roles: "list[Role]" = dc_field(metadata=dc_config(field_name="roles")) + @dataclass class ListSIPInboundRoutingRuleResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of SIP Inbound Routing Rules for the application - sip_inbound_routing_rules: 'list[SIPInboundRoutingRuleResponse]' = dc_field(metadata=dc_config(field_name="sip_inbound_routing_rules")) + sip_inbound_routing_rules: "list[SIPInboundRoutingRuleResponse]" = dc_field( + metadata=dc_config(field_name="sip_inbound_routing_rules") + ) + @dataclass class ListSIPTrunksResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of SIP trunks for the application - sip_trunks: 'list[SIPTrunkResponse]' = dc_field(metadata=dc_config(field_name="sip_trunks")) + sip_trunks: "list[SIPTrunkResponse]" = dc_field( + metadata=dc_config(field_name="sip_trunks") + ) + @dataclass class ListTranscriptionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of transcriptions for the call - transcriptions: 'list[CallTranscription]' = dc_field(metadata=dc_config(field_name="transcriptions")) + transcriptions: "list[CallTranscription]" = dc_field( + metadata=dc_config(field_name="transcriptions") + ) + @dataclass class ListUserGroupsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of user groups - user_groups: 'list[UserGroupResponse]' = dc_field(metadata=dc_config(field_name="user_groups")) + user_groups: "list[UserGroupResponse]" = dc_field( + metadata=dc_config(field_name="user_groups") + ) + @dataclass class Location(DataClassJsonMixin): @@ -8330,6 +16561,7 @@ class Location(DataClassJsonMixin): # Longitude coordinate lng: float = dc_field(metadata=dc_config(field_name="lng")) + @dataclass class LocationResponse(DataClassJsonMixin): # Continent code @@ -8337,242 +16569,503 @@ class LocationResponse(DataClassJsonMixin): # Country ISO code country_iso_code: str = dc_field(metadata=dc_config(field_name="country_iso_code")) # Subdivision ISO code - subdivision_iso_code: str = dc_field(metadata=dc_config(field_name="subdivision_iso_code")) + subdivision_iso_code: str = dc_field( + metadata=dc_config(field_name="subdivision_iso_code") + ) + @dataclass class MarkActivityRequest(DataClassJsonMixin): # Whether to mark all activities as read - mark_all_read: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_all_read")) + mark_all_read: bool | None = dc_field( + default=None, metadata=dc_config(field_name="mark_all_read") + ) # Whether to mark all activities as seen - mark_all_seen: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_all_seen")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + mark_all_seen: bool | None = dc_field( + default=None, metadata=dc_config(field_name="mark_all_seen") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # List of activity IDs to mark as read - mark_read: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mark_read")) + mark_read: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mark_read") + ) # List of activity IDs to mark as seen - mark_seen: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mark_seen")) + mark_seen: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mark_seen") + ) # List of activity IDs to mark as watched (for stories) - mark_watched: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mark_watched")) + mark_watched: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mark_watched") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MarkChannelsReadRequest(DataClassJsonMixin): - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Map of channel ID to last read message ID - read_by_channel: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="read_by_channel")) + read_by_channel: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="read_by_channel") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MarkDeliveredRequest(DataClassJsonMixin): - latest_delivered_messages: 'list[DeliveredMessagePayload] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_delivered_messages")) + latest_delivered_messages: "list[DeliveredMessagePayload] | None" = dc_field( + default=None, metadata=dc_config(field_name="latest_delivered_messages") + ) + @dataclass class MarkDeliveredResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class MarkReadRequest(DataClassJsonMixin): # ID of the message that is considered last read by client - message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="message_id")) + message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="message_id") + ) # Optional Thread ID to specifically mark a given thread as read - thread_id: str | None = dc_field(default=None, metadata=dc_config(field_name="thread_id")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + thread_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="thread_id") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MarkReadResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - event: 'MarkReadResponseEvent | None' = dc_field(default=None, metadata=dc_config(field_name="event")) + event: "MarkReadResponseEvent | None" = dc_field( + default=None, metadata=dc_config(field_name="event") + ) + @dataclass class MarkReadResponseEvent(DataClassJsonMixin): channel_id: str = dc_field(metadata=dc_config(field_name="channel_id")) channel_type: str = dc_field(metadata=dc_config(field_name="channel_type")) cid: str = dc_field(metadata=dc_config(field_name="cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) type: str = dc_field(metadata=dc_config(field_name="type")) - channel_last_message_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="channel_last_message_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - last_read_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="last_read_message_id")) + channel_last_message_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="channel_last_message_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + last_read_message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="last_read_message_id") + ) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) - thread: 'ThreadResponse | None' = dc_field(default=None, metadata=dc_config(field_name="thread")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) + thread: "ThreadResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="thread") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MarkReviewedRequestPayload(DataClassJsonMixin): # Maximum content items to mark as reviewed - content_to_mark_as_reviewed_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="content_to_mark_as_reviewed_limit")) + content_to_mark_as_reviewed_limit: int | None = dc_field( + default=None, metadata=dc_config(field_name="content_to_mark_as_reviewed_limit") + ) # Reason for the appeal decision - decision_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="decision_reason")) + decision_reason: str | None = dc_field( + default=None, metadata=dc_config(field_name="decision_reason") + ) # Skip marking content as reviewed - disable_marking_content_as_reviewed: bool | None = dc_field(default=None, metadata=dc_config(field_name="disable_marking_content_as_reviewed")) + disable_marking_content_as_reviewed: bool | None = dc_field( + default=None, + metadata=dc_config(field_name="disable_marking_content_as_reviewed"), + ) + @dataclass class MarkUnreadRequest(DataClassJsonMixin): # ID of the message from where the channel is marked unread - message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="message_id")) + message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="message_id") + ) # Timestamp of the message from where the channel is marked unread - message_timestamp: datetime | None = dc_field(default=None, metadata=dc_config(field_name="message_timestamp", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + message_timestamp: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="message_timestamp", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Mark a thread unread, specify one of the thread, message timestamp, or message id - thread_id: str | None = dc_field(default=None, metadata=dc_config(field_name="thread_id")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + thread_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="thread_id") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MatchedContent(DataClassJsonMixin): # The `content_ids[label]` value supplied on the `/analyze` request that contributed this entry. id: str = dc_field(metadata=dc_config(field_name="id")) # `content_published_at` from the contributing `/analyze` request, or server receive time when that field was omitted. - published_at: datetime = dc_field(metadata=dc_config(field_name="published_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + published_at: datetime = dc_field( + metadata=dc_config( + field_name="published_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Content type that contributed this entry: `image` or `text`. type: str = dc_field(metadata=dc_config(field_name="type")) # Image-classification entries only. Aggregate (max) confidence score across the entry's classifications + sub-classifications. Absent on text and OCR entries. - confidence: float | None = dc_field(default=None, metadata=dc_config(field_name="confidence")) + confidence: float | None = dc_field( + default=None, metadata=dc_config(field_name="confidence") + ) # Text and OCR entries. Aggregate (max) Bodyguard severity level (`LOW` / `MEDIUM` / `HIGH` / `CRITICAL`). Absent on image-classification entries. - severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) + severity: str | None = dc_field( + default=None, metadata=dc_config(field_name="severity") + ) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) # Image-classification entries (keyframe rule, Type=image) carry nested L1 → L2 classifications. Text entries (closed_caption rule, Type=text) carry flat label + severity. Resolved against the app's effective taxonomy on the image side. - classifications: 'list[Classification] | None' = dc_field(default=None, metadata=dc_config(field_name="classifications")) + classifications: "list[Classification] | None" = dc_field( + default=None, metadata=dc_config(field_name="classifications") + ) # OCR entries only (keyframe_ocr rule, Type=image). Bodyguard labels that fired against the keyframe's OCR-extracted text (e.g. `INSULT`, `HATE_SPEECH`). Distinct from `classifications` so consumers can route OCR matches separately from image-classification matches. - ocr_classifications: 'list[Classification] | None' = dc_field(default=None, metadata=dc_config(field_name="ocr_classifications")) + ocr_classifications: "list[Classification] | None" = dc_field( + default=None, metadata=dc_config(field_name="ocr_classifications") + ) + @dataclass class MaxStreakChangedEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="channel.max_streak_changed", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="channel.max_streak_changed", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class MemberAddedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Represents channel in chat - channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - member: 'ChannelMemberResponse' = dc_field(metadata=dc_config(field_name="member")) + member: "ChannelMemberResponse" = dc_field(metadata=dc_config(field_name="member")) # The type of event: "member.added" in this case type: str = dc_field(default="member.added", metadata=dc_config(field_name="type")) # The ID of the channel to which the member was added - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) # The number of messages in the channel - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel to which the member was added - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel to which the member was added cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MemberRemovedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Represents channel in chat - channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - member: 'ChannelMemberResponse' = dc_field(metadata=dc_config(field_name="member")) + member: "ChannelMemberResponse" = dc_field(metadata=dc_config(field_name="member")) # The type of event: "member.removed" in this case - type: str = dc_field(default="member.removed", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="member.removed", metadata=dc_config(field_name="type") + ) # The ID of the channel from which the member was removed - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) # The number of messages in the channel - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel from which the member was removed - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel from which the member was removed cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MemberRequest(DataClassJsonMixin): user_id: str = dc_field(metadata=dc_config(field_name="user_id")) role: str | None = dc_field(default=None, metadata=dc_config(field_name="role")) # Custom data for this object - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class MemberResponse(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Date/time of the last update - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # Custom member response data custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # Date/time of deletion - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) role: str | None = dc_field(default=None, metadata=dc_config(field_name="role")) + @dataclass class MemberUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Represents channel in chat - channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - member: 'ChannelMemberResponse' = dc_field(metadata=dc_config(field_name="member")) + member: "ChannelMemberResponse" = dc_field(metadata=dc_config(field_name="member")) # The type of event: "member.updated" in this case - type: str = dc_field(default="member.updated", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="member.updated", metadata=dc_config(field_name="type") + ) # The ID of the channel in which the member was updated - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) # The number of messages in the channel - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel in which the member was updated - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel in which the member was updated cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MemberUserRequest(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) image: str | None = dc_field(default=None, metadata=dc_config(field_name="image")) - invisible: bool | None = dc_field(default=None, metadata=dc_config(field_name="invisible")) - language: str | None = dc_field(default=None, metadata=dc_config(field_name="language")) + invisible: bool | None = dc_field( + default=None, metadata=dc_config(field_name="invisible") + ) + language: str | None = dc_field( + default=None, metadata=dc_config(field_name="language") + ) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) role: str | None = dc_field(default=None, metadata=dc_config(field_name="role")) - teams: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="teams")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - privacy_settings: 'PrivacySettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="privacy_settings")) - teams_role: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="teams_role")) + teams: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="teams") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + privacy_settings: "PrivacySettingsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="privacy_settings") + ) + teams_role: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="teams_role") + ) + @dataclass class MembersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of found members - members: 'list[ChannelMemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + members: "list[ChannelMemberResponse]" = dc_field( + metadata=dc_config(field_name="members") + ) + @dataclass class MembershipLevelResponse(DataClassJsonMixin): # When the membership level was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Unique identifier for the membership level id: str = dc_field(metadata=dc_config(field_name="id")) # Display name for the membership level @@ -8580,218 +17073,494 @@ class MembershipLevelResponse(DataClassJsonMixin): # Priority level priority: int = dc_field(metadata=dc_config(field_name="priority")) # When the membership level was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Activity tags this membership level gives access to tags: list[str] = dc_field(metadata=dc_config(field_name="tags")) # Description of the membership level - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) # Custom data for the membership level - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class MessageActionRequest(DataClassJsonMixin): # ReadOnlyData to execute command with - form_data: 'dict[str, str]' = dc_field(metadata=dc_config(field_name="form_data")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + form_data: "dict[str, str]" = dc_field(metadata=dc_config(field_name="form_data")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MessageActionResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + @dataclass class MessageChangeSet(DataClassJsonMixin): attachments: bool = dc_field(metadata=dc_config(field_name="attachments")) custom: bool = dc_field(metadata=dc_config(field_name="custom")) html: bool = dc_field(metadata=dc_config(field_name="html")) - mentioned_user_ids: bool = dc_field(metadata=dc_config(field_name="mentioned_user_ids")) + mentioned_user_ids: bool = dc_field( + metadata=dc_config(field_name="mentioned_user_ids") + ) mml: bool = dc_field(metadata=dc_config(field_name="mml")) pin: bool = dc_field(metadata=dc_config(field_name="pin")) - quoted_message_id: bool = dc_field(metadata=dc_config(field_name="quoted_message_id")) + quoted_message_id: bool = dc_field( + metadata=dc_config(field_name="quoted_message_id") + ) silent: bool = dc_field(metadata=dc_config(field_name="silent")) text: bool = dc_field(metadata=dc_config(field_name="text")) + @dataclass class MessageDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Whether the message was hard deleted hard_delete: bool = dc_field(metadata=dc_config(field_name="hard_delete")) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Represents any chat message - message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) # The type of event: "message.deleted" in this case - type: str = dc_field(default="message.deleted", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="message.deleted", metadata=dc_config(field_name="type") + ) # The ID of the channel where the message was sent - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) # The number of messages in the channel - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel where the message was sent - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel where the message was sent cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) # Whether the message was deleted only for the current user - deleted_for_me: bool | None = dc_field(default=None, metadata=dc_config(field_name="deleted_for_me")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_for_me: bool | None = dc_field( + default=None, metadata=dc_config(field_name="deleted_for_me") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MessageFlagResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - created_by_automod: bool = dc_field(metadata=dc_config(field_name="created_by_automod")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - approved_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="approved_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + created_by_automod: bool = dc_field( + metadata=dc_config(field_name="created_by_automod") + ) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + approved_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="approved_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - rejected_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="rejected_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - reviewed_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="reviewed_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - details: 'FlagDetailsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="details")) + rejected_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="rejected_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + reviewed_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="reviewed_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + details: "FlagDetailsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="details") + ) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) - moderation_feedback: 'FlagFeedbackResponse | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_feedback")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + moderation_feedback: "FlagFeedbackResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation_feedback") + ) # Result of the message moderation - moderation_result: 'MessageModerationResult | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_result")) + moderation_result: "MessageModerationResult | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation_result") + ) # User response object - reviewed_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="reviewed_by")) + reviewed_by: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="reviewed_by") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MessageFlaggedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # Represents any chat message - message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) # The type of event: "message.flagged" in this case - type: str = dc_field(default="message.flagged", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="message.flagged", metadata=dc_config(field_name="type") + ) # The ID of the channel where the message was sent - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) # The number of messages in the channel - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel where the message was sent - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel where the message was sent cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) # The reason for the flag reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # The total number of flags for the user - total_flags: int | None = dc_field(default=None, metadata=dc_config(field_name="total_flags")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + total_flags: int | None = dc_field( + default=None, metadata=dc_config(field_name="total_flags") + ) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) # Custom data - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # Result of the message moderation - details: 'MessageModerationResult | None' = dc_field(default=None, metadata=dc_config(field_name="details")) - flag: 'FlagResponse | None' = dc_field(default=None, metadata=dc_config(field_name="flag")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + details: "MessageModerationResult | None" = dc_field( + default=None, metadata=dc_config(field_name="details") + ) + flag: "FlagResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="flag") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MessageHistoryEntryResponse(DataClassJsonMixin): is_deleted: bool = dc_field(metadata=dc_config(field_name="is_deleted")) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) - message_updated_at: datetime = dc_field(metadata=dc_config(field_name="message_updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - message_updated_by_id: str = dc_field(metadata=dc_config(field_name="message_updated_by_id")) + message_updated_at: datetime = dc_field( + metadata=dc_config( + field_name="message_updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + message_updated_by_id: str = dc_field( + metadata=dc_config(field_name="message_updated_by_id") + ) text: str = dc_field(metadata=dc_config(field_name="text")) - attachments: 'list[Attachment]' = dc_field(metadata=dc_config(field_name="attachments")) + attachments: "list[Attachment]" = dc_field( + metadata=dc_config(field_name="attachments") + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + @dataclass class MessageModerationResult(DataClassJsonMixin): # Action taken by automod action: str = dc_field(metadata=dc_config(field_name="action")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # ID of the message message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # Date/time of the last update - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Whether user has bad karma user_bad_karma: bool = dc_field(metadata=dc_config(field_name="user_bad_karma")) # Karma of the user user_karma: float = dc_field(metadata=dc_config(field_name="user_karma")) # Word that was blocked - blocked_word: str | None = dc_field(default=None, metadata=dc_config(field_name="blocked_word")) + blocked_word: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocked_word") + ) # Name of the blocklist - blocklist_name: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_name")) + blocklist_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist_name") + ) # User who moderated the message - moderated_by: str | None = dc_field(default=None, metadata=dc_config(field_name="moderated_by")) - ai_moderation_response: 'ModerationResponse | None' = dc_field(default=None, metadata=dc_config(field_name="ai_moderation_response")) + moderated_by: str | None = dc_field( + default=None, metadata=dc_config(field_name="moderated_by") + ) + ai_moderation_response: "ModerationResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="ai_moderation_response") + ) # Sets thresholds for AI moderation - moderation_thresholds: 'Thresholds | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_thresholds")) + moderation_thresholds: "Thresholds | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation_thresholds") + ) + @dataclass class MessageNewEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # The number of watchers watcher_count: int = dc_field(metadata=dc_config(field_name="watcher_count")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Represents any chat message - message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) # The type of event: "message.new" in this case type: str = dc_field(default="message.new", metadata=dc_config(field_name="type")) # The ID of the channel where the message was sent - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) # The number of messages in the channel - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel where the message was sent - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel where the message was sent cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) # The author of the parent message - parent_author: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_author")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + parent_author: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_author") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - total_unread_count: int | None = dc_field(default=None, metadata=dc_config(field_name="total_unread_count")) - unread_channels: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_channels")) + total_unread_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="total_unread_count") + ) + unread_channels: int | None = dc_field( + default=None, metadata=dc_config(field_name="unread_channels") + ) # The number of unread messages - unread_count: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_count")) + unread_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="unread_count") + ) # The participants of the thread - thread_participants: 'list[UserResponseCommonFields] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) + thread_participants: "list[UserResponseCommonFields] | None" = dc_field( + default=None, metadata=dc_config(field_name="thread_participants") + ) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) - grouped_unread_channels: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="grouped_unread_channels")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + grouped_unread_channels: "dict[str, int] | None" = dc_field( + default=None, metadata=dc_config(field_name="grouped_unread_channels") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MessageOptions(DataClassJsonMixin): - include_thread_participants: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_thread_participants")) - member_custom_include: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="member_custom_include")) + include_thread_participants: bool | None = dc_field( + default=None, metadata=dc_config(field_name="include_thread_participants") + ) + member_custom_include: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="member_custom_include") + ) + @dataclass class MessagePaginationParams(DataClassJsonMixin): # The timestamp to get messages with a created_at timestamp greater than - created_at_after: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at_after", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at_after: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="created_at_after", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The timestamp to get messages with a created_at timestamp greater than or equal to - created_at_after_or_equal: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at_after_or_equal", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at_after_or_equal: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="created_at_after_or_equal", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The result will be a set of messages, that are both older and newer than the created_at timestamp provided, distributed evenly around the timestamp - created_at_around: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at_around", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at_around: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="created_at_around", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The timestamp to get messages with a created_at timestamp smaller than - created_at_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at_before: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="created_at_before", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The timestamp to get messages with a created_at timestamp smaller than or equal to - created_at_before_or_equal: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at_before_or_equal", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at_before_or_equal: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="created_at_before_or_equal", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The result will be a set of messages, that are both older and newer than the message with the provided ID, and the message with the ID provided will be in the middle of the set - id_around: str | None = dc_field(default=None, metadata=dc_config(field_name="id_around")) + id_around: str | None = dc_field( + default=None, metadata=dc_config(field_name="id_around") + ) # The ID of the message to get messages with a timestamp greater than id_gt: str | None = dc_field(default=None, metadata=dc_config(field_name="id_gt")) # The ID of the message to get messages with a timestamp greater than or equal to @@ -8800,36 +17569,71 @@ class MessagePaginationParams(DataClassJsonMixin): id_lt: str | None = dc_field(default=None, metadata=dc_config(field_name="id_lt")) # The ID of the message to get messages with a timestamp smaller than or equal to id_lte: str | None = dc_field(default=None, metadata=dc_config(field_name="id_lte")) - # The maximum number of messages to return (max limit + # The maximum number of messages to return (max limit limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) + @dataclass class MessageReadEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "message.read" in this case type: str = dc_field(default="message.read", metadata=dc_config(field_name="type")) # The ID of the channel where the message was read - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) # The number of messages in the channel - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel where the message was read - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel where the message was read cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) # The ID of the last read message - last_read_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="last_read_message_id")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_read_message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="last_read_message_id") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) - thread: 'ThreadResponse | None' = dc_field(default=None, metadata=dc_config(field_name="thread")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + thread: "ThreadResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="thread") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MessageRequest(DataClassJsonMixin): @@ -8837,57 +17641,119 @@ class MessageRequest(DataClassJsonMixin): html: str | None = dc_field(default=None, metadata=dc_config(field_name="html")) # Message ID is unique string identifier of the message id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) - mentioned_channel: bool | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_channel")) - mentioned_here: bool | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_here")) + mentioned_channel: bool | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_channel") + ) + mentioned_here: bool | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_here") + ) # Should be empty if `text` is provided. Can only be set when using server-side API mml: str | None = dc_field(default=None, metadata=dc_config(field_name="mml")) # ID of parent message (thread) - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) # Date when pinned message expires - pin_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pin_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + pin_expires: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="pin_expires", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Whether message is pinned or not - pinned: bool | None = dc_field(default=None, metadata=dc_config(field_name="pinned")) + pinned: bool | None = dc_field( + default=None, metadata=dc_config(field_name="pinned") + ) # Date when message got pinned - pinned_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pinned_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + pinned_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="pinned_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Identifier of the poll to include in the message - poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) - quoted_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="quoted_message_id")) + poll_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="poll_id") + ) + quoted_message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="quoted_message_id") + ) # Whether thread reply should be shown in the channel as well - show_in_channel: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_in_channel")) + show_in_channel: bool | None = dc_field( + default=None, metadata=dc_config(field_name="show_in_channel") + ) # Whether message is silent or not - silent: bool | None = dc_field(default=None, metadata=dc_config(field_name="silent")) + silent: bool | None = dc_field( + default=None, metadata=dc_config(field_name="silent") + ) # Text of the message. Should be empty if `mml` is provided text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) # Contains type of the message. One of: regular, system type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Array of message attachments - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) # List of user group IDs to mention. Group members who are also channel members will receive push notifications. Max 10 groups - mentioned_group_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_group_ids")) - mentioned_roles: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_roles")) + mentioned_group_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_group_ids") + ) + mentioned_roles: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_roles") + ) # Array of user IDs to mention - mentioned_users: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_users")) + mentioned_users: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_users") + ) # A list of user ids that have restricted visibility to the message - restricted_visibility: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="restricted_visibility")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - shared_location: 'SharedLocation | None' = dc_field(default=None, metadata=dc_config(field_name="shared_location")) + restricted_visibility: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="restricted_visibility") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + shared_location: "SharedLocation | None" = dc_field( + default=None, metadata=dc_config(field_name="shared_location") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MessageResponse(DataClassJsonMixin): # Channel unique identifier in : format cid: str = dc_field(metadata=dc_config(field_name="cid")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - deleted_reply_count: int = dc_field(metadata=dc_config(field_name="deleted_reply_count")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + deleted_reply_count: int = dc_field( + metadata=dc_config(field_name="deleted_reply_count") + ) # Contains HTML markup of the message. Can only be set when using server-side API html: str = dc_field(metadata=dc_config(field_name="html")) # Message ID is unique string identifier of the message id: str = dc_field(metadata=dc_config(field_name="id")) # Whether the message mentioned the channel tag - mentioned_channel: bool = dc_field(metadata=dc_config(field_name="mentioned_channel")) + mentioned_channel: bool = dc_field( + metadata=dc_config(field_name="mentioned_channel") + ) # Whether the message mentioned online users with @here tag mentioned_here: bool = dc_field(metadata=dc_config(field_name="mentioned_here")) # Whether message is pinned or not @@ -8903,158 +17769,357 @@ class MessageResponse(DataClassJsonMixin): # Contains type of the message. One of: regular, ephemeral, error, reply, system, deleted type: str = dc_field(metadata=dc_config(field_name="type")) # Date/time of the last update - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Array of message attachments - attachments: 'list[Attachment]' = dc_field(metadata=dc_config(field_name="attachments")) + attachments: "list[Attachment]" = dc_field( + metadata=dc_config(field_name="attachments") + ) # List of 10 latest reactions to this message - latest_reactions: 'list[ReactionResponse]' = dc_field(metadata=dc_config(field_name="latest_reactions")) + latest_reactions: "list[ReactionResponse]" = dc_field( + metadata=dc_config(field_name="latest_reactions") + ) # List of mentioned users - mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) + mentioned_users: "list[UserResponse]" = dc_field( + metadata=dc_config(field_name="mentioned_users") + ) # List of 10 latest reactions of authenticated user to this message - own_reactions: 'list[ReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) + own_reactions: "list[ReactionResponse]" = dc_field( + metadata=dc_config(field_name="own_reactions") + ) # A list of user ids that have restricted visibility to the message, if the list is not empty, the message is only visible to the users in the list - restricted_visibility: list[str] = dc_field(metadata=dc_config(field_name="restricted_visibility")) + restricted_visibility: list[str] = dc_field( + metadata=dc_config(field_name="restricted_visibility") + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # An object containing number of reactions of each type. Key: reaction type (string), value: number of reactions (int) - reaction_counts: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="reaction_counts")) + reaction_counts: "dict[str, int]" = dc_field( + metadata=dc_config(field_name="reaction_counts") + ) # An object containing scores of reactions of each type. Key: reaction type (string), value: total score of reactions (int) - reaction_scores: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="reaction_scores")) + reaction_scores: "dict[str, int]" = dc_field( + metadata=dc_config(field_name="reaction_scores") + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # Contains provided slash command - command: str | None = dc_field(default=None, metadata=dc_config(field_name="command")) + command: str | None = dc_field( + default=None, metadata=dc_config(field_name="command") + ) # Date/time of deletion - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - deleted_for_me: bool | None = dc_field(default=None, metadata=dc_config(field_name="deleted_for_me")) - message_text_updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="message_text_updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + deleted_for_me: bool | None = dc_field( + default=None, metadata=dc_config(field_name="deleted_for_me") + ) + message_text_updated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="message_text_updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Should be empty if `text` is provided. Can only be set when using server-side API mml: str | None = dc_field(default=None, metadata=dc_config(field_name="mml")) # ID of parent message (thread) - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) # Date when pinned message expires - pin_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pin_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + pin_expires: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="pin_expires", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Date when message got pinned - pinned_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pinned_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + pinned_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="pinned_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Identifier of the poll to include in the message - poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) - quoted_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="quoted_message_id")) + poll_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="poll_id") + ) + quoted_message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="quoted_message_id") + ) # Whether thread reply should be shown in the channel as well - show_in_channel: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_in_channel")) + show_in_channel: bool | None = dc_field( + default=None, metadata=dc_config(field_name="show_in_channel") + ) # List of user group IDs mentioned in the message. Group members who are also channel members will receive push notifications based on their push preferences. Max 10 groups - mentioned_group_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_group_ids")) + mentioned_group_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_group_ids") + ) # List of mentioned user group objects. - mentioned_groups: 'list[UserGroupResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_groups")) + mentioned_groups: "list[UserGroupResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="mentioned_groups") + ) # List of roles mentioned in the message (e.g. admin, channel_moderator, custom roles). Members with matching roles will receive push notifications based on their push preferences. Max 10 roles - mentioned_roles: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_roles")) + mentioned_roles: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_roles") + ) # List of users who participate in thread - thread_participants: 'list[UserResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) - draft: 'DraftResponse | None' = dc_field(default=None, metadata=dc_config(field_name="draft")) + thread_participants: "list[UserResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="thread_participants") + ) + draft: "DraftResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="draft") + ) # Object with translations. Key `language` contains the original language key. Other keys contain translations - i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) + i18n: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="i18n") + ) # Contains image moderation information - image_labels: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="image_labels")) - member: 'ChannelMemberPartialResponse | None' = dc_field(default=None, metadata=dc_config(field_name="member")) + image_labels: "dict[str, list[str]] | None" = dc_field( + default=None, metadata=dc_config(field_name="image_labels") + ) + member: "ChannelMemberPartialResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="member") + ) # Channel member data for the users mentioned in the message, keyed by user id. Only present when the app has member custom on mentioned users enabled, and only for the first two mentioned users of each message - mentioned_channel_members: 'dict[str, ChannelMemberPartialResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_channel_members")) - moderation: 'ModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) + mentioned_channel_members: "dict[str, ChannelMemberPartialResponse] | None" = ( + dc_field( + default=None, metadata=dc_config(field_name="mentioned_channel_members") + ) + ) + moderation: "ModerationV2Response | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation") + ) # User response object - pinned_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="pinned_by")) - poll: 'PollResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll")) + pinned_by: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="pinned_by") + ) + poll: "PollResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="poll") + ) # Represents any chat message - quoted_message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="quoted_message")) - reaction_groups: 'dict[str, ReactionGroupResponse | None] | None' = dc_field(default=None, metadata=dc_config(field_name="reaction_groups")) - reminder: 'ReminderResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="reminder")) - shared_location: 'SharedLocationResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="shared_location")) + quoted_message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="quoted_message") + ) + reaction_groups: "dict[str, ReactionGroupResponse | None] | None" = dc_field( + default=None, metadata=dc_config(field_name="reaction_groups") + ) + reminder: "ReminderResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="reminder") + ) + shared_location: "SharedLocationResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="shared_location") + ) + @dataclass class MessageStatsResponse(DataClassJsonMixin): - count_over_time: 'list[CountByMinuteResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="count_over_time")) + count_over_time: "list[CountByMinuteResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="count_over_time") + ) + @dataclass class MessageUnblockedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Represents any chat message - message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) # The type of event: "message.unblocked" in this case - type: str = dc_field(default="message.unblocked", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="message.unblocked", metadata=dc_config(field_name="type") + ) # The CID of the channel where the message was unblocked cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MessageUndeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Represents any chat message - message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) # The type of event: "message.undeleted" in this case - type: str = dc_field(default="message.undeleted", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="message.undeleted", metadata=dc_config(field_name="type") + ) # The ID of the channel where the message was sent - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) # The number of messages in the channel - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel where the message was sent - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel where the message was sent cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + @dataclass class MessageUpdate(DataClassJsonMixin): - old_text: str | None = dc_field(default=None, metadata=dc_config(field_name="old_text")) - change_set: 'MessageChangeSet | None' = dc_field(default=None, metadata=dc_config(field_name="change_set")) + old_text: str | None = dc_field( + default=None, metadata=dc_config(field_name="old_text") + ) + change_set: "MessageChangeSet | None" = dc_field( + default=None, metadata=dc_config(field_name="change_set") + ) + @dataclass class MessageUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Represents any chat message - message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) # The type of event: "message.updated" in this case - type: str = dc_field(default="message.updated", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="message.updated", metadata=dc_config(field_name="type") + ) # The ID of the channel where the message was sent - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) # The number of messages in the channel - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel where the message was sent - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel where the message was sent cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) - message_update: 'MessageUpdate | None' = dc_field(default=None, metadata=dc_config(field_name="message_update")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + message_update: "MessageUpdate | None" = dc_field( + default=None, metadata=dc_config(field_name="message_update") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MessageWithChannelResponse(DataClassJsonMixin): # Channel unique identifier in : format cid: str = dc_field(metadata=dc_config(field_name="cid")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - deleted_reply_count: int = dc_field(metadata=dc_config(field_name="deleted_reply_count")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + deleted_reply_count: int = dc_field( + metadata=dc_config(field_name="deleted_reply_count") + ) # Contains HTML markup of the message. Can only be set when using server-side API html: str = dc_field(metadata=dc_config(field_name="html")) # Message ID is unique string identifier of the message id: str = dc_field(metadata=dc_config(field_name="id")) # Whether the message mentioned the channel tag - mentioned_channel: bool = dc_field(metadata=dc_config(field_name="mentioned_channel")) + mentioned_channel: bool = dc_field( + metadata=dc_config(field_name="mentioned_channel") + ) # Whether the message mentioned online users with @here tag mentioned_here: bool = dc_field(metadata=dc_config(field_name="mentioned_here")) # Whether message is pinned or not @@ -9070,103 +18135,226 @@ class MessageWithChannelResponse(DataClassJsonMixin): # Contains type of the message. One of: regular, ephemeral, error, reply, system, deleted type: str = dc_field(metadata=dc_config(field_name="type")) # Date/time of the last update - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Array of message attachments - attachments: 'list[Attachment]' = dc_field(metadata=dc_config(field_name="attachments")) + attachments: "list[Attachment]" = dc_field( + metadata=dc_config(field_name="attachments") + ) # List of 10 latest reactions to this message - latest_reactions: 'list[ReactionResponse]' = dc_field(metadata=dc_config(field_name="latest_reactions")) + latest_reactions: "list[ReactionResponse]" = dc_field( + metadata=dc_config(field_name="latest_reactions") + ) # List of mentioned users - mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) + mentioned_users: "list[UserResponse]" = dc_field( + metadata=dc_config(field_name="mentioned_users") + ) # List of 10 latest reactions of authenticated user to this message - own_reactions: 'list[ReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) + own_reactions: "list[ReactionResponse]" = dc_field( + metadata=dc_config(field_name="own_reactions") + ) # A list of user ids that have restricted visibility to the message, if the list is not empty, the message is only visible to the users in the list - restricted_visibility: list[str] = dc_field(metadata=dc_config(field_name="restricted_visibility")) + restricted_visibility: list[str] = dc_field( + metadata=dc_config(field_name="restricted_visibility") + ) # Represents channel in chat - channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # An object containing number of reactions of each type. Key: reaction type (string), value: number of reactions (int) - reaction_counts: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="reaction_counts")) + reaction_counts: "dict[str, int]" = dc_field( + metadata=dc_config(field_name="reaction_counts") + ) # An object containing scores of reactions of each type. Key: reaction type (string), value: total score of reactions (int) - reaction_scores: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="reaction_scores")) + reaction_scores: "dict[str, int]" = dc_field( + metadata=dc_config(field_name="reaction_scores") + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # Contains provided slash command - command: str | None = dc_field(default=None, metadata=dc_config(field_name="command")) + command: str | None = dc_field( + default=None, metadata=dc_config(field_name="command") + ) # Date/time of deletion - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - deleted_for_me: bool | None = dc_field(default=None, metadata=dc_config(field_name="deleted_for_me")) - message_text_updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="message_text_updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + deleted_for_me: bool | None = dc_field( + default=None, metadata=dc_config(field_name="deleted_for_me") + ) + message_text_updated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="message_text_updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Should be empty if `text` is provided. Can only be set when using server-side API mml: str | None = dc_field(default=None, metadata=dc_config(field_name="mml")) # ID of parent message (thread) - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) # Date when pinned message expires - pin_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pin_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + pin_expires: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="pin_expires", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Date when message got pinned - pinned_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pinned_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + pinned_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="pinned_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Identifier of the poll to include in the message - poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) - quoted_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="quoted_message_id")) + poll_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="poll_id") + ) + quoted_message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="quoted_message_id") + ) # Whether thread reply should be shown in the channel as well - show_in_channel: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_in_channel")) + show_in_channel: bool | None = dc_field( + default=None, metadata=dc_config(field_name="show_in_channel") + ) # List of user group IDs mentioned in the message. Group members who are also channel members will receive push notifications based on their push preferences. Max 10 groups - mentioned_group_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_group_ids")) + mentioned_group_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_group_ids") + ) # List of mentioned user group objects. - mentioned_groups: 'list[UserGroupResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_groups")) + mentioned_groups: "list[UserGroupResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="mentioned_groups") + ) # List of roles mentioned in the message (e.g. admin, channel_moderator, custom roles). Members with matching roles will receive push notifications based on their push preferences. Max 10 roles - mentioned_roles: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_roles")) + mentioned_roles: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_roles") + ) # List of users who participate in thread - thread_participants: 'list[UserResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) - draft: 'DraftResponse | None' = dc_field(default=None, metadata=dc_config(field_name="draft")) + thread_participants: "list[UserResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="thread_participants") + ) + draft: "DraftResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="draft") + ) # Object with translations. Key `language` contains the original language key. Other keys contain translations - i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) + i18n: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="i18n") + ) # Contains image moderation information - image_labels: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="image_labels")) - member: 'ChannelMemberPartialResponse | None' = dc_field(default=None, metadata=dc_config(field_name="member")) + image_labels: "dict[str, list[str]] | None" = dc_field( + default=None, metadata=dc_config(field_name="image_labels") + ) + member: "ChannelMemberPartialResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="member") + ) # Channel member data for the users mentioned in the message, keyed by user id. Only present when the app has member custom on mentioned users enabled, and only for the first two mentioned users of each message - mentioned_channel_members: 'dict[str, ChannelMemberPartialResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_channel_members")) - moderation: 'ModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) + mentioned_channel_members: "dict[str, ChannelMemberPartialResponse] | None" = ( + dc_field( + default=None, metadata=dc_config(field_name="mentioned_channel_members") + ) + ) + moderation: "ModerationV2Response | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation") + ) # User response object - pinned_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="pinned_by")) - poll: 'PollResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll")) + pinned_by: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="pinned_by") + ) + poll: "PollResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="poll") + ) # Represents any chat message - quoted_message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="quoted_message")) - reaction_groups: 'dict[str, ReactionGroupResponse | None] | None' = dc_field(default=None, metadata=dc_config(field_name="reaction_groups")) - reminder: 'ReminderResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="reminder")) - shared_location: 'SharedLocationResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="shared_location")) + quoted_message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="quoted_message") + ) + reaction_groups: "dict[str, ReactionGroupResponse | None] | None" = dc_field( + default=None, metadata=dc_config(field_name="reaction_groups") + ) + reminder: "ReminderResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="reminder") + ) + shared_location: "SharedLocationResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="shared_location") + ) + @dataclass class MetricDescriptor(DataClassJsonMixin): label: str = dc_field(metadata=dc_config(field_name="label")) - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) unit: str | None = dc_field(default=None, metadata=dc_config(field_name="unit")) + @dataclass class MetricStats(DataClassJsonMixin): # Aggregated total value total: int = dc_field(metadata=dc_config(field_name="total")) # Per-day values (only present in daily mode) - daily: 'list[DailyValue] | None' = dc_field(default=None, metadata=dc_config(field_name="daily")) + daily: "list[DailyValue] | None" = dc_field( + default=None, metadata=dc_config(field_name="daily") + ) + @dataclass class MetricThreshold(DataClassJsonMixin): level: str = dc_field(metadata=dc_config(field_name="level")) operator: str = dc_field(metadata=dc_config(field_name="operator")) value: float = dc_field(metadata=dc_config(field_name="value")) - value_unit: str | None = dc_field(default=None, metadata=dc_config(field_name="value_unit")) - window_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="window_seconds")) + value_unit: str | None = dc_field( + default=None, metadata=dc_config(field_name="value_unit") + ) + window_seconds: int | None = dc_field( + default=None, metadata=dc_config(field_name="window_seconds") + ) + @dataclass class MetricTimeSeries(DataClassJsonMixin): - data_points: 'list[list[float]] | None' = dc_field(default=None, metadata=dc_config(field_name="data_points")) + data_points: "list[list[float]] | None" = dc_field( + default=None, metadata=dc_config(field_name="data_points") + ) + @dataclass class MetricsPct(DataClassJsonMixin): - freezes: float | None = dc_field(default=None, metadata=dc_config(field_name="freezes")) + freezes: float | None = dc_field( + default=None, metadata=dc_config(field_name="freezes") + ) geo: float | None = dc_field(default=None, metadata=dc_config(field_name="geo")) - jitter: float | None = dc_field(default=None, metadata=dc_config(field_name="jitter")) - latency: float | None = dc_field(default=None, metadata=dc_config(field_name="latency")) - quality_score: float | None = dc_field(default=None, metadata=dc_config(field_name="quality_score")) + jitter: float | None = dc_field( + default=None, metadata=dc_config(field_name="jitter") + ) + latency: float | None = dc_field( + default=None, metadata=dc_config(field_name="latency") + ) + quality_score: float | None = dc_field( + default=None, metadata=dc_config(field_name="quality_score") + ) + @dataclass class ModerationActionConfigResponse(DataClassJsonMixin): @@ -9182,250 +18370,630 @@ class ModerationActionConfigResponse(DataClassJsonMixin): order: int = dc_field(metadata=dc_config(field_name="order")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # Queue type this action config belongs to - queue_type: str | None = dc_field(default=None, metadata=dc_config(field_name="queue_type")) + queue_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="queue_type") + ) # Custom data for the action - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class ModerationAnalysisFailedEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - type: str = dc_field(default="moderation.analysis.failed", metadata=dc_config(field_name="type")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + type: str = dc_field( + default="moderation.analysis.failed", metadata=dc_config(field_name="type") + ) # The moderation policy key the request targeted. - config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) + config_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="config_key") + ) # Echo of the `entity_creator_id` on the /analyze request. - entity_creator_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_creator_id")) + entity_creator_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_creator_id") + ) # Echo of the `entity_id` on the /analyze request. - entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) + entity_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_id") + ) # Echo of the `entity_type` on the /analyze request. - entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + entity_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Echo of the request's `content_ids`, keyed by text/image label. On keyframe and caption streams every request repeats the same entity_type/entity_id/entity_creator_id, so this is what identifies the specific submission that went unscreened. - content_ids: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="content_ids")) + content_ids: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="content_ids") + ) # Echo of the `custom` metadata on the /analyze request. - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class ModerationBanResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class ModerationCallResponse(DataClassJsonMixin): backstage: bool = dc_field(metadata=dc_config(field_name="backstage")) captioning: bool = dc_field(metadata=dc_config(field_name="captioning")) cid: str = dc_field(metadata=dc_config(field_name="cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - current_session_id: str = dc_field(metadata=dc_config(field_name="current_session_id")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + current_session_id: str = dc_field( + metadata=dc_config(field_name="current_session_id") + ) id: str = dc_field(metadata=dc_config(field_name="id")) recording: bool = dc_field(metadata=dc_config(field_name="recording")) transcribing: bool = dc_field(metadata=dc_config(field_name="transcribing")) translating: bool = dc_field(metadata=dc_config(field_name="translating")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - blocked_user_ids: list[str] = dc_field(metadata=dc_config(field_name="blocked_user_ids")) - custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) - ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - join_ahead_time_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="join_ahead_time_seconds")) - routing_number: str | None = dc_field(default=None, metadata=dc_config(field_name="routing_number")) - starts_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="starts_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + blocked_user_ids: list[str] = dc_field( + metadata=dc_config(field_name="blocked_user_ids") + ) + custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + channel_cid: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_cid") + ) + ended_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="ended_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + join_ahead_time_seconds: int | None = dc_field( + default=None, metadata=dc_config(field_name="join_ahead_time_seconds") + ) + routing_number: str | None = dc_field( + default=None, metadata=dc_config(field_name="routing_number") + ) + starts_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="starts_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # User response object - created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) + created_by: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) + @dataclass class ModerationCheckCompletedEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The ID of entity which was moderated entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) # The type of the entity which was moderated entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) # The recommended action - recommended_action: str = dc_field(metadata=dc_config(field_name="recommended_action")) + recommended_action: str = dc_field( + metadata=dc_config(field_name="recommended_action") + ) # The review queue item ID - review_queue_item_id: str = dc_field(metadata=dc_config(field_name="review_queue_item_id")) + review_queue_item_id: str = dc_field( + metadata=dc_config(field_name="review_queue_item_id") + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="moderation_check.completed", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="moderation_check.completed", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class ModerationConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) key: str | None = dc_field(default=None, metadata=dc_config(field_name="key")) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - supported_video_call_harm_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="supported_video_call_harm_types")) - ai_image_config: 'AIImageConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ai_image_config")) - ai_image_lite_config: 'BodyguardImageAnalysisConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ai_image_lite_config")) - ai_text_config: 'AITextConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ai_text_config")) - ai_video_config: 'AIVideoConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ai_video_config")) - automod_platform_circumvention_config: 'AutomodPlatformCircumventionConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_platform_circumvention_config")) - automod_semantic_filters_config: 'AutomodSemanticFiltersConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_semantic_filters_config")) - automod_toxicity_config: 'AutomodToxicityConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_toxicity_config")) - block_list_config: 'BlockListConfig | None' = dc_field(default=None, metadata=dc_config(field_name="block_list_config")) - flood_config: 'FloodConfig | None' = dc_field(default=None, metadata=dc_config(field_name="flood_config")) - google_vision_config: 'GoogleVisionConfig | None' = dc_field(default=None, metadata=dc_config(field_name="google_vision_config")) - llm_config: 'LLMConfig | None' = dc_field(default=None, metadata=dc_config(field_name="llm_config")) - velocity_filter_config: 'VelocityFilterConfig | None' = dc_field(default=None, metadata=dc_config(field_name="velocity_filter_config")) - video_call_rule_config: 'VideoCallRuleConfig | None' = dc_field(default=None, metadata=dc_config(field_name="video_call_rule_config")) + updated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + supported_video_call_harm_types: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="supported_video_call_harm_types") + ) + ai_image_config: "AIImageConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="ai_image_config") + ) + ai_image_lite_config: "BodyguardImageAnalysisConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="ai_image_lite_config") + ) + ai_text_config: "AITextConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="ai_text_config") + ) + ai_video_config: "AIVideoConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="ai_video_config") + ) + automod_platform_circumvention_config: "AutomodPlatformCircumventionConfig | None" = dc_field( + default=None, + metadata=dc_config(field_name="automod_platform_circumvention_config"), + ) + automod_semantic_filters_config: "AutomodSemanticFiltersConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="automod_semantic_filters_config") + ) + automod_toxicity_config: "AutomodToxicityConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="automod_toxicity_config") + ) + block_list_config: "BlockListConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="block_list_config") + ) + flood_config: "FloodConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="flood_config") + ) + google_vision_config: "GoogleVisionConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="google_vision_config") + ) + llm_config: "LLMConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="llm_config") + ) + velocity_filter_config: "VelocityFilterConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="velocity_filter_config") + ) + video_call_rule_config: "VideoCallRuleConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="video_call_rule_config") + ) + @dataclass class ModerationCustomActionEvent(DataClassJsonMixin): # The ID of the custom action that was executed action_id: str = dc_field(metadata=dc_config(field_name="action_id")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - review_queue_item: 'ReviewQueueItemResponse' = dc_field(metadata=dc_config(field_name="review_queue_item")) - type: str = dc_field(default="moderation.custom_action", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + review_queue_item: "ReviewQueueItemResponse" = dc_field( + metadata=dc_config(field_name="review_queue_item") + ) + type: str = dc_field( + default="moderation.custom_action", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Additional options passed to the custom action - action_options: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="action_options")) + action_options: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="action_options") + ) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + @dataclass class ModerationDashboardPreferences(DataClassJsonMixin): - async_review_queue_upsert: bool | None = dc_field(default=None, metadata=dc_config(field_name="async_review_queue_upsert")) - block_foreign_cdn_attachments: bool | None = dc_field(default=None, metadata=dc_config(field_name="block_foreign_cdn_attachments")) - custom_views_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="custom_views_enabled")) - disable_audit_logs: bool | None = dc_field(default=None, metadata=dc_config(field_name="disable_audit_logs")) - disable_flagging_reviewed_entity: bool | None = dc_field(default=None, metadata=dc_config(field_name="disable_flagging_reviewed_entity")) - escalation_queue_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="escalation_queue_enabled")) - flag_user_on_flagged_content: bool | None = dc_field(default=None, metadata=dc_config(field_name="flag_user_on_flagged_content")) - include_attachment_payload: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_attachment_payload")) - media_queue_blur_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="media_queue_blur_enabled")) - allowed_moderation_action_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_moderation_action_reasons")) - escalation_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="escalation_reasons")) - filterable_custom_keys: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filterable_custom_keys")) - keyframe_classifications_map: 'dict[str, dict[str, bool]] | None' = dc_field(default=None, metadata=dc_config(field_name="keyframe_classifications_map")) - overview_dashboard: 'OverviewDashboardConfig | None' = dc_field(default=None, metadata=dc_config(field_name="overview_dashboard")) + async_review_queue_upsert: bool | None = dc_field( + default=None, metadata=dc_config(field_name="async_review_queue_upsert") + ) + block_foreign_cdn_attachments: bool | None = dc_field( + default=None, metadata=dc_config(field_name="block_foreign_cdn_attachments") + ) + custom_views_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="custom_views_enabled") + ) + disable_audit_logs: bool | None = dc_field( + default=None, metadata=dc_config(field_name="disable_audit_logs") + ) + disable_flagging_reviewed_entity: bool | None = dc_field( + default=None, metadata=dc_config(field_name="disable_flagging_reviewed_entity") + ) + escalation_queue_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="escalation_queue_enabled") + ) + flag_user_on_flagged_content: bool | None = dc_field( + default=None, metadata=dc_config(field_name="flag_user_on_flagged_content") + ) + include_attachment_payload: bool | None = dc_field( + default=None, metadata=dc_config(field_name="include_attachment_payload") + ) + media_queue_blur_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="media_queue_blur_enabled") + ) + allowed_moderation_action_reasons: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowed_moderation_action_reasons") + ) + escalation_reasons: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="escalation_reasons") + ) + filterable_custom_keys: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="filterable_custom_keys") + ) + keyframe_classifications_map: "dict[str, dict[str, bool]] | None" = dc_field( + default=None, metadata=dc_config(field_name="keyframe_classifications_map") + ) + overview_dashboard: "OverviewDashboardConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="overview_dashboard") + ) + @dataclass class ModerationFlagResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - result: 'list[dict[str, object]]' = dc_field(metadata=dc_config(field_name="result")) - content_published_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="content_published_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - entity_creator_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_creator_id")) + result: "list[dict[str, object]]" = dc_field( + metadata=dc_config(field_name="result") + ) + content_published_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="content_published_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + entity_creator_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_creator_id") + ) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - review_queue_item_id: str | None = dc_field(default=None, metadata=dc_config(field_name="review_queue_item_id")) - labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="labels")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + review_queue_item_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="review_queue_item_id") + ) + labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="labels") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # Content payload for moderation - moderation_payload: 'ModerationPayloadResponse | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_payload")) - review_queue_item: 'ReviewQueueItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="review_queue_item")) + moderation_payload: "ModerationPayloadResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation_payload") + ) + review_queue_item: "ReviewQueueItemResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="review_queue_item") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ModerationFlaggedEvent(DataClassJsonMixin): # The type of content that was flagged content_type: str = dc_field(metadata=dc_config(field_name="content_type")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The ID of the flagged content object_id: str = dc_field(metadata=dc_config(field_name="object_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="moderation.flagged", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="moderation.flagged", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class ModerationImageAnalysisCompleteEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - type: str = dc_field(default="moderation.image_analysis.complete", metadata=dc_config(field_name="type")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + type: str = dc_field( + default="moderation.image_analysis.complete", + metadata=dc_config(field_name="type"), + ) # The moderation policy key that was applied. - config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) + config_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="config_key") + ) # Echo of the `entity_creator_id` on the /analyze request. - entity_creator_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_creator_id")) + entity_creator_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_creator_id") + ) # Echo of the `entity_id` on the /analyze request. - entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) + entity_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_id") + ) # Echo of the `entity_type` on the /analyze request. - entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + entity_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Review queue row ID for deep-linking into the dashboard. - review_queue_item_id: str | None = dc_field(default=None, metadata=dc_config(field_name="review_queue_item_id")) + review_queue_item_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="review_queue_item_id") + ) # Echo of the `custom` metadata on the /analyze request. - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # Per-image verdicts, same shape as the /analyze HTTP response. Each entry carries `id` when the request supplied `content_ids`. - images: 'dict[str, AnalyzeImageField] | None' = dc_field(default=None, metadata=dc_config(field_name="images")) + images: "dict[str, AnalyzeImageField] | None" = dc_field( + default=None, metadata=dc_config(field_name="images") + ) # Per-text-field verdicts, same shape as the /analyze HTTP response. Each entry carries `id` when the request supplied `content_ids`. - texts: 'dict[str, AnalyzeTextField] | None' = dc_field(default=None, metadata=dc_config(field_name="texts")) + texts: "dict[str, AnalyzeTextField] | None" = dc_field( + default=None, metadata=dc_config(field_name="texts") + ) + @dataclass class ModerationMarkReviewedEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - item: 'ReviewQueueItemResponse' = dc_field(metadata=dc_config(field_name="item")) - type: str = dc_field(default="moderation.mark_reviewed", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + item: "ReviewQueueItemResponse" = dc_field(metadata=dc_config(field_name="item")) + type: str = dc_field( + default="moderation.mark_reviewed", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + @dataclass class ModerationPayload(DataClassJsonMixin): - audios: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="audios")) - image_ordered_keys: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="image_ordered_keys")) - images: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="images")) - other_media: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="other_media")) - text_ordered_keys: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="text_ordered_keys")) - texts: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="texts")) - videos: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="videos")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - image_ids: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="image_ids")) - text_ids: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="text_ids")) + audios: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="audios") + ) + image_ordered_keys: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="image_ordered_keys") + ) + images: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="images") + ) + other_media: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="other_media") + ) + text_ordered_keys: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="text_ordered_keys") + ) + texts: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="texts") + ) + videos: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="videos") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + image_ids: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="image_ids") + ) + text_ids: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="text_ids") + ) + @dataclass class ModerationPayloadRequest(DataClassJsonMixin): # Audio URLs to moderate - audios: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="audios")) + audios: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="audios") + ) # Image URLs to moderate (max 30) - images: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="images")) + images: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="images") + ) # Text content to moderate - texts: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="texts")) + texts: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="texts") + ) # Video URLs to moderate - videos: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="videos")) + videos: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="videos") + ) # Custom data for moderation - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class ModerationPayloadResponse(DataClassJsonMixin): # Audio URLs to moderate - audios: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="audios")) + audios: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="audios") + ) # Caller-supplied keys for images, index-aligned with images[] - image_ordered_keys: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="image_ordered_keys")) + image_ordered_keys: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="image_ordered_keys") + ) # Image URLs to moderate - images: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="images")) + images: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="images") + ) # Media URLs from attachments outside the typed image/video/audio lists (custom attachment types such as GIF pickers) - other_media: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="other_media")) + other_media: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="other_media") + ) # Caller-supplied keys for texts (e.g. "title", "description"), index-aligned with texts[] - text_ordered_keys: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="text_ordered_keys")) + text_ordered_keys: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="text_ordered_keys") + ) # Text content to moderate - texts: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="texts")) + texts: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="texts") + ) # Video URLs to moderate - videos: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="videos")) + videos: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="videos") + ) # Custom data for moderation - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # Caller-supplied content IDs per image key (from content_ids on /analyze) - image_ids: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="image_ids")) + image_ids: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="image_ids") + ) # Caller-supplied content IDs per text key (from content_ids on /analyze) - text_ids: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="text_ids")) + text_ids: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="text_ids") + ) + @dataclass class ModerationQueueResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) created_by: str = dc_field(metadata=dc_config(field_name="created_by")) description: str = dc_field(metadata=dc_config(field_name="description")) id: str = dc_field(metadata=dc_config(field_name="id")) item_count: int = dc_field(metadata=dc_config(field_name="item_count")) name: str = dc_field(metadata=dc_config(field_name="name")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - sort: 'list[dict[str, object]]' = dc_field(metadata=dc_config(field_name="sort")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + sort: "list[dict[str, object]]" = dc_field(metadata=dc_config(field_name="sort")) filters: dict[str, object] = dc_field(metadata=dc_config(field_name="filters")) + @dataclass class ModerationResponse(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) @@ -9433,6 +19001,7 @@ class ModerationResponse(DataClassJsonMixin): spam: float = dc_field(metadata=dc_config(field_name="spam")) toxic: float = dc_field(metadata=dc_config(field_name="toxic")) + @dataclass class ModerationRuleInfo(DataClassJsonMixin): description: str = dc_field(metadata=dc_config(field_name="description")) @@ -9440,27 +19009,60 @@ class ModerationRuleInfo(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) type: str = dc_field(metadata=dc_config(field_name="type")) + @dataclass class ModerationRuleV2Response(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) description: str = dc_field(metadata=dc_config(field_name="description")) enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) id: str = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) rule_type: str = dc_field(metadata=dc_config(field_name="rule_type")) team: str = dc_field(metadata=dc_config(field_name="team")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) config_keys: list[str] = dc_field(metadata=dc_config(field_name="config_keys")) - cooldown_period: str | None = dc_field(default=None, metadata=dc_config(field_name="cooldown_period")) + cooldown_period: str | None = dc_field( + default=None, metadata=dc_config(field_name="cooldown_period") + ) logic: str | None = dc_field(default=None, metadata=dc_config(field_name="logic")) - action_sequences: 'list[CallRuleActionSequence] | None' = dc_field(default=None, metadata=dc_config(field_name="action_sequences")) - conditions: 'list[RuleBuilderCondition] | None' = dc_field(default=None, metadata=dc_config(field_name="conditions")) - groups: 'list[RuleBuilderConditionGroup] | None' = dc_field(default=None, metadata=dc_config(field_name="groups")) - action: 'RuleBuilderAction | None' = dc_field(default=None, metadata=dc_config(field_name="action")) + action_sequences: "list[CallRuleActionSequence] | None" = dc_field( + default=None, metadata=dc_config(field_name="action_sequences") + ) + conditions: "list[RuleBuilderCondition] | None" = dc_field( + default=None, metadata=dc_config(field_name="conditions") + ) + groups: "list[RuleBuilderConditionGroup] | None" = dc_field( + default=None, metadata=dc_config(field_name="groups") + ) + action: "RuleBuilderAction | None" = dc_field( + default=None, metadata=dc_config(field_name="action") + ) + @dataclass class ModerationRulesTriggeredEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The ID of the entity that triggered the rule entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) # The type of the entity (call, user, message, etc.) @@ -9468,230 +19070,490 @@ class ModerationRulesTriggeredEvent(DataClassJsonMixin): # The ID of the user who triggered the rule user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # Array of action types that were triggered - triggered_actions: list[str] = dc_field(metadata=dc_config(field_name="triggered_actions")) + triggered_actions: list[str] = dc_field( + metadata=dc_config(field_name="triggered_actions") + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - rule: 'ModerationRuleInfo' = dc_field(metadata=dc_config(field_name="rule")) - type: str = dc_field(default="moderation_rule.triggered", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + rule: "ModerationRuleInfo" = dc_field(metadata=dc_config(field_name="rule")) + type: str = dc_field( + default="moderation_rule.triggered", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The review queue item ID if applicable - review_queue_item_id: str | None = dc_field(default=None, metadata=dc_config(field_name="review_queue_item_id")) + review_queue_item_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="review_queue_item_id") + ) # The violation number for call rules (optional) - violation_number: int | None = dc_field(default=None, metadata=dc_config(field_name="violation_number")) + violation_number: int | None = dc_field( + default=None, metadata=dc_config(field_name="violation_number") + ) # Ordered list of contents whose verdicts contributed to an aggregation rule's threshold. Populated only for aggregation rules when callers supplied `content_ids`. - matched_contents: 'list[MatchedContent] | None' = dc_field(default=None, metadata=dc_config(field_name="matched_contents")) + matched_contents: "list[MatchedContent] | None" = dc_field( + default=None, metadata=dc_config(field_name="matched_contents") + ) + @dataclass class ModerationTextAnalysisCompleteEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - type: str = dc_field(default="moderation.text_analysis.complete", metadata=dc_config(field_name="type")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + type: str = dc_field( + default="moderation.text_analysis.complete", + metadata=dc_config(field_name="type"), + ) # The moderation policy key that was applied. - config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) + config_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="config_key") + ) # Echo of the `entity_creator_id` on the /analyze request. - entity_creator_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_creator_id")) + entity_creator_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_creator_id") + ) # Echo of the `entity_id` on the /analyze request. - entity_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_id")) + entity_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_id") + ) # Echo of the `entity_type` on the /analyze request. - entity_type: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + entity_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Review queue row ID for deep-linking into the dashboard. - review_queue_item_id: str | None = dc_field(default=None, metadata=dc_config(field_name="review_queue_item_id")) + review_queue_item_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="review_queue_item_id") + ) # Echo of the `custom` metadata on the /analyze request. - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # Per-text-field verdicts, same shape as the /analyze HTTP response. Each entry carries `id` when the request supplied `content_ids`. - texts: 'dict[str, AnalyzeTextField] | None' = dc_field(default=None, metadata=dc_config(field_name="texts")) + texts: "dict[str, AnalyzeTextField] | None" = dc_field( + default=None, metadata=dc_config(field_name="texts") + ) + @dataclass class ModerationV2Response(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) original_text: str = dc_field(metadata=dc_config(field_name="original_text")) - blocklist_matched: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_matched")) - platform_circumvented: bool | None = dc_field(default=None, metadata=dc_config(field_name="platform_circumvented")) - semantic_filter_matched: str | None = dc_field(default=None, metadata=dc_config(field_name="semantic_filter_matched")) - blocklists_matched: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="blocklists_matched")) - image_harms: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="image_harms")) - text_harms: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="text_harms")) + blocklist_matched: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist_matched") + ) + platform_circumvented: bool | None = dc_field( + default=None, metadata=dc_config(field_name="platform_circumvented") + ) + semantic_filter_matched: str | None = dc_field( + default=None, metadata=dc_config(field_name="semantic_filter_matched") + ) + blocklists_matched: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="blocklists_matched") + ) + image_harms: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="image_harms") + ) + text_harms: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="text_harms") + ) + @dataclass class MuteChannelRequest(DataClassJsonMixin): # Duration of mute in milliseconds - expiration: int | None = dc_field(default=None, metadata=dc_config(field_name="expiration")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + expiration: int | None = dc_field( + default=None, metadata=dc_config(field_name="expiration") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Channel CIDs to mute (if multiple channels) - channel_cids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="channel_cids")) + channel_cids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_cids") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MuteChannelResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Object with mutes (if multiple channels were muted) - channel_mutes: 'list[ChannelMute] | None' = dc_field(default=None, metadata=dc_config(field_name="channel_mutes")) - channel_mute: 'ChannelMute | None' = dc_field(default=None, metadata=dc_config(field_name="channel_mute")) - own_user: 'OwnUserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="own_user")) + channel_mutes: "list[ChannelMute] | None" = dc_field( + default=None, metadata=dc_config(field_name="channel_mutes") + ) + channel_mute: "ChannelMute | None" = dc_field( + default=None, metadata=dc_config(field_name="channel_mute") + ) + own_user: "OwnUserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="own_user") + ) + @dataclass class MuteRequest(DataClassJsonMixin): # User IDs to mute (if multiple users) target_ids: list[str] = dc_field(metadata=dc_config(field_name="target_ids")) # Duration of mute in minutes - timeout: int | None = dc_field(default=None, metadata=dc_config(field_name="timeout")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + timeout: int | None = dc_field( + default=None, metadata=dc_config(field_name="timeout") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class MuteResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Object with mutes (if multiple users were muted) - mutes: 'list[UserMuteResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mutes")) + mutes: "list[UserMuteResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="mutes") + ) # A list of users that can't be found. Common cause for this is deleted users - non_existing_users: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="non_existing_users")) - own_user: 'OwnUserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="own_user")) + non_existing_users: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="non_existing_users") + ) + own_user: "OwnUserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="own_user") + ) + @dataclass class MuteUsersRequest(DataClassJsonMixin): audio: bool | None = dc_field(default=None, metadata=dc_config(field_name="audio")) - mute_all_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="mute_all_users")) - muted_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="muted_by_id")) - screenshare: bool | None = dc_field(default=None, metadata=dc_config(field_name="screenshare")) - screenshare_audio: bool | None = dc_field(default=None, metadata=dc_config(field_name="screenshare_audio")) + mute_all_users: bool | None = dc_field( + default=None, metadata=dc_config(field_name="mute_all_users") + ) + muted_by_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="muted_by_id") + ) + screenshare: bool | None = dc_field( + default=None, metadata=dc_config(field_name="screenshare") + ) + screenshare_audio: bool | None = dc_field( + default=None, metadata=dc_config(field_name="screenshare_audio") + ) video: bool | None = dc_field(default=None, metadata=dc_config(field_name="video")) - user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="user_ids")) + user_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="user_ids") + ) # User request object - muted_by: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="muted_by")) + muted_by: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="muted_by") + ) + @dataclass class MuteUsersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class NetworkMetricsReportResponse(DataClassJsonMixin): - average_connection_time: float | None = dc_field(default=None, metadata=dc_config(field_name="average_connection_time")) - average_jitter: float | None = dc_field(default=None, metadata=dc_config(field_name="average_jitter")) - average_latency: float | None = dc_field(default=None, metadata=dc_config(field_name="average_latency")) - average_time_to_reconnect: float | None = dc_field(default=None, metadata=dc_config(field_name="average_time_to_reconnect")) + average_connection_time: float | None = dc_field( + default=None, metadata=dc_config(field_name="average_connection_time") + ) + average_jitter: float | None = dc_field( + default=None, metadata=dc_config(field_name="average_jitter") + ) + average_latency: float | None = dc_field( + default=None, metadata=dc_config(field_name="average_latency") + ) + average_time_to_reconnect: float | None = dc_field( + default=None, metadata=dc_config(field_name="average_time_to_reconnect") + ) + @dataclass class NoiseCancellationSettings(DataClassJsonMixin): mode: str = dc_field(metadata=dc_config(field_name="mode")) + @dataclass class NotificationComment(DataClassJsonMixin): comment: str = dc_field(metadata=dc_config(field_name="comment")) id: str = dc_field(metadata=dc_config(field_name="id")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) + @dataclass class NotificationConfig(DataClassJsonMixin): # Time window for deduplicating notification activities (reactions and follows). Empty or '0' = always deduplicate (default). Examples: '1h', '24h', '7d', '1w' - deduplication_window: str | None = dc_field(default=None, metadata=dc_config(field_name="deduplication_window")) + deduplication_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="deduplication_window") + ) # Whether to track read status - track_read: bool | None = dc_field(default=None, metadata=dc_config(field_name="track_read")) + track_read: bool | None = dc_field( + default=None, metadata=dc_config(field_name="track_read") + ) # Whether to track seen status - track_seen: bool | None = dc_field(default=None, metadata=dc_config(field_name="track_seen")) + track_seen: bool | None = dc_field( + default=None, metadata=dc_config(field_name="track_seen") + ) + @dataclass class NotificationContext(DataClassJsonMixin): - target: 'NotificationTarget | None' = dc_field(default=None, metadata=dc_config(field_name="target")) - trigger: 'NotificationTrigger | None' = dc_field(default=None, metadata=dc_config(field_name="trigger")) + target: "NotificationTarget | None" = dc_field( + default=None, metadata=dc_config(field_name="target") + ) + trigger: "NotificationTrigger | None" = dc_field( + default=None, metadata=dc_config(field_name="trigger") + ) + @dataclass class NotificationFeedUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The ID of the feed fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.notification_feed.updated" in this case - type: str = dc_field(default="feeds.notification_feed.updated", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="feeds.notification_feed.updated", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Aggregated activities for notification feeds - aggregated_activities: 'list[AggregatedActivityResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="aggregated_activities")) - notification_status: 'NotificationStatusResponse | None' = dc_field(default=None, metadata=dc_config(field_name="notification_status")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + aggregated_activities: "list[AggregatedActivityResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="aggregated_activities") + ) + notification_status: "NotificationStatusResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="notification_status") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class NotificationMarkUnreadEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "notification.mark_unread" in this case - type: str = dc_field(default="notification.mark_unread", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="notification.mark_unread", metadata=dc_config(field_name="type") + ) # The ID of the channel which was marked as unread - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel which was marked as unread - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel which was marked as unread cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) # The ID of the first unread message - first_unread_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="first_unread_message_id")) + first_unread_message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="first_unread_message_id") + ) # The time when the channel/thread was marked as unread - last_read_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_read_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_read_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_read_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The ID of the last read message - last_read_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="last_read_message_id")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_read_message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="last_read_message_id") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # The ID of the thread which was marked as unread - thread_id: str | None = dc_field(default=None, metadata=dc_config(field_name="thread_id")) + thread_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="thread_id") + ) # The total number of unread messages - total_unread_count: int | None = dc_field(default=None, metadata=dc_config(field_name="total_unread_count")) + total_unread_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="total_unread_count") + ) # The number of channels with unread messages - unread_channels: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_channels")) + unread_channels: int | None = dc_field( + default=None, metadata=dc_config(field_name="unread_channels") + ) # The total number of unread messages - unread_count: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_count")) + unread_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="unread_count") + ) # The number of unread messages in the channel/thread after first_unread_message_id - unread_messages: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_messages")) + unread_messages: int | None = dc_field( + default=None, metadata=dc_config(field_name="unread_messages") + ) # The total number of unread messages in the threads - unread_thread_messages: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_thread_messages")) + unread_thread_messages: int | None = dc_field( + default=None, metadata=dc_config(field_name="unread_thread_messages") + ) # The number of unread threads - unread_threads: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_threads")) + unread_threads: int | None = dc_field( + default=None, metadata=dc_config(field_name="unread_threads") + ) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) - grouped_unread_channels: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="grouped_unread_channels")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + grouped_unread_channels: "dict[str, int] | None" = dc_field( + default=None, metadata=dc_config(field_name="grouped_unread_channels") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class NotificationParentActivity(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) + @dataclass class NotificationSettings(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - call_live_started: 'EventNotificationSettings' = dc_field(metadata=dc_config(field_name="call_live_started")) - call_missed: 'EventNotificationSettings' = dc_field(metadata=dc_config(field_name="call_missed")) - call_notification: 'EventNotificationSettings' = dc_field(metadata=dc_config(field_name="call_notification")) - call_ring: 'EventNotificationSettings' = dc_field(metadata=dc_config(field_name="call_ring")) - session_started: 'EventNotificationSettings' = dc_field(metadata=dc_config(field_name="session_started")) + call_live_started: "EventNotificationSettings" = dc_field( + metadata=dc_config(field_name="call_live_started") + ) + call_missed: "EventNotificationSettings" = dc_field( + metadata=dc_config(field_name="call_missed") + ) + call_notification: "EventNotificationSettings" = dc_field( + metadata=dc_config(field_name="call_notification") + ) + call_ring: "EventNotificationSettings" = dc_field( + metadata=dc_config(field_name="call_ring") + ) + session_started: "EventNotificationSettings" = dc_field( + metadata=dc_config(field_name="session_started") + ) + @dataclass class NotificationSettingsRequest(DataClassJsonMixin): - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - call_live_started: 'EventNotificationSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="call_live_started")) - call_missed: 'EventNotificationSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="call_missed")) - call_notification: 'EventNotificationSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="call_notification")) - call_ring: 'EventNotificationSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="call_ring")) - session_started: 'EventNotificationSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="session_started")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + call_live_started: "EventNotificationSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="call_live_started") + ) + call_missed: "EventNotificationSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="call_missed") + ) + call_notification: "EventNotificationSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="call_notification") + ) + call_ring: "EventNotificationSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="call_ring") + ) + session_started: "EventNotificationSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="session_started") + ) + @dataclass class NotificationSettingsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - call_live_started: 'EventNotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="call_live_started")) - call_missed: 'EventNotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="call_missed")) - call_notification: 'EventNotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="call_notification")) - call_ring: 'EventNotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="call_ring")) - session_started: 'EventNotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="session_started")) + call_live_started: "EventNotificationSettingsResponse" = dc_field( + metadata=dc_config(field_name="call_live_started") + ) + call_missed: "EventNotificationSettingsResponse" = dc_field( + metadata=dc_config(field_name="call_missed") + ) + call_notification: "EventNotificationSettingsResponse" = dc_field( + metadata=dc_config(field_name="call_notification") + ) + call_ring: "EventNotificationSettingsResponse" = dc_field( + metadata=dc_config(field_name="call_ring") + ) + session_started: "EventNotificationSettingsResponse" = dc_field( + metadata=dc_config(field_name="session_started") + ) + @dataclass class NotificationStatusResponse(DataClassJsonMixin): @@ -9700,13 +19562,34 @@ class NotificationStatusResponse(DataClassJsonMixin): # Number of unseen notifications unseen: int = dc_field(metadata=dc_config(field_name="unseen")) # When notifications were last read - last_read_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_read_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_read_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_read_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # When notifications were last seen - last_seen_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_seen_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_seen_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_seen_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Deprecated: use is_read on each activity/group instead. IDs of activities that have been read. Capped at ~101 entries for aggregated feeds. - read_activities: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="read_activities")) + read_activities: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="read_activities") + ) # Deprecated: use is_seen on each activity/group instead. IDs of activities that have been seen. Capped at ~101 entries for aggregated feeds. - seen_activities: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="seen_activities")) + seen_activities: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="seen_activities") + ) + @dataclass class NotificationTarget(DataClassJsonMixin): @@ -9719,47 +19602,94 @@ class NotificationTarget(DataClassJsonMixin): # The type of the target activity (for activity targets) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) # The ID of the user who created the target activity (for activity targets) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Attachments on the target activity (for activity targets) - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) - comment: 'NotificationComment | None' = dc_field(default=None, metadata=dc_config(field_name="comment")) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) + comment: "NotificationComment | None" = dc_field( + default=None, metadata=dc_config(field_name="comment") + ) # Custom data from the target activity - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - parent_activity: 'NotificationParentActivity | None' = dc_field(default=None, metadata=dc_config(field_name="parent_activity")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + parent_activity: "NotificationParentActivity | None" = dc_field( + default=None, metadata=dc_config(field_name="parent_activity") + ) + @dataclass class NotificationThreadMessageNewEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # The ID of the thread thread_id: str = dc_field(metadata=dc_config(field_name="thread_id")) # The number of watchers watcher_count: int = dc_field(metadata=dc_config(field_name="watcher_count")) # Represents channel in chat - channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Represents any chat message - message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) # The type of event: "notification.message_new" in this case - type: str = dc_field(default="notification.thread_message_new", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="notification.thread_message_new", metadata=dc_config(field_name="type") + ) # The ID of the channel where the message was sent - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel where the message was sent - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel where the message was sent cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - parent_author: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_author")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + parent_author: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_author") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - unread_thread_messages: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_thread_messages")) - unread_threads: int | None = dc_field(default=None, metadata=dc_config(field_name="unread_threads")) + unread_thread_messages: int | None = dc_field( + default=None, metadata=dc_config(field_name="unread_thread_messages") + ) + unread_threads: int | None = dc_field( + default=None, metadata=dc_config(field_name="unread_threads") + ) # The participants of the thread - thread_participants: 'list[UserResponseCommonFields] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + thread_participants: "list[UserResponseCommonFields] | None" = dc_field( + default=None, metadata=dc_config(field_name="thread_participants") + ) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + @dataclass class NotificationTrigger(DataClassJsonMixin): @@ -9767,118 +19697,216 @@ class NotificationTrigger(DataClassJsonMixin): text: str = dc_field(metadata=dc_config(field_name="text")) # The type of notification (mention, reaction, comment, follow, etc.) type: str = dc_field(metadata=dc_config(field_name="type")) - comment: 'NotificationComment | None' = dc_field(default=None, metadata=dc_config(field_name="comment")) + comment: "NotificationComment | None" = dc_field( + default=None, metadata=dc_config(field_name="comment") + ) # Custom data from the trigger object (comment, reaction, etc.) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class OCRContentParameters(DataClassJsonMixin): - label_operator: str | None = dc_field(default=None, metadata=dc_config(field_name="label_operator")) - severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) - harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) + label_operator: str | None = dc_field( + default=None, metadata=dc_config(field_name="label_operator") + ) + severity: str | None = dc_field( + default=None, metadata=dc_config(field_name="severity") + ) + harm_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="harm_labels") + ) + @dataclass class OCRRule(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) label: str = dc_field(metadata=dc_config(field_name="label")) + @dataclass class OnlyUserID(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) + @dataclass class OverviewDashboardConfig(DataClassJsonMixin): - default_date_range_days: int | None = dc_field(default=None, metadata=dc_config(field_name="default_date_range_days")) - visible_charts: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="visible_charts")) + default_date_range_days: int | None = dc_field( + default=None, metadata=dc_config(field_name="default_date_range_days") + ) + visible_charts: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="visible_charts") + ) + @dataclass class OwnBatchRequest(DataClassJsonMixin): # List of feed IDs to get own fields for feeds: list[str] = dc_field(metadata=dc_config(field_name="feeds")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Optional list of specific fields to return. If not specified, all fields (own_follows, own_followings, own_capabilities, own_membership) are returned - fields: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="fields")) + fields: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="fields") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class OwnBatchResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Map of feed ID to own fields data - data: 'dict[str, FeedOwnData]' = dc_field(metadata=dc_config(field_name="data")) + data: "dict[str, FeedOwnData]" = dc_field(metadata=dc_config(field_name="data")) + + +OwnCapabilityType = NewType("OwnCapabilityType", str) -OwnCapabilityType = NewType('OwnCapabilityType', str) class OwnCapability: - BLOCK_USERS: Final[OwnCapabilityType] = 'block-users' - CHANGE_MAX_DURATION: Final[OwnCapabilityType] = 'change-max-duration' - CREATE_CALL: Final[OwnCapabilityType] = 'create-call' - CREATE_REACTION: Final[OwnCapabilityType] = 'create-reaction' - ENABLE_NOISE_CANCELLATION: Final[OwnCapabilityType] = 'enable-noise-cancellation' - END_CALL: Final[OwnCapabilityType] = 'end-call' - JOIN_BACKSTAGE: Final[OwnCapabilityType] = 'join-backstage' - JOIN_CALL: Final[OwnCapabilityType] = 'join-call' - JOIN_ENDED_CALL: Final[OwnCapabilityType] = 'join-ended-call' - KICK_USER: Final[OwnCapabilityType] = 'kick-user' - MUTE_USERS: Final[OwnCapabilityType] = 'mute-users' - PIN_FOR_EVERYONE: Final[OwnCapabilityType] = 'pin-for-everyone' - READ_CALL: Final[OwnCapabilityType] = 'read-call' - REMOVE_CALL_MEMBER: Final[OwnCapabilityType] = 'remove-call-member' - SCREENSHARE: Final[OwnCapabilityType] = 'screenshare' - SEND_AUDIO: Final[OwnCapabilityType] = 'send-audio' - SEND_CLOSED_CAPTIONS_CALL: Final[OwnCapabilityType] = 'send-closed-captions-call' - SEND_VIDEO: Final[OwnCapabilityType] = 'send-video' - START_BROADCAST_CALL: Final[OwnCapabilityType] = 'start-broadcast-call' - START_CLOSED_CAPTIONS_CALL: Final[OwnCapabilityType] = 'start-closed-captions-call' - START_FRAME_RECORD_CALL: Final[OwnCapabilityType] = 'start-frame-record-call' - START_INDIVIDUAL_RECORD_CALL: Final[OwnCapabilityType] = 'start-individual-record-call' - START_RAW_RECORD_CALL: Final[OwnCapabilityType] = 'start-raw-record-call' - START_RECORD_CALL: Final[OwnCapabilityType] = 'start-record-call' - START_TRANSCRIPTION_CALL: Final[OwnCapabilityType] = 'start-transcription-call' - STOP_BROADCAST_CALL: Final[OwnCapabilityType] = 'stop-broadcast-call' - STOP_CLOSED_CAPTIONS_CALL: Final[OwnCapabilityType] = 'stop-closed-captions-call' - STOP_FRAME_RECORD_CALL: Final[OwnCapabilityType] = 'stop-frame-record-call' - STOP_INDIVIDUAL_RECORD_CALL: Final[OwnCapabilityType] = 'stop-individual-record-call' - STOP_RAW_RECORD_CALL: Final[OwnCapabilityType] = 'stop-raw-record-call' - STOP_RECORD_CALL: Final[OwnCapabilityType] = 'stop-record-call' - STOP_TRANSCRIPTION_CALL: Final[OwnCapabilityType] = 'stop-transcription-call' - UPDATE_CALL: Final[OwnCapabilityType] = 'update-call' - UPDATE_CALL_MEMBER: Final[OwnCapabilityType] = 'update-call-member' - UPDATE_CALL_PERMISSIONS: Final[OwnCapabilityType] = 'update-call-permissions' - UPDATE_CALL_SETTINGS: Final[OwnCapabilityType] = 'update-call-settings' + BLOCK_USERS: Final[OwnCapabilityType] = "block-users" + CHANGE_MAX_DURATION: Final[OwnCapabilityType] = "change-max-duration" + CREATE_CALL: Final[OwnCapabilityType] = "create-call" + CREATE_REACTION: Final[OwnCapabilityType] = "create-reaction" + ENABLE_NOISE_CANCELLATION: Final[OwnCapabilityType] = "enable-noise-cancellation" + END_CALL: Final[OwnCapabilityType] = "end-call" + JOIN_BACKSTAGE: Final[OwnCapabilityType] = "join-backstage" + JOIN_CALL: Final[OwnCapabilityType] = "join-call" + JOIN_ENDED_CALL: Final[OwnCapabilityType] = "join-ended-call" + KICK_USER: Final[OwnCapabilityType] = "kick-user" + MUTE_USERS: Final[OwnCapabilityType] = "mute-users" + PIN_FOR_EVERYONE: Final[OwnCapabilityType] = "pin-for-everyone" + READ_CALL: Final[OwnCapabilityType] = "read-call" + REMOVE_CALL_MEMBER: Final[OwnCapabilityType] = "remove-call-member" + SCREENSHARE: Final[OwnCapabilityType] = "screenshare" + SEND_AUDIO: Final[OwnCapabilityType] = "send-audio" + SEND_CLOSED_CAPTIONS_CALL: Final[OwnCapabilityType] = "send-closed-captions-call" + SEND_VIDEO: Final[OwnCapabilityType] = "send-video" + START_BROADCAST_CALL: Final[OwnCapabilityType] = "start-broadcast-call" + START_CLOSED_CAPTIONS_CALL: Final[OwnCapabilityType] = "start-closed-captions-call" + START_FRAME_RECORD_CALL: Final[OwnCapabilityType] = "start-frame-record-call" + START_INDIVIDUAL_RECORD_CALL: Final[OwnCapabilityType] = ( + "start-individual-record-call" + ) + START_RAW_RECORD_CALL: Final[OwnCapabilityType] = "start-raw-record-call" + START_RECORD_CALL: Final[OwnCapabilityType] = "start-record-call" + START_TRANSCRIPTION_CALL: Final[OwnCapabilityType] = "start-transcription-call" + STOP_BROADCAST_CALL: Final[OwnCapabilityType] = "stop-broadcast-call" + STOP_CLOSED_CAPTIONS_CALL: Final[OwnCapabilityType] = "stop-closed-captions-call" + STOP_FRAME_RECORD_CALL: Final[OwnCapabilityType] = "stop-frame-record-call" + STOP_INDIVIDUAL_RECORD_CALL: Final[OwnCapabilityType] = ( + "stop-individual-record-call" + ) + STOP_RAW_RECORD_CALL: Final[OwnCapabilityType] = "stop-raw-record-call" + STOP_RECORD_CALL: Final[OwnCapabilityType] = "stop-record-call" + STOP_TRANSCRIPTION_CALL: Final[OwnCapabilityType] = "stop-transcription-call" + UPDATE_CALL: Final[OwnCapabilityType] = "update-call" + UPDATE_CALL_MEMBER: Final[OwnCapabilityType] = "update-call-member" + UPDATE_CALL_PERMISSIONS: Final[OwnCapabilityType] = "update-call-permissions" + UPDATE_CALL_SETTINGS: Final[OwnCapabilityType] = "update-call-settings" + @dataclass class OwnUserResponse(DataClassJsonMixin): banned: bool = dc_field(metadata=dc_config(field_name="banned")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) id: str = dc_field(metadata=dc_config(field_name="id")) invisible: bool = dc_field(metadata=dc_config(field_name="invisible")) language: str = dc_field(metadata=dc_config(field_name="language")) online: bool = dc_field(metadata=dc_config(field_name="online")) role: str = dc_field(metadata=dc_config(field_name="role")) - total_unread_count: int = dc_field(metadata=dc_config(field_name="total_unread_count")) + total_unread_count: int = dc_field( + metadata=dc_config(field_name="total_unread_count") + ) unread_channels: int = dc_field(metadata=dc_config(field_name="unread_channels")) unread_count: int = dc_field(metadata=dc_config(field_name="unread_count")) unread_threads: int = dc_field(metadata=dc_config(field_name="unread_threads")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - channel_mutes: 'list[ChannelMute]' = dc_field(metadata=dc_config(field_name="channel_mutes")) - devices: 'list[DeviceResponse]' = dc_field(metadata=dc_config(field_name="devices")) - mutes: 'list[UserMuteResponse]' = dc_field(metadata=dc_config(field_name="mutes")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + channel_mutes: "list[ChannelMute]" = dc_field( + metadata=dc_config(field_name="channel_mutes") + ) + devices: "list[DeviceResponse]" = dc_field(metadata=dc_config(field_name="devices")) + mutes: "list[UserMuteResponse]" = dc_field(metadata=dc_config(field_name="mutes")) teams: list[str] = dc_field(metadata=dc_config(field_name="teams")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - avg_response_time: int | None = dc_field(default=None, metadata=dc_config(field_name="avg_response_time")) - deactivated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deactivated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + avg_response_time: int | None = dc_field( + default=None, metadata=dc_config(field_name="avg_response_time") + ) + deactivated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deactivated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) image: str | None = dc_field(default=None, metadata=dc_config(field_name="image")) - last_active: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_active", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_active: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_active", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - revoke_tokens_issued_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="revoke_tokens_issued_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - blocked_user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="blocked_user_ids")) - latest_hidden_channels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="latest_hidden_channels")) - privacy_settings: 'PrivacySettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="privacy_settings")) - push_preferences: 'PushPreferencesResponse | None' = dc_field(default=None, metadata=dc_config(field_name="push_preferences")) - teams_role: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="teams_role")) - total_unread_count_by_team: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="total_unread_count_by_team")) + revoke_tokens_issued_before: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="revoke_tokens_issued_before", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + blocked_user_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="blocked_user_ids") + ) + latest_hidden_channels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="latest_hidden_channels") + ) + privacy_settings: "PrivacySettingsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="privacy_settings") + ) + push_preferences: "PushPreferencesResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="push_preferences") + ) + teams_role: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="teams_role") + ) + total_unread_count_by_team: "dict[str, int] | None" = dc_field( + default=None, metadata=dc_config(field_name="total_unread_count_by_team") + ) + @dataclass class PagerRequest(DataClassJsonMixin): @@ -9886,21 +19914,27 @@ class PagerRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class PagerResponse(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class PaginationParams(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) offset: int | None = dc_field(default=None, metadata=dc_config(field_name="offset")) + @dataclass class ParsedPredefinedFilterResponse(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) filter: dict[str, object] = dc_field(metadata=dc_config(field_name="filter")) - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) + @dataclass class ParticipantCountByMinuteResponse(DataClassJsonMixin): @@ -9908,54 +19942,128 @@ class ParticipantCountByMinuteResponse(DataClassJsonMixin): last: int = dc_field(metadata=dc_config(field_name="last")) max: int = dc_field(metadata=dc_config(field_name="max")) min: int = dc_field(metadata=dc_config(field_name="min")) - start_ts: datetime = dc_field(metadata=dc_config(field_name="start_ts", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + start_ts: datetime = dc_field( + metadata=dc_config( + field_name="start_ts", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + @dataclass class ParticipantCountOverTimeResponse(DataClassJsonMixin): - by_minute: 'list[ParticipantCountByMinuteResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="by_minute")) + by_minute: "list[ParticipantCountByMinuteResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="by_minute") + ) + @dataclass class ParticipantReportResponse(DataClassJsonMixin): sum: int = dc_field(metadata=dc_config(field_name="sum")) unique: int = dc_field(metadata=dc_config(field_name="unique")) - max_concurrent: int | None = dc_field(default=None, metadata=dc_config(field_name="max_concurrent")) - by_browser: 'list[GroupedStatsResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="by_browser")) - by_country: 'list[GroupedStatsResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="by_country")) - by_device: 'list[GroupedStatsResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="by_device")) - by_operating_system: 'list[GroupedStatsResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="by_operating_system")) - count_over_time: 'ParticipantCountOverTimeResponse | None' = dc_field(default=None, metadata=dc_config(field_name="count_over_time")) - publishers: 'PublisherStatsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="publishers")) - subscribers: 'SubscriberStatsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="subscribers")) + max_concurrent: int | None = dc_field( + default=None, metadata=dc_config(field_name="max_concurrent") + ) + by_browser: "list[GroupedStatsResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="by_browser") + ) + by_country: "list[GroupedStatsResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="by_country") + ) + by_device: "list[GroupedStatsResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="by_device") + ) + by_operating_system: "list[GroupedStatsResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="by_operating_system") + ) + count_over_time: "ParticipantCountOverTimeResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="count_over_time") + ) + publishers: "PublisherStatsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="publishers") + ) + subscribers: "SubscriberStatsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="subscribers") + ) + @dataclass class ParticipantSeriesPublisherStats(DataClassJsonMixin): - global_metrics_order: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="global_metrics_order")) - _global: 'dict[str, list[list[float]]] | None' = dc_field(default=None, metadata=dc_config(field_name="global")) - global_meta: 'dict[str, MetricDescriptor] | None' = dc_field(default=None, metadata=dc_config(field_name="global_meta")) - global_thresholds: 'dict[str, list[MetricThreshold]] | None' = dc_field(default=None, metadata=dc_config(field_name="global_thresholds")) - tracks: 'dict[str, list[ParticipantSeriesTrackMetrics]] | None' = dc_field(default=None, metadata=dc_config(field_name="tracks")) + global_metrics_order: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="global_metrics_order") + ) + _global: "dict[str, list[list[float]]] | None" = dc_field( + default=None, metadata=dc_config(field_name="global") + ) + global_meta: "dict[str, MetricDescriptor] | None" = dc_field( + default=None, metadata=dc_config(field_name="global_meta") + ) + global_thresholds: "dict[str, list[MetricThreshold]] | None" = dc_field( + default=None, metadata=dc_config(field_name="global_thresholds") + ) + tracks: "dict[str, list[ParticipantSeriesTrackMetrics]] | None" = dc_field( + default=None, metadata=dc_config(field_name="tracks") + ) + @dataclass class ParticipantSeriesSubscriberStats(DataClassJsonMixin): - global_metrics_order: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="global_metrics_order")) - subscriptions: 'list[ParticipantSeriesSubscriptionTrackMetrics] | None' = dc_field(default=None, metadata=dc_config(field_name="subscriptions")) - _global: 'dict[str, list[list[float]]] | None' = dc_field(default=None, metadata=dc_config(field_name="global")) - global_meta: 'dict[str, MetricDescriptor] | None' = dc_field(default=None, metadata=dc_config(field_name="global_meta")) - global_thresholds: 'dict[str, list[MetricThreshold]] | None' = dc_field(default=None, metadata=dc_config(field_name="global_thresholds")) + global_metrics_order: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="global_metrics_order") + ) + subscriptions: "list[ParticipantSeriesSubscriptionTrackMetrics] | None" = dc_field( + default=None, metadata=dc_config(field_name="subscriptions") + ) + _global: "dict[str, list[list[float]]] | None" = dc_field( + default=None, metadata=dc_config(field_name="global") + ) + global_meta: "dict[str, MetricDescriptor] | None" = dc_field( + default=None, metadata=dc_config(field_name="global_meta") + ) + global_thresholds: "dict[str, list[MetricThreshold]] | None" = dc_field( + default=None, metadata=dc_config(field_name="global_thresholds") + ) + @dataclass class ParticipantSeriesSubscriptionTrackMetrics(DataClassJsonMixin): - publisher_user_id: str = dc_field(metadata=dc_config(field_name="publisher_user_id")) - publisher_name: str | None = dc_field(default=None, metadata=dc_config(field_name="publisher_name")) - publisher_user_session_id: str | None = dc_field(default=None, metadata=dc_config(field_name="publisher_user_session_id")) - tracks: 'dict[str, list[ParticipantSeriesTrackMetrics]] | None' = dc_field(default=None, metadata=dc_config(field_name="tracks")) + publisher_user_id: str = dc_field( + metadata=dc_config(field_name="publisher_user_id") + ) + publisher_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="publisher_name") + ) + publisher_user_session_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="publisher_user_session_id") + ) + tracks: "dict[str, list[ParticipantSeriesTrackMetrics]] | None" = dc_field( + default=None, metadata=dc_config(field_name="tracks") + ) + @dataclass class ParticipantSeriesTimeframe(DataClassJsonMixin): max_points: int = dc_field(metadata=dc_config(field_name="max_points")) - since: datetime = dc_field(metadata=dc_config(field_name="since", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + since: datetime = dc_field( + metadata=dc_config( + field_name="since", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) step_seconds: int = dc_field(metadata=dc_config(field_name="step_seconds")) - until: datetime = dc_field(metadata=dc_config(field_name="until", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + until: datetime = dc_field( + metadata=dc_config( + field_name="until", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + @dataclass class ParticipantSeriesTrackMetrics(DataClassJsonMixin): @@ -9963,18 +20071,38 @@ class ParticipantSeriesTrackMetrics(DataClassJsonMixin): codec: str | None = dc_field(default=None, metadata=dc_config(field_name="codec")) label: str | None = dc_field(default=None, metadata=dc_config(field_name="label")) rid: str | None = dc_field(default=None, metadata=dc_config(field_name="rid")) - track_type: str | None = dc_field(default=None, metadata=dc_config(field_name="track_type")) - metrics_order: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="metrics_order")) - metrics: 'dict[str, list[list[float]]] | None' = dc_field(default=None, metadata=dc_config(field_name="metrics")) - metrics_meta: 'dict[str, MetricDescriptor] | None' = dc_field(default=None, metadata=dc_config(field_name="metrics_meta")) - thresholds: 'dict[str, list[MetricThreshold]] | None' = dc_field(default=None, metadata=dc_config(field_name="thresholds")) + track_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="track_type") + ) + metrics_order: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="metrics_order") + ) + metrics: "dict[str, list[list[float]]] | None" = dc_field( + default=None, metadata=dc_config(field_name="metrics") + ) + metrics_meta: "dict[str, MetricDescriptor] | None" = dc_field( + default=None, metadata=dc_config(field_name="metrics_meta") + ) + thresholds: "dict[str, list[MetricThreshold]] | None" = dc_field( + default=None, metadata=dc_config(field_name="thresholds") + ) + @dataclass class ParticipantSeriesUserStats(DataClassJsonMixin): - metrics_order: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="metrics_order")) - metrics: 'dict[str, list[list[float]]] | None' = dc_field(default=None, metadata=dc_config(field_name="metrics")) - metrics_meta: 'dict[str, MetricDescriptor] | None' = dc_field(default=None, metadata=dc_config(field_name="metrics_meta")) - thresholds: 'dict[str, list[MetricThreshold]] | None' = dc_field(default=None, metadata=dc_config(field_name="thresholds")) + metrics_order: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="metrics_order") + ) + metrics: "dict[str, list[list[float]]] | None" = dc_field( + default=None, metadata=dc_config(field_name="metrics") + ) + metrics_meta: "dict[str, MetricDescriptor] | None" = dc_field( + default=None, metadata=dc_config(field_name="metrics_meta") + ) + thresholds: "dict[str, list[MetricThreshold]] | None" = dc_field( + default=None, metadata=dc_config(field_name="thresholds") + ) + @dataclass class ParticipantSessionDetails(DataClassJsonMixin): @@ -9982,60 +20110,135 @@ class ParticipantSessionDetails(DataClassJsonMixin): user_id: str = dc_field(metadata=dc_config(field_name="user_id")) user_session_id: str = dc_field(metadata=dc_config(field_name="user_session_id")) roles: list[str] = dc_field(metadata=dc_config(field_name="roles")) - duration_in_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="duration_in_seconds")) - joined_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="joined_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - left_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="left_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + duration_in_seconds: int | None = dc_field( + default=None, metadata=dc_config(field_name="duration_in_seconds") + ) + joined_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="joined_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + left_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="left_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class PendingMessageEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The method used for the pending message method: str = dc_field(metadata=dc_config(field_name="method")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "message.pending" in this case - type: str = dc_field(default="message.pending", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="message.pending", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) # Metadata attached to the pending message - metadata: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="metadata")) + metadata: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="metadata") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class PendingMessageResponse(DataClassJsonMixin): # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) - metadata: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="metadata")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + metadata: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="metadata") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class PerSDKUsageReport(DataClassJsonMixin): total: int = dc_field(metadata=dc_config(field_name="total")) - by_version: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="by_version")) + by_version: "dict[str, int]" = dc_field(metadata=dc_config(field_name="by_version")) + @dataclass class Percentiles(DataClassJsonMixin): p50: float | None = dc_field(default=None, metadata=dc_config(field_name="p50")) p95: float | None = dc_field(default=None, metadata=dc_config(field_name="p95")) + @dataclass class PerformanceAnalysisResponse(DataClassJsonMixin): analysis_type: str = dc_field(metadata=dc_config(field_name="analysis_type")) score: str = dc_field(metadata=dc_config(field_name="score")) - indexed_fields: list[str] = dc_field(metadata=dc_config(field_name="indexed_fields")) - recommendations: list[str] = dc_field(metadata=dc_config(field_name="recommendations")) - unindexed_fields: list[str] = dc_field(metadata=dc_config(field_name="unindexed_fields")) - unindexed_sort_fields: list[str] = dc_field(metadata=dc_config(field_name="unindexed_sort_fields")) + indexed_fields: list[str] = dc_field( + metadata=dc_config(field_name="indexed_fields") + ) + recommendations: list[str] = dc_field( + metadata=dc_config(field_name="recommendations") + ) + unindexed_fields: list[str] = dc_field( + metadata=dc_config(field_name="unindexed_fields") + ) + unindexed_sort_fields: list[str] = dc_field( + metadata=dc_config(field_name="unindexed_sort_fields") + ) warnings: list[str] = dc_field(metadata=dc_config(field_name="warnings")) - last_analyzed: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_analyzed", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - scan_type: str | None = dc_field(default=None, metadata=dc_config(field_name="scan_type")) + last_analyzed: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_analyzed", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + scan_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="scan_type") + ) + @dataclass class Permission(DataClassJsonMixin): @@ -10060,7 +20263,10 @@ class Permission(DataClassJsonMixin): # List of tags of the permission tags: list[str] = dc_field(metadata=dc_config(field_name="tags")) # MongoDB style condition which decides whether or not the permission is granted - condition: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="condition")) + condition: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="condition") + ) + @dataclass class PermissionRequest(DataClassJsonMixin): @@ -10071,41 +20277,71 @@ class PermissionRequest(DataClassJsonMixin): # MongoDB style condition which decides whether or not the permission is granted condition: dict[str, object] = dc_field(metadata=dc_config(field_name="condition")) # Description of the permission - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) # Whether this permission applies to resource owner or not owner: bool | None = dc_field(default=None, metadata=dc_config(field_name="owner")) # Whether this permission applies to teammates (multi-tenancy mode only) - same_team: bool | None = dc_field(default=None, metadata=dc_config(field_name="same_team")) + same_team: bool | None = dc_field( + default=None, metadata=dc_config(field_name="same_team") + ) + @dataclass class PermissionRequestEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The list of permissions requested by the user permissions: list[str] = dc_field(metadata=dc_config(field_name="permissions")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.permission_request" in this case - type: str = dc_field(default="call.permission_request", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.permission_request", metadata=dc_config(field_name="type") + ) + @dataclass class PinActivityRequest(DataClassJsonMixin): # If true, enriches the activity's current_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + enrich_own_fields: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_fields") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class PinActivityResponse(DataClassJsonMixin): # When the activity was pinned - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) duration: str = dc_field(metadata=dc_config(field_name="duration")) # Fully qualified ID of the feed the activity was pinned to feed: str = dc_field(metadata=dc_config(field_name="feed")) # ID of the user who pinned the activity user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + @dataclass class PinRequest(DataClassJsonMixin): @@ -10114,32 +20350,51 @@ class PinRequest(DataClassJsonMixin): # the user ID of the user who pinned the message user_id: str = dc_field(metadata=dc_config(field_name="user_id")) + @dataclass class PinResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class PlatformDataResponse(DataClassJsonMixin): - browser: 'BrowserDataResponse' = dc_field(metadata=dc_config(field_name="browser")) - device: 'DeviceDataResponse' = dc_field(metadata=dc_config(field_name="device")) - os: 'ClientOSDataResponse' = dc_field(metadata=dc_config(field_name="os")) + browser: "BrowserDataResponse" = dc_field(metadata=dc_config(field_name="browser")) + device: "DeviceDataResponse" = dc_field(metadata=dc_config(field_name="device")) + os: "ClientOSDataResponse" = dc_field(metadata=dc_config(field_name="os")) + @dataclass class Policy(DataClassJsonMixin): action: int = dc_field(metadata=dc_config(field_name="action")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) name: str = dc_field(metadata=dc_config(field_name="name")) owner: bool = dc_field(metadata=dc_config(field_name="owner")) priority: int = dc_field(metadata=dc_config(field_name="priority")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) resources: list[str] = dc_field(metadata=dc_config(field_name="resources")) roles: list[str] = dc_field(metadata=dc_config(field_name="roles")) + @dataclass class PolicyConfig(DataClassJsonMixin): max_age_hours: int = dc_field(metadata=dc_config(field_name="max_age_hours")) + @dataclass class PolicyRequest(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) @@ -10154,40 +20409,80 @@ class PolicyRequest(DataClassJsonMixin): # List of roles to apply policy to roles: list[str] = dc_field(metadata=dc_config(field_name="roles")) + @dataclass class PolicyTestLabelDrift(DataClassJsonMixin): changed: int = dc_field(metadata=dc_config(field_name="changed")) same: int = dc_field(metadata=dc_config(field_name="same")) + @dataclass class PolicyTestResult(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) id: int = dc_field(metadata=dc_config(field_name="id")) message_text: str = dc_field(metadata=dc_config(field_name="message_text")) row_index: int = dc_field(metadata=dc_config(field_name="row_index")) run_id: str = dc_field(metadata=dc_config(field_name="run_id")) scored: bool = dc_field(metadata=dc_config(field_name="scored")) - actual_action: str | None = dc_field(default=None, metadata=dc_config(field_name="actual_action")) - expected_action: str | None = dc_field(default=None, metadata=dc_config(field_name="expected_action")) - failure_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="failure_reason")) - passed: bool | None = dc_field(default=None, metadata=dc_config(field_name="passed")) - severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) - actual_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="actual_labels")) - expected_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="expected_labels")) - raw_response: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="raw_response")) + actual_action: str | None = dc_field( + default=None, metadata=dc_config(field_name="actual_action") + ) + expected_action: str | None = dc_field( + default=None, metadata=dc_config(field_name="expected_action") + ) + failure_reason: str | None = dc_field( + default=None, metadata=dc_config(field_name="failure_reason") + ) + passed: bool | None = dc_field( + default=None, metadata=dc_config(field_name="passed") + ) + severity: str | None = dc_field( + default=None, metadata=dc_config(field_name="severity") + ) + actual_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="actual_labels") + ) + expected_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="expected_labels") + ) + raw_response: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="raw_response") + ) + @dataclass class PolicyTestRow(DataClassJsonMixin): - content_type: str | None = dc_field(default=None, metadata=dc_config(field_name="content_type")) + content_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="content_type") + ) policy: str | None = dc_field(default=None, metadata=dc_config(field_name="policy")) - recommended_action: str | None = dc_field(default=None, metadata=dc_config(field_name="recommended_action")) + recommended_action: str | None = dc_field( + default=None, metadata=dc_config(field_name="recommended_action") + ) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) - labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="labels")) + labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="labels") + ) + @dataclass class PolicyTestRun(DataClassJsonMixin): config_key: str = dc_field(metadata=dc_config(field_name="config_key")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) id: str = dc_field(metadata=dc_config(field_name="id")) rows_completed: int = dc_field(metadata=dc_config(field_name="rows_completed")) rows_total: int = dc_field(metadata=dc_config(field_name="rows_total")) @@ -10195,60 +20490,127 @@ class PolicyTestRun(DataClassJsonMixin): status: str = dc_field(metadata=dc_config(field_name="status")) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) triggered_by: str = dc_field(metadata=dc_config(field_name="triggered_by")) - completed_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="completed_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - config_updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="config_updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - error_message: str | None = dc_field(default=None, metadata=dc_config(field_name="error_message")) - started_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - metrics: 'PolicyTestRunMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="metrics")) + completed_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="completed_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + config_updated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="config_updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + error_message: str | None = dc_field( + default=None, metadata=dc_config(field_name="error_message") + ) + started_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + metrics: "PolicyTestRunMetrics | None" = dc_field( + default=None, metadata=dc_config(field_name="metrics") + ) + @dataclass class PolicyTestRunMetrics(DataClassJsonMixin): mode: str = dc_field(metadata=dc_config(field_name="mode")) - totals: 'PolicyTestTotals' = dc_field(metadata=dc_config(field_name="totals")) - by_label: 'dict[str, PolicyTestLabelDrift] | None' = dc_field(default=None, metadata=dc_config(field_name="by_label")) + totals: "PolicyTestTotals" = dc_field(metadata=dc_config(field_name="totals")) + by_label: "dict[str, PolicyTestLabelDrift] | None" = dc_field( + default=None, metadata=dc_config(field_name="by_label") + ) + @dataclass class PolicyTestRunResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Per-row results (only present once the run has finished) - results: 'list[PolicyTestResult] | None' = dc_field(default=None, metadata=dc_config(field_name="results")) - run: 'PolicyTestRun | None' = dc_field(default=None, metadata=dc_config(field_name="run")) + results: "list[PolicyTestResult] | None" = dc_field( + default=None, metadata=dc_config(field_name="results") + ) + run: "PolicyTestRun | None" = dc_field( + default=None, metadata=dc_config(field_name="run") + ) + @dataclass class PolicyTestSeedSpec(DataClassJsonMixin): # How many rows to sample, newest first; capped at 1000 limit: int = dc_field(metadata=dc_config(field_name="limit")) # Sample only records carrying any of these labels; empty samples everything - labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="labels")) + labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="labels") + ) + @dataclass class PolicyTestSet(DataClassJsonMixin): config_key: str = dc_field(metadata=dc_config(field_name="config_key")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) created_by: str = dc_field(metadata=dc_config(field_name="created_by")) id: str = dc_field(metadata=dc_config(field_name="id")) mode: str = dc_field(metadata=dc_config(field_name="mode")) name: str = dc_field(metadata=dc_config(field_name="name")) row_count: int = dc_field(metadata=dc_config(field_name="row_count")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - rows: 'list[PolicyTestRow] | None' = dc_field(default=None, metadata=dc_config(field_name="rows")) - last_run: 'PolicyTestRun | None' = dc_field(default=None, metadata=dc_config(field_name="last_run")) + rows: "list[PolicyTestRow] | None" = dc_field( + default=None, metadata=dc_config(field_name="rows") + ) + last_run: "PolicyTestRun | None" = dc_field( + default=None, metadata=dc_config(field_name="last_run") + ) + @dataclass class PolicyTestSetListResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of policy test sets for the app - sets: 'list[PolicyTestSet]' = dc_field(metadata=dc_config(field_name="sets")) + sets: "list[PolicyTestSet]" = dc_field(metadata=dc_config(field_name="sets")) + @dataclass class PolicyTestSetResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # The set's baseline run (earliest completed run); later runs are scored against it. Absent until the first run completes - baseline_run_id: str | None = dc_field(default=None, metadata=dc_config(field_name="baseline_run_id")) + baseline_run_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="baseline_run_id") + ) # Retained run history for this set, newest first - recent_runs: 'list[PolicyTestRun] | None' = dc_field(default=None, metadata=dc_config(field_name="recent_runs")) - set: 'PolicyTestSet | None' = dc_field(default=None, metadata=dc_config(field_name="set")) + recent_runs: "list[PolicyTestRun] | None" = dc_field( + default=None, metadata=dc_config(field_name="recent_runs") + ) + set: "PolicyTestSet | None" = dc_field( + default=None, metadata=dc_config(field_name="set") + ) + @dataclass class PolicyTestTotals(DataClassJsonMixin): @@ -10258,22 +20620,32 @@ class PolicyTestTotals(DataClassJsonMixin): scored: int = dc_field(metadata=dc_config(field_name="scored")) unscored: int = dc_field(metadata=dc_config(field_name="unscored")) + @dataclass class PollOptionInput(DataClassJsonMixin): text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class PollOptionRequest(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class PollOptionResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - poll_option: 'PollOptionResponseData' = dc_field(metadata=dc_config(field_name="poll_option")) + poll_option: "PollOptionResponseData" = dc_field( + metadata=dc_config(field_name="poll_option") + ) + @dataclass class PollOptionResponseData(DataClassJsonMixin): @@ -10281,67 +20653,137 @@ class PollOptionResponseData(DataClassJsonMixin): text: str = dc_field(metadata=dc_config(field_name="text")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + @dataclass class PollResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - poll: 'PollResponseData' = dc_field(metadata=dc_config(field_name="poll")) + poll: "PollResponseData" = dc_field(metadata=dc_config(field_name="poll")) + @dataclass class PollResponseData(DataClassJsonMixin): allow_answers: bool = dc_field(metadata=dc_config(field_name="allow_answers")) - allow_user_suggested_options: bool = dc_field(metadata=dc_config(field_name="allow_user_suggested_options")) + allow_user_suggested_options: bool = dc_field( + metadata=dc_config(field_name="allow_user_suggested_options") + ) answers_count: int = dc_field(metadata=dc_config(field_name="answers_count")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) created_by_id: str = dc_field(metadata=dc_config(field_name="created_by_id")) description: str = dc_field(metadata=dc_config(field_name="description")) - enforce_unique_vote: bool = dc_field(metadata=dc_config(field_name="enforce_unique_vote")) + enforce_unique_vote: bool = dc_field( + metadata=dc_config(field_name="enforce_unique_vote") + ) id: str = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) vote_count: int = dc_field(metadata=dc_config(field_name="vote_count")) # Voting visibility of the poll - voting_visibility: str = dc_field(metadata=dc_config(field_name="voting_visibility")) - latest_answers: 'list[PollVoteResponseData]' = dc_field(metadata=dc_config(field_name="latest_answers")) - options: 'list[PollOptionResponseData]' = dc_field(metadata=dc_config(field_name="options")) - own_votes: 'list[PollVoteResponseData]' = dc_field(metadata=dc_config(field_name="own_votes")) - custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - latest_votes_by_option: 'dict[str, list[PollVoteResponseData]]' = dc_field(metadata=dc_config(field_name="latest_votes_by_option")) - vote_counts_by_option: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="vote_counts_by_option")) - is_closed: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_closed")) - max_votes_allowed: int | None = dc_field(default=None, metadata=dc_config(field_name="max_votes_allowed")) + voting_visibility: str = dc_field( + metadata=dc_config(field_name="voting_visibility") + ) + latest_answers: "list[PollVoteResponseData]" = dc_field( + metadata=dc_config(field_name="latest_answers") + ) + options: "list[PollOptionResponseData]" = dc_field( + metadata=dc_config(field_name="options") + ) + own_votes: "list[PollVoteResponseData]" = dc_field( + metadata=dc_config(field_name="own_votes") + ) + custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + latest_votes_by_option: "dict[str, list[PollVoteResponseData]]" = dc_field( + metadata=dc_config(field_name="latest_votes_by_option") + ) + vote_counts_by_option: "dict[str, int]" = dc_field( + metadata=dc_config(field_name="vote_counts_by_option") + ) + is_closed: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_closed") + ) + max_votes_allowed: int | None = dc_field( + default=None, metadata=dc_config(field_name="max_votes_allowed") + ) # User response object - created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) + created_by: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) + @dataclass class PollVoteResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - poll: 'PollResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll")) - vote: 'PollVoteResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="vote")) + poll: "PollResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="poll") + ) + vote: "PollVoteResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="vote") + ) + @dataclass class PollVoteResponseData(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) id: str = dc_field(metadata=dc_config(field_name="id")) option_id: str = dc_field(metadata=dc_config(field_name="option_id")) poll_id: str = dc_field(metadata=dc_config(field_name="poll_id")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - answer_text: str | None = dc_field(default=None, metadata=dc_config(field_name="answer_text")) - is_answer: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_answer")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + answer_text: str | None = dc_field( + default=None, metadata=dc_config(field_name="answer_text") + ) + is_answer: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_answer") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class PollVotesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Poll votes - votes: 'list[PollVoteResponseData]' = dc_field(metadata=dc_config(field_name="votes")) + votes: "list[PollVoteResponseData]" = dc_field( + metadata=dc_config(field_name="votes") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class PoorByCause(DataClassJsonMixin): delivery: int = dc_field(metadata=dc_config(field_name="delivery")) @@ -10350,402 +20792,894 @@ class PoorByCause(DataClassJsonMixin): source: int = dc_field(metadata=dc_config(field_name="source")) unattributed: int = dc_field(metadata=dc_config(field_name="unattributed")) + @dataclass class PoorTail(DataClassJsonMixin): healthy_viewers: int = dc_field(metadata=dc_config(field_name="healthy_viewers")) note: str = dc_field(metadata=dc_config(field_name="note")) poor_total: int = dc_field(metadata=dc_config(field_name="poor_total")) - poor_by_cause: 'PoorByCause' = dc_field(metadata=dc_config(field_name="poor_by_cause")) - supporting: 'Supporting' = dc_field(metadata=dc_config(field_name="supporting")) - healthy_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="healthy_pct")) + poor_by_cause: "PoorByCause" = dc_field( + metadata=dc_config(field_name="poor_by_cause") + ) + supporting: "Supporting" = dc_field(metadata=dc_config(field_name="supporting")) + healthy_pct: float | None = dc_field( + default=None, metadata=dc_config(field_name="healthy_pct") + ) + @dataclass class PredefinedFilterResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) name: str = dc_field(metadata=dc_config(field_name="name")) operation: str = dc_field(metadata=dc_config(field_name="operation")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) filter: dict[str, object] = dc_field(metadata=dc_config(field_name="filter")) - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) - query_id: int | None = dc_field(default=None, metadata=dc_config(field_name="query_id")) - sort: 'list[SortParam] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) - performance: 'PerformanceAnalysisResponse | None' = dc_field(default=None, metadata=dc_config(field_name="performance")) - stats: 'PredefinedFilterStatsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="stats")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) + query_id: int | None = dc_field( + default=None, metadata=dc_config(field_name="query_id") + ) + sort: "list[SortParam] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) + performance: "PerformanceAnalysisResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="performance") + ) + stats: "PredefinedFilterStatsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="stats") + ) + @dataclass class PredefinedFilterStatsResponse(DataClassJsonMixin): calls: int = dc_field(metadata=dc_config(field_name="calls")) max_latency_ms: int = dc_field(metadata=dc_config(field_name="max_latency_ms")) - last_seen: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_seen", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_seen: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_seen", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class PrivacySettingsResponse(DataClassJsonMixin): - delivery_receipts: 'DeliveryReceiptsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="delivery_receipts")) - read_receipts: 'ReadReceiptsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="read_receipts")) - typing_indicators: 'TypingIndicatorsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="typing_indicators")) + delivery_receipts: "DeliveryReceiptsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="delivery_receipts") + ) + read_receipts: "ReadReceiptsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="read_receipts") + ) + typing_indicators: "TypingIndicatorsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="typing_indicators") + ) + @dataclass class PublishedTrackFlags(DataClassJsonMixin): audio: bool = dc_field(metadata=dc_config(field_name="audio")) screenshare: bool = dc_field(metadata=dc_config(field_name="screenshare")) - screenshare_audio: bool = dc_field(metadata=dc_config(field_name="screenshare_audio")) + screenshare_audio: bool = dc_field( + metadata=dc_config(field_name="screenshare_audio") + ) video: bool = dc_field(metadata=dc_config(field_name="video")) + @dataclass class PublishedTrackMetrics(DataClassJsonMixin): codec: str | None = dc_field(default=None, metadata=dc_config(field_name="codec")) - track_id: str | None = dc_field(default=None, metadata=dc_config(field_name="track_id")) - track_type: str | None = dc_field(default=None, metadata=dc_config(field_name="track_type")) - warnings: 'list[SessionWarningResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="warnings")) - bitrate: 'MetricTimeSeries | None' = dc_field(default=None, metadata=dc_config(field_name="bitrate")) - framerate: 'MetricTimeSeries | None' = dc_field(default=None, metadata=dc_config(field_name="framerate")) - resolution: 'ResolutionMetricsTimeSeries | None' = dc_field(default=None, metadata=dc_config(field_name="resolution")) + track_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="track_id") + ) + track_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="track_type") + ) + warnings: "list[SessionWarningResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="warnings") + ) + bitrate: "MetricTimeSeries | None" = dc_field( + default=None, metadata=dc_config(field_name="bitrate") + ) + framerate: "MetricTimeSeries | None" = dc_field( + default=None, metadata=dc_config(field_name="framerate") + ) + resolution: "ResolutionMetricsTimeSeries | None" = dc_field( + default=None, metadata=dc_config(field_name="resolution") + ) + @dataclass class PublisherAllMetrics(DataClassJsonMixin): - audio: 'PublisherAudioMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="audio")) - rtt_ms: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="rtt_ms")) - video: 'PublisherVideoMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="video")) + audio: "PublisherAudioMetrics | None" = dc_field( + default=None, metadata=dc_config(field_name="audio") + ) + rtt_ms: "ActiveCallsLatencyStats | None" = dc_field( + default=None, metadata=dc_config(field_name="rtt_ms") + ) + video: "PublisherVideoMetrics | None" = dc_field( + default=None, metadata=dc_config(field_name="video") + ) + @dataclass class PublisherAudioMetrics(DataClassJsonMixin): - jitter_ms: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="jitter_ms")) + jitter_ms: "ActiveCallsLatencyStats | None" = dc_field( + default=None, metadata=dc_config(field_name="jitter_ms") + ) + @dataclass class PublisherSession(DataClassJsonMixin): duration_min: float = dc_field(metadata=dc_config(field_name="duration_min")) - started_offset_min: float = dc_field(metadata=dc_config(field_name="started_offset_min")) + started_offset_min: float = dc_field( + metadata=dc_config(field_name="started_offset_min") + ) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) user_session_id: str = dc_field(metadata=dc_config(field_name="user_session_id")) - avg_jitter_ms: float | None = dc_field(default=None, metadata=dc_config(field_name="avg_jitter_ms")) - browser: str | None = dc_field(default=None, metadata=dc_config(field_name="browser")) - delivery_zone: str | None = dc_field(default=None, metadata=dc_config(field_name="delivery_zone")) + avg_jitter_ms: float | None = dc_field( + default=None, metadata=dc_config(field_name="avg_jitter_ms") + ) + browser: str | None = dc_field( + default=None, metadata=dc_config(field_name="browser") + ) + delivery_zone: str | None = dc_field( + default=None, metadata=dc_config(field_name="delivery_zone") + ) ingest: str | None = dc_field(default=None, metadata=dc_config(field_name="ingest")) os: str | None = dc_field(default=None, metadata=dc_config(field_name="os")) - send_quality_score: float | None = dc_field(default=None, metadata=dc_config(field_name="send_quality_score")) + send_quality_score: float | None = dc_field( + default=None, metadata=dc_config(field_name="send_quality_score") + ) tool: str | None = dc_field(default=None, metadata=dc_config(field_name="tool")) - encoding: 'EncodingProfile | None' = dc_field(default=None, metadata=dc_config(field_name="encoding")) + encoding: "EncodingProfile | None" = dc_field( + default=None, metadata=dc_config(field_name="encoding") + ) + @dataclass class PublisherStatsResponse(DataClassJsonMixin): total: int = dc_field(metadata=dc_config(field_name="total")) unique: int = dc_field(metadata=dc_config(field_name="unique")) - by_track: 'list[TrackStatsResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="by_track")) + by_track: "list[TrackStatsResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="by_track") + ) + @dataclass class PublisherVideoMetrics(DataClassJsonMixin): - bitrate: 'ActiveCallsBitrateStats | None' = dc_field(default=None, metadata=dc_config(field_name="bitrate")) - fps_30: 'ActiveCallsFPSStats | None' = dc_field(default=None, metadata=dc_config(field_name="fps_30")) - frame_encoding_time_ms: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="frame_encoding_time_ms")) - jitter_ms: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="jitter_ms")) - resolution: 'ActiveCallsResolutionStats | None' = dc_field(default=None, metadata=dc_config(field_name="resolution")) + bitrate: "ActiveCallsBitrateStats | None" = dc_field( + default=None, metadata=dc_config(field_name="bitrate") + ) + fps_30: "ActiveCallsFPSStats | None" = dc_field( + default=None, metadata=dc_config(field_name="fps_30") + ) + frame_encoding_time_ms: "ActiveCallsLatencyStats | None" = dc_field( + default=None, metadata=dc_config(field_name="frame_encoding_time_ms") + ) + jitter_ms: "ActiveCallsLatencyStats | None" = dc_field( + default=None, metadata=dc_config(field_name="jitter_ms") + ) + resolution: "ActiveCallsResolutionStats | None" = dc_field( + default=None, metadata=dc_config(field_name="resolution") + ) + @dataclass class PublishersMetrics(DataClassJsonMixin): - all: 'PublisherAllMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="all")) + all: "PublisherAllMetrics | None" = dc_field( + default=None, metadata=dc_config(field_name="all") + ) + @dataclass class PushConfig(DataClassJsonMixin): version: str = dc_field(metadata=dc_config(field_name="version")) - offline_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="offline_only")) + offline_only: bool | None = dc_field( + default=None, metadata=dc_config(field_name="offline_only") + ) + @dataclass class PushNotificationConfig(DataClassJsonMixin): # Whether push notifications are enabled for this feed group - enable_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="enable_push")) + enable_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enable_push") + ) # Allowlist of notification types that may trigger push (e.g. follow, comment, reaction, comment_reaction, mention, or any custom activity.type). Empty or omitted means no types. Built-in notifications match notification_context.trigger.type; manually added notification activities match activity.type. - push_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="push_types")) + push_types: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="push_types") + ) + @dataclass class PushNotificationFields(DataClassJsonMixin): offline_only: bool = dc_field(metadata=dc_config(field_name="offline_only")) version: str = dc_field(metadata=dc_config(field_name="version")) - apn: 'APNConfigFields' = dc_field(metadata=dc_config(field_name="apn")) - firebase: 'FirebaseConfigFields' = dc_field(metadata=dc_config(field_name="firebase")) - huawei: 'HuaweiConfigFields' = dc_field(metadata=dc_config(field_name="huawei")) - xiaomi: 'XiaomiConfigFields' = dc_field(metadata=dc_config(field_name="xiaomi")) - providers: 'list[PushProvider] | None' = dc_field(default=None, metadata=dc_config(field_name="providers")) + apn: "APNConfigFields" = dc_field(metadata=dc_config(field_name="apn")) + firebase: "FirebaseConfigFields" = dc_field( + metadata=dc_config(field_name="firebase") + ) + huawei: "HuaweiConfigFields" = dc_field(metadata=dc_config(field_name="huawei")) + xiaomi: "XiaomiConfigFields" = dc_field(metadata=dc_config(field_name="xiaomi")) + providers: "list[PushProvider] | None" = dc_field( + default=None, metadata=dc_config(field_name="providers") + ) + @dataclass class PushNotificationSettingsResponse(DataClassJsonMixin): - disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="disabled")) - disabled_until: datetime | None = dc_field(default=None, metadata=dc_config(field_name="disabled_until", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + disabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="disabled") + ) + disabled_until: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="disabled_until", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class PushPreferenceInput(DataClassJsonMixin): # Set the level of call push notifications for the user. One of: all, none, default - call_level: str | None = dc_field(default=None, metadata=dc_config(field_name="call_level")) + call_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="call_level") + ) # Set the push preferences for a specific channel. If empty it sets the default for the user - channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) + channel_cid: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_cid") + ) # Set the level of chat push notifications for the user. Note: "mentions" is deprecated in favor of "direct_mentions". One of: all, mentions, direct_mentions, all_mentions, none, default - chat_level: str | None = dc_field(default=None, metadata=dc_config(field_name="chat_level")) + chat_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="chat_level") + ) # Disable push notifications till a certain time - disabled_until: datetime | None = dc_field(default=None, metadata=dc_config(field_name="disabled_until", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + disabled_until: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="disabled_until", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Set the level of feeds push notifications for the user. One of: all, none, default - feeds_level: str | None = dc_field(default=None, metadata=dc_config(field_name="feeds_level")) + feeds_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="feeds_level") + ) # Remove the disabled until time. (IE stop snoozing notifications) - remove_disable: bool | None = dc_field(default=None, metadata=dc_config(field_name="remove_disable")) + remove_disable: bool | None = dc_field( + default=None, metadata=dc_config(field_name="remove_disable") + ) # The user id for which to set the push preferences. Required when using server side auths, defaults to current user with client side auth. - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - chat_preferences: 'ChatPreferencesInput | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) - feeds_preferences: 'FeedsPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="feeds_preferences")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + chat_preferences: "ChatPreferencesInput | None" = dc_field( + default=None, metadata=dc_config(field_name="chat_preferences") + ) + feeds_preferences: "FeedsPreferences | None" = dc_field( + default=None, metadata=dc_config(field_name="feeds_preferences") + ) + @dataclass class PushPreferencesResponse(DataClassJsonMixin): - call_level: str | None = dc_field(default=None, metadata=dc_config(field_name="call_level")) - chat_level: str | None = dc_field(default=None, metadata=dc_config(field_name="chat_level")) - disabled_until: datetime | None = dc_field(default=None, metadata=dc_config(field_name="disabled_until", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - feeds_level: str | None = dc_field(default=None, metadata=dc_config(field_name="feeds_level")) - chat_preferences: 'ChatPreferencesResponse | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) - feeds_preferences: 'FeedsPreferencesResponse | None' = dc_field(default=None, metadata=dc_config(field_name="feeds_preferences")) + call_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="call_level") + ) + chat_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="chat_level") + ) + disabled_until: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="disabled_until", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + feeds_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="feeds_level") + ) + chat_preferences: "ChatPreferencesResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="chat_preferences") + ) + feeds_preferences: "FeedsPreferencesResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="feeds_preferences") + ) + @dataclass class PushProvider(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) name: str = dc_field(metadata=dc_config(field_name="name")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - apn_auth_key: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_auth_key")) - apn_auth_type: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_auth_type")) - apn_development: bool | None = dc_field(default=None, metadata=dc_config(field_name="apn_development")) - apn_host: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_host")) - apn_key_id: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_key_id")) - apn_notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_notification_template")) - apn_p12_cert: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_p12_cert")) - apn_team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_team_id")) - apn_topic: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_topic")) - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) - disabled_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="disabled_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - disabled_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="disabled_reason")) - firebase_apn_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_apn_template")) - firebase_credentials: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_credentials")) - firebase_data_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_data_template")) - firebase_host: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_host")) - firebase_notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_notification_template")) - firebase_server_key: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_server_key")) - huawei_app_id: str | None = dc_field(default=None, metadata=dc_config(field_name="huawei_app_id")) - huawei_app_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="huawei_app_secret")) - huawei_host: str | None = dc_field(default=None, metadata=dc_config(field_name="huawei_host")) - xiaomi_app_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="xiaomi_app_secret")) - xiaomi_package_name: str | None = dc_field(default=None, metadata=dc_config(field_name="xiaomi_package_name")) - push_templates: 'list[PushTemplate] | None' = dc_field(default=None, metadata=dc_config(field_name="push_templates")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + apn_auth_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_auth_key") + ) + apn_auth_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_auth_type") + ) + apn_development: bool | None = dc_field( + default=None, metadata=dc_config(field_name="apn_development") + ) + apn_host: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_host") + ) + apn_key_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_key_id") + ) + apn_notification_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_notification_template") + ) + apn_p12_cert: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_p12_cert") + ) + apn_team_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_team_id") + ) + apn_topic: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_topic") + ) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) + disabled_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="disabled_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + disabled_reason: str | None = dc_field( + default=None, metadata=dc_config(field_name="disabled_reason") + ) + firebase_apn_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_apn_template") + ) + firebase_credentials: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_credentials") + ) + firebase_data_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_data_template") + ) + firebase_host: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_host") + ) + firebase_notification_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_notification_template") + ) + firebase_server_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_server_key") + ) + huawei_app_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="huawei_app_id") + ) + huawei_app_secret: str | None = dc_field( + default=None, metadata=dc_config(field_name="huawei_app_secret") + ) + huawei_host: str | None = dc_field( + default=None, metadata=dc_config(field_name="huawei_host") + ) + xiaomi_app_secret: str | None = dc_field( + default=None, metadata=dc_config(field_name="xiaomi_app_secret") + ) + xiaomi_package_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="xiaomi_package_name") + ) + push_templates: "list[PushTemplate] | None" = dc_field( + default=None, metadata=dc_config(field_name="push_templates") + ) + @dataclass class PushProviderRequest(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) - apn_auth_key: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_auth_key")) - apn_auth_type: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_auth_type")) - apn_development: bool | None = dc_field(default=None, metadata=dc_config(field_name="apn_development")) - apn_host: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_host")) - apn_key_id: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_key_id")) - apn_notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_notification_template")) - apn_p12_cert: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_p12_cert")) - apn_team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_team_id")) - apn_topic: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_topic")) - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) - disabled_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="disabled_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - disabled_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="disabled_reason")) - firebase_apn_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_apn_template")) - firebase_credentials: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_credentials")) - firebase_data_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_data_template")) - firebase_host: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_host")) - firebase_notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_notification_template")) - firebase_server_key: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_server_key")) - huawei_app_id: str | None = dc_field(default=None, metadata=dc_config(field_name="huawei_app_id")) - huawei_app_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="huawei_app_secret")) + apn_auth_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_auth_key") + ) + apn_auth_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_auth_type") + ) + apn_development: bool | None = dc_field( + default=None, metadata=dc_config(field_name="apn_development") + ) + apn_host: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_host") + ) + apn_key_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_key_id") + ) + apn_notification_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_notification_template") + ) + apn_p12_cert: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_p12_cert") + ) + apn_team_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_team_id") + ) + apn_topic: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_topic") + ) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) + disabled_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="disabled_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + disabled_reason: str | None = dc_field( + default=None, metadata=dc_config(field_name="disabled_reason") + ) + firebase_apn_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_apn_template") + ) + firebase_credentials: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_credentials") + ) + firebase_data_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_data_template") + ) + firebase_host: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_host") + ) + firebase_notification_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_notification_template") + ) + firebase_server_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_server_key") + ) + huawei_app_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="huawei_app_id") + ) + huawei_app_secret: str | None = dc_field( + default=None, metadata=dc_config(field_name="huawei_app_secret") + ) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - xiaomi_app_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="xiaomi_app_secret")) - xiaomi_package_name: str | None = dc_field(default=None, metadata=dc_config(field_name="xiaomi_package_name")) + xiaomi_app_secret: str | None = dc_field( + default=None, metadata=dc_config(field_name="xiaomi_app_secret") + ) + xiaomi_package_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="xiaomi_package_name") + ) + @dataclass class PushProviderResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) name: str = dc_field(metadata=dc_config(field_name="name")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - apn_auth_key: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_auth_key")) - apn_auth_type: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_auth_type")) - apn_development: bool | None = dc_field(default=None, metadata=dc_config(field_name="apn_development")) - apn_host: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_host")) - apn_key_id: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_key_id")) - apn_p12_cert: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_p12_cert")) - apn_sandbox_certificate: bool | None = dc_field(default=None, metadata=dc_config(field_name="apn_sandbox_certificate")) - apn_supports_remote_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="apn_supports_remote_notifications")) - apn_supports_voip_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="apn_supports_voip_notifications")) - apn_team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_team_id")) - apn_topic: str | None = dc_field(default=None, metadata=dc_config(field_name="apn_topic")) - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) - disabled_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="disabled_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - disabled_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="disabled_reason")) - firebase_apn_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_apn_template")) - firebase_credentials: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_credentials")) - firebase_data_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_data_template")) - firebase_host: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_host")) - firebase_notification_template: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_notification_template")) - firebase_server_key: str | None = dc_field(default=None, metadata=dc_config(field_name="firebase_server_key")) - huawei_app_id: str | None = dc_field(default=None, metadata=dc_config(field_name="huawei_app_id")) - huawei_app_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="huawei_app_secret")) - xiaomi_app_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="xiaomi_app_secret")) - xiaomi_package_name: str | None = dc_field(default=None, metadata=dc_config(field_name="xiaomi_package_name")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + apn_auth_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_auth_key") + ) + apn_auth_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_auth_type") + ) + apn_development: bool | None = dc_field( + default=None, metadata=dc_config(field_name="apn_development") + ) + apn_host: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_host") + ) + apn_key_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_key_id") + ) + apn_p12_cert: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_p12_cert") + ) + apn_sandbox_certificate: bool | None = dc_field( + default=None, metadata=dc_config(field_name="apn_sandbox_certificate") + ) + apn_supports_remote_notifications: bool | None = dc_field( + default=None, metadata=dc_config(field_name="apn_supports_remote_notifications") + ) + apn_supports_voip_notifications: bool | None = dc_field( + default=None, metadata=dc_config(field_name="apn_supports_voip_notifications") + ) + apn_team_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_team_id") + ) + apn_topic: str | None = dc_field( + default=None, metadata=dc_config(field_name="apn_topic") + ) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) + disabled_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="disabled_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + disabled_reason: str | None = dc_field( + default=None, metadata=dc_config(field_name="disabled_reason") + ) + firebase_apn_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_apn_template") + ) + firebase_credentials: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_credentials") + ) + firebase_data_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_data_template") + ) + firebase_host: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_host") + ) + firebase_notification_template: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_notification_template") + ) + firebase_server_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="firebase_server_key") + ) + huawei_app_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="huawei_app_id") + ) + huawei_app_secret: str | None = dc_field( + default=None, metadata=dc_config(field_name="huawei_app_secret") + ) + xiaomi_app_secret: str | None = dc_field( + default=None, metadata=dc_config(field_name="xiaomi_app_secret") + ) + xiaomi_package_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="xiaomi_package_name") + ) + @dataclass class PushTemplate(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) enable_push: bool = dc_field(metadata=dc_config(field_name="enable_push")) event_type: str = dc_field(metadata=dc_config(field_name="event_type")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - template: str | None = dc_field(default=None, metadata=dc_config(field_name="template")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + template: str | None = dc_field( + default=None, metadata=dc_config(field_name="template") + ) + @dataclass class PushTemplateResponse(DataClassJsonMixin): # Time when the template was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Whether push notification is enabled for this event enable_push: bool = dc_field(metadata=dc_config(field_name="enable_push")) # Type of event this template applies to event_type: str = dc_field(metadata=dc_config(field_name="event_type")) # Internal ID of the push provider - push_provider_internal_id: str = dc_field(metadata=dc_config(field_name="push_provider_internal_id")) + push_provider_internal_id: str = dc_field( + metadata=dc_config(field_name="push_provider_internal_id") + ) # Time when the template was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The push notification template - template: str | None = dc_field(default=None, metadata=dc_config(field_name="template")) + template: str | None = dc_field( + default=None, metadata=dc_config(field_name="template") + ) + @dataclass class Quality(DataClassJsonMixin): - viewer_interruption_note: str = dc_field(metadata=dc_config(field_name="viewer_interruption_note")) - interruption_incidents: 'list[Incident]' = dc_field(metadata=dc_config(field_name="interruption_incidents")) - connection_avg_jitter_ms: 'Percentiles' = dc_field(metadata=dc_config(field_name="connection_avg_jitter_ms")) - connection_avg_latency_ms: 'Percentiles' = dc_field(metadata=dc_config(field_name="connection_avg_latency_ms")) - score_bands_by_connection_pct: 'ScoreBands' = dc_field(metadata=dc_config(field_name="score_bands_by_connection_pct")) - score_bands_by_watch_time_pct: 'ScoreBands' = dc_field(metadata=dc_config(field_name="score_bands_by_watch_time_pct")) - p50_quality_score: float | None = dc_field(default=None, metadata=dc_config(field_name="p50_quality_score")) - p5_quality_score: float | None = dc_field(default=None, metadata=dc_config(field_name="p5_quality_score")) - viewer_interruption_rate_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="viewer_interruption_rate_pct")) + viewer_interruption_note: str = dc_field( + metadata=dc_config(field_name="viewer_interruption_note") + ) + interruption_incidents: "list[Incident]" = dc_field( + metadata=dc_config(field_name="interruption_incidents") + ) + connection_avg_jitter_ms: "Percentiles" = dc_field( + metadata=dc_config(field_name="connection_avg_jitter_ms") + ) + connection_avg_latency_ms: "Percentiles" = dc_field( + metadata=dc_config(field_name="connection_avg_latency_ms") + ) + score_bands_by_connection_pct: "ScoreBands" = dc_field( + metadata=dc_config(field_name="score_bands_by_connection_pct") + ) + score_bands_by_watch_time_pct: "ScoreBands" = dc_field( + metadata=dc_config(field_name="score_bands_by_watch_time_pct") + ) + p50_quality_score: float | None = dc_field( + default=None, metadata=dc_config(field_name="p50_quality_score") + ) + p5_quality_score: float | None = dc_field( + default=None, metadata=dc_config(field_name="p5_quality_score") + ) + viewer_interruption_rate_pct: float | None = dc_field( + default=None, metadata=dc_config(field_name="viewer_interruption_rate_pct") + ) + @dataclass class QualityScoreReport(DataClassJsonMixin): - histogram: 'list[ReportByHistogramBucket]' = dc_field(metadata=dc_config(field_name="histogram")) + histogram: "list[ReportByHistogramBucket]" = dc_field( + metadata=dc_config(field_name="histogram") + ) + @dataclass class QualityScoreReportResponse(DataClassJsonMixin): - daily: 'list[DailyAggregateQualityScoreReportResponse]' = dc_field(metadata=dc_config(field_name="daily")) + daily: "list[DailyAggregateQualityScoreReportResponse]" = dc_field( + metadata=dc_config(field_name="daily") + ) + @dataclass class QueryActivitiesRequest(DataClassJsonMixin): - enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) + enrich_own_fields: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_fields") + ) # When true, include both expired and non-expired activities in the result. - include_expired_activities: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_expired_activities")) - include_private_activities: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_private_activities")) + include_expired_activities: bool | None = dc_field( + default=None, metadata=dc_config(field_name="include_expired_activities") + ) + include_private_activities: bool | None = dc_field( + default=None, metadata=dc_config(field_name="include_private_activities") + ) # When true, include soft-deleted activities in the result. - include_soft_deleted_activities: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_soft_deleted_activities")) + include_soft_deleted_activities: bool | None = dc_field( + default=None, metadata=dc_config(field_name="include_soft_deleted_activities") + ) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Sorting parameters for the query - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filters to apply to the query. Supports location-based queries with 'near' and 'within_bounds' operators. - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryActivitiesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of activities matching the query - activities: 'list[ActivityResponse]' = dc_field(metadata=dc_config(field_name="activities")) + activities: "list[ActivityResponse]" = dc_field( + metadata=dc_config(field_name="activities") + ) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryActivityReactionsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filters to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + @dataclass class QueryActivityReactionsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="reactions")) + reactions: "list[FeedsReactionResponse]" = dc_field( + metadata=dc_config(field_name="reactions") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryActivitySharesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - shares: 'list[ShareResponse]' = dc_field(metadata=dc_config(field_name="shares")) + shares: "list[ShareResponse]" = dc_field(metadata=dc_config(field_name="shares")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryAggregateCallStatsRequest(DataClassJsonMixin): _from: str | None = dc_field(default=None, metadata=dc_config(field_name="from")) to: str | None = dc_field(default=None, metadata=dc_config(field_name="to")) - report_types: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="report_types")) + report_types: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="report_types") + ) + @dataclass class QueryAggregateCallStatsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - call_duration_report: 'CallDurationReportResponse | None' = dc_field(default=None, metadata=dc_config(field_name="call_duration_report")) - call_participant_count_report: 'CallParticipantCountReportResponse | None' = dc_field(default=None, metadata=dc_config(field_name="call_participant_count_report")) - calls_per_day_report: 'CallsPerDayReportResponse | None' = dc_field(default=None, metadata=dc_config(field_name="calls_per_day_report")) - network_metrics_report: 'NetworkMetricsReportResponse | None' = dc_field(default=None, metadata=dc_config(field_name="network_metrics_report")) - quality_score_report: 'QualityScoreReportResponse | None' = dc_field(default=None, metadata=dc_config(field_name="quality_score_report")) - sdk_usage_report: 'SDKUsageReportResponse | None' = dc_field(default=None, metadata=dc_config(field_name="sdk_usage_report")) - user_feedback_report: 'UserFeedbackReportResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user_feedback_report")) + call_duration_report: "CallDurationReportResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="call_duration_report") + ) + call_participant_count_report: "CallParticipantCountReportResponse | None" = ( + dc_field( + default=None, metadata=dc_config(field_name="call_participant_count_report") + ) + ) + calls_per_day_report: "CallsPerDayReportResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="calls_per_day_report") + ) + network_metrics_report: "NetworkMetricsReportResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="network_metrics_report") + ) + quality_score_report: "QualityScoreReportResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="quality_score_report") + ) + sdk_usage_report: "SDKUsageReportResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="sdk_usage_report") + ) + user_feedback_report: "UserFeedbackReportResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user_feedback_report") + ) + @dataclass class QueryAppealsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Sorting parameters for appeals - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter conditions for appeals - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryAppealsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of Appeal Items - items: 'list[AppealItemResponse]' = dc_field(metadata=dc_config(field_name="items")) + items: "list[AppealItemResponse]" = dc_field(metadata=dc_config(field_name="items")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryBannedUsersPayload(DataClassJsonMixin): # Filter conditions to apply to the query - filter_conditions: dict[str, object] = dc_field(metadata=dc_config(field_name="filter_conditions")) + filter_conditions: dict[str, object] = dc_field( + metadata=dc_config(field_name="filter_conditions") + ) # Whether to exclude expired bans or not - exclude_expired_bans: bool | None = dc_field(default=None, metadata=dc_config(field_name="exclude_expired_bans")) + exclude_expired_bans: bool | None = dc_field( + default=None, metadata=dc_config(field_name="exclude_expired_bans") + ) # Number of records to return limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) # Number of records to offset offset: int | None = dc_field(default=None, metadata=dc_config(field_name="offset")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryBannedUsersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of found bans - bans: 'list[BanResponse]' = dc_field(metadata=dc_config(field_name="bans")) + bans: "list[BanResponse]" = dc_field(metadata=dc_config(field_name="bans")) + @dataclass class QueryBookmarkFoldersRequest(DataClassJsonMixin): @@ -10753,44 +21687,66 @@ class QueryBookmarkFoldersRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Sorting parameters for the query - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filters to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + @dataclass class QueryBookmarkFoldersResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of bookmark folders matching the query - bookmark_folders: 'list[BookmarkFolderResponse]' = dc_field(metadata=dc_config(field_name="bookmark_folders")) + bookmark_folders: "list[BookmarkFolderResponse]" = dc_field( + metadata=dc_config(field_name="bookmark_folders") + ) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryBookmarksRequest(DataClassJsonMixin): - enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) + enrich_own_fields: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_fields") + ) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Sorting parameters for the query - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filters to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryBookmarksResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of bookmarks matching the query - bookmarks: 'list[BookmarkResponse]' = dc_field(metadata=dc_config(field_name="bookmarks")) + bookmarks: "list[BookmarkResponse]" = dc_field( + metadata=dc_config(field_name="bookmarks") + ) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryCallMembersRequest(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) @@ -10799,18 +21755,24 @@ class QueryCallMembersRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) + filter_conditions: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_conditions") + ) + @dataclass class QueryCallMembersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryCallParticipantSessionsResponse(DataClassJsonMixin): call_id: str = dc_field(metadata=dc_config(field_name="call_id")) @@ -10818,28 +21780,47 @@ class QueryCallParticipantSessionsResponse(DataClassJsonMixin): call_type: str = dc_field(metadata=dc_config(field_name="call_type")) # Duration of the request in milliseconds duration: int = dc_field(metadata=dc_config(field_name="duration")) - total_participant_duration: int = dc_field(metadata=dc_config(field_name="total_participant_duration")) - total_participant_sessions: int = dc_field(metadata=dc_config(field_name="total_participant_sessions")) - participants_sessions: 'list[ParticipantSessionDetails]' = dc_field(metadata=dc_config(field_name="participants_sessions")) + total_participant_duration: int = dc_field( + metadata=dc_config(field_name="total_participant_duration") + ) + total_participant_sessions: int = dc_field( + metadata=dc_config(field_name="total_participant_sessions") + ) + participants_sessions: "list[ParticipantSessionDetails]" = dc_field( + metadata=dc_config(field_name="participants_sessions") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - session: 'CallSessionResponse | None' = dc_field(default=None, metadata=dc_config(field_name="session")) + session: "CallSessionResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="session") + ) + @dataclass class QueryCallParticipantsRequest(DataClassJsonMixin): # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) + filter_conditions: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_conditions") + ) + @dataclass class QueryCallParticipantsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - total_participants: int = dc_field(metadata=dc_config(field_name="total_participants")) - members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) - own_capabilities: 'list[OwnCapability]' = dc_field(metadata=dc_config(field_name="own_capabilities")) + total_participants: int = dc_field( + metadata=dc_config(field_name="total_participants") + ) + members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) + own_capabilities: "list[OwnCapability]" = dc_field( + metadata=dc_config(field_name="own_capabilities") + ) # List of call participants - participants: 'list[CallParticipantResponse]' = dc_field(metadata=dc_config(field_name="participants")) + participants: "list[CallParticipantResponse]" = dc_field( + metadata=dc_config(field_name="participants") + ) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + @dataclass class QueryCallSessionParticipantStatsResponse(DataClassJsonMixin): @@ -10848,14 +21829,39 @@ class QueryCallSessionParticipantStatsResponse(DataClassJsonMixin): call_type: str = dc_field(metadata=dc_config(field_name="call_type")) # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - participants: 'list[CallStatsParticipant]' = dc_field(metadata=dc_config(field_name="participants")) - counts: 'CallStatsParticipantCounts' = dc_field(metadata=dc_config(field_name="counts")) - call_ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="call_ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - call_started_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="call_started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + participants: "list[CallStatsParticipant]" = dc_field( + metadata=dc_config(field_name="participants") + ) + counts: "CallStatsParticipantCounts" = dc_field( + metadata=dc_config(field_name="counts") + ) + call_ended_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="call_ended_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + call_started_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="call_started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - tmp_data_source: str | None = dc_field(default=None, metadata=dc_config(field_name="tmp_data_source")) - call_events: 'list[CallLevelEventPayload] | None' = dc_field(default=None, metadata=dc_config(field_name="call_events")) + tmp_data_source: str | None = dc_field( + default=None, metadata=dc_config(field_name="tmp_data_source") + ) + call_events: "list[CallLevelEventPayload] | None" = dc_field( + default=None, metadata=dc_config(field_name="call_events") + ) + @dataclass class QueryCallSessionParticipantStatsTimelineResponse(DataClassJsonMixin): @@ -10866,7 +21872,10 @@ class QueryCallSessionParticipantStatsTimelineResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) user_session_id: str = dc_field(metadata=dc_config(field_name="user_session_id")) - events: 'list[CallParticipantTimeline]' = dc_field(metadata=dc_config(field_name="events")) + events: "list[CallParticipantTimeline]" = dc_field( + metadata=dc_config(field_name="events") + ) + @dataclass class QueryCallSessionStatsRequest(DataClassJsonMixin): @@ -10874,18 +21883,26 @@ class QueryCallSessionStatsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) + filter_conditions: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_conditions") + ) + @dataclass class QueryCallSessionStatsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - call_stats: 'list[CallStatsSessionResponse]' = dc_field(metadata=dc_config(field_name="call_stats")) + call_stats: "list[CallStatsSessionResponse]" = dc_field( + metadata=dc_config(field_name="call_stats") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryCallStatsMapResponse(DataClassJsonMixin): call_id: str = dc_field(metadata=dc_config(field_name="call_id")) @@ -10893,16 +21910,67 @@ class QueryCallStatsMapResponse(DataClassJsonMixin): call_type: str = dc_field(metadata=dc_config(field_name="call_type")) # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - counts: 'CallStatsParticipantCounts' = dc_field(metadata=dc_config(field_name="counts")) - call_ended_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="call_ended_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - call_started_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="call_started_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - data_source: str | None = dc_field(default=None, metadata=dc_config(field_name="data_source")) - end_time: datetime | None = dc_field(default=None, metadata=dc_config(field_name="end_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - generated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="generated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - start_time: datetime | None = dc_field(default=None, metadata=dc_config(field_name="start_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - publishers: 'CallStatsMapPublishers | None' = dc_field(default=None, metadata=dc_config(field_name="publishers")) - sfus: 'CallStatsMapSFUs | None' = dc_field(default=None, metadata=dc_config(field_name="sfus")) - subscribers: 'CallStatsMapSubscribers | None' = dc_field(default=None, metadata=dc_config(field_name="subscribers")) + counts: "CallStatsParticipantCounts" = dc_field( + metadata=dc_config(field_name="counts") + ) + call_ended_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="call_ended_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + call_started_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="call_started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + data_source: str | None = dc_field( + default=None, metadata=dc_config(field_name="data_source") + ) + end_time: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="end_time", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + generated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="generated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + start_time: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="start_time", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + publishers: "CallStatsMapPublishers | None" = dc_field( + default=None, metadata=dc_config(field_name="publishers") + ) + sfus: "CallStatsMapSFUs | None" = dc_field( + default=None, metadata=dc_config(field_name="sfus") + ) + subscribers: "CallStatsMapSubscribers | None" = dc_field( + default=None, metadata=dc_config(field_name="subscribers") + ) + @dataclass class QueryCallStatsRequest(DataClassJsonMixin): @@ -10910,237 +21978,365 @@ class QueryCallStatsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) + filter_conditions: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_conditions") + ) + @dataclass class QueryCallStatsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - reports: 'list[CallStatsReportSummaryResponse]' = dc_field(metadata=dc_config(field_name="reports")) + reports: "list[CallStatsReportSummaryResponse]" = dc_field( + metadata=dc_config(field_name="reports") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryCallsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) + filter_conditions: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_conditions") + ) + @dataclass class QueryCallsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - calls: 'list[CallStateResponseFields]' = dc_field(metadata=dc_config(field_name="calls")) + calls: "list[CallStateResponseFields]" = dc_field( + metadata=dc_config(field_name="calls") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryCampaignsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="user_limit")) - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + user_limit: int | None = dc_field( + default=None, metadata=dc_config(field_name="user_limit") + ) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + @dataclass class QueryCampaignsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - campaigns: 'list[CampaignResponse]' = dc_field(metadata=dc_config(field_name="campaigns")) + campaigns: "list[CampaignResponse]" = dc_field( + metadata=dc_config(field_name="campaigns") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryChannelsRequest(DataClassJsonMixin): # Number of channels to limit limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) # Number of members to limit - member_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="member_limit")) + member_limit: int | None = dc_field( + default=None, metadata=dc_config(field_name="member_limit") + ) # Number of messages to limit - message_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="message_limit")) + message_limit: int | None = dc_field( + default=None, metadata=dc_config(field_name="message_limit") + ) # Channel pagination offset offset: int | None = dc_field(default=None, metadata=dc_config(field_name="offset")) # ID of a predefined filter to use instead of filter_conditions - predefined_filter: str | None = dc_field(default=None, metadata=dc_config(field_name="predefined_filter")) + predefined_filter: str | None = dc_field( + default=None, metadata=dc_config(field_name="predefined_filter") + ) # Whether to update channel state or not state: bool | None = dc_field(default=None, metadata=dc_config(field_name="state")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Top-level keys of the message sender's channel-member custom data to include under member.custom (max 8 keys, 64 chars each) - member_custom_include: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="member_custom_include")) + member_custom_include: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="member_custom_include") + ) # List of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) + filter_conditions: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_conditions") + ) # Values to interpolate into the predefined filter template - filter_values: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_values")) - sort_values: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="sort_values")) + filter_values: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_values") + ) + sort_values: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="sort_values") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryChannelsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of channels - channels: 'list[ChannelStateResponseFields]' = dc_field(metadata=dc_config(field_name="channels")) - predefined_filter: 'ParsedPredefinedFilterResponse | None' = dc_field(default=None, metadata=dc_config(field_name="predefined_filter")) + channels: "list[ChannelStateResponseFields]" = dc_field( + metadata=dc_config(field_name="channels") + ) + predefined_filter: "ParsedPredefinedFilterResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="predefined_filter") + ) + @dataclass class QueryCollectionsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Sorting parameters for the query - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filters to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryCollectionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of collections matching the query - collections: 'list[CollectionResponse]' = dc_field(metadata=dc_config(field_name="collections")) + collections: "list[CollectionResponse]" = dc_field( + metadata=dc_config(field_name="collections") + ) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryCommentReactionsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filters to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + @dataclass class QueryCommentReactionsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="reactions")) + reactions: "list[FeedsReactionResponse]" = dc_field( + metadata=dc_config(field_name="reactions") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryCommentsRequest(DataClassJsonMixin): # Filter to apply to the query filter: dict[str, object] = dc_field(metadata=dc_config(field_name="filter")) # Returns the comment with the specified ID along with surrounding comments for context - id_around: str | None = dc_field(default=None, metadata=dc_config(field_name="id_around")) + id_around: str | None = dc_field( + default=None, metadata=dc_config(field_name="id_around") + ) # Maximum number of comments to return limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters sort: str | None = dc_field(default=None, metadata=dc_config(field_name="sort")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryCommentsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of comments matching the query - comments: 'list[CommentResponse]' = dc_field(metadata=dc_config(field_name="comments")) + comments: "list[CommentResponse]" = dc_field( + metadata=dc_config(field_name="comments") + ) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryDraftsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryDraftsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Drafts - drafts: 'list[DraftResponse]' = dc_field(metadata=dc_config(field_name="drafts")) + drafts: "list[DraftResponse]" = dc_field(metadata=dc_config(field_name="drafts")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryFeedMembersRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Sort parameters for the query - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter parameters for the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + @dataclass class QueryFeedMembersResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of feed members - members: 'list[FeedMemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + members: "list[FeedMemberResponse]" = dc_field( + metadata=dc_config(field_name="members") + ) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryFeedModerationTemplate(DataClassJsonMixin): # When the template was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Name of the moderation template name: str = dc_field(metadata=dc_config(field_name="name")) # When the template was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Configuration for a feeds moderation template - config: 'FeedsModerationTemplateConfigPayload | None' = dc_field(default=None, metadata=dc_config(field_name="config")) + config: "FeedsModerationTemplateConfigPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="config") + ) + @dataclass class QueryFeedModerationTemplatesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of moderation templates - templates: 'list[QueryFeedModerationTemplate]' = dc_field(metadata=dc_config(field_name="templates")) + templates: "list[QueryFeedModerationTemplate]" = dc_field( + metadata=dc_config(field_name="templates") + ) + @dataclass class QueryFeedsRequest(DataClassJsonMixin): - enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) + enrich_own_fields: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_fields") + ) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Whether to subscribe to realtime updates watch: bool | None = dc_field(default=None, metadata=dc_config(field_name="watch")) # Sorting parameters for the query - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filters to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + @dataclass class QueryFeedsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of feeds matching the query - feeds: 'list[FeedResponse]' = dc_field(metadata=dc_config(field_name="feeds")) + feeds: "list[FeedResponse]" = dc_field(metadata=dc_config(field_name="feeds")) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryFeedsUsageStatsRequest(DataClassJsonMixin): # Start date in YYYY-MM-DD format (optional, defaults to 30 days ago) @@ -11148,14 +22344,26 @@ class QueryFeedsUsageStatsRequest(DataClassJsonMixin): # End date in YYYY-MM-DD format (optional, defaults to today) to: str | None = dc_field(default=None, metadata=dc_config(field_name="to")) + @dataclass class QueryFeedsUsageStatsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activities: 'DailyMetricStatsResponse' = dc_field(metadata=dc_config(field_name="activities")) - api_requests: 'DailyMetricStatsResponse' = dc_field(metadata=dc_config(field_name="api_requests")) - follows: 'DailyMetricStatsResponse' = dc_field(metadata=dc_config(field_name="follows")) - openai_requests: 'DailyMetricStatsResponse' = dc_field(metadata=dc_config(field_name="openai_requests")) - emau: 'EMAUStatsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="emau")) + activities: "DailyMetricStatsResponse" = dc_field( + metadata=dc_config(field_name="activities") + ) + api_requests: "DailyMetricStatsResponse" = dc_field( + metadata=dc_config(field_name="api_requests") + ) + follows: "DailyMetricStatsResponse" = dc_field( + metadata=dc_config(field_name="follows") + ) + openai_requests: "DailyMetricStatsResponse" = dc_field( + metadata=dc_config(field_name="openai_requests") + ) + emau: "EMAUStatsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="emau") + ) + @dataclass class QueryFollowsRequest(DataClassJsonMixin): @@ -11163,80 +22371,123 @@ class QueryFollowsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Sorting parameters for the query - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filters to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + @dataclass class QueryFollowsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of follow relationships matching the query - follows: 'list[FollowResponse]' = dc_field(metadata=dc_config(field_name="follows")) + follows: "list[FollowResponse]" = dc_field(metadata=dc_config(field_name="follows")) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryFutureChannelBansPayload(DataClassJsonMixin): # Whether to exclude expired bans or not - exclude_expired_bans: bool | None = dc_field(default=None, metadata=dc_config(field_name="exclude_expired_bans")) + exclude_expired_bans: bool | None = dc_field( + default=None, metadata=dc_config(field_name="exclude_expired_bans") + ) # When true, the response includes the total number of bans matching the query filter (independent of limit and offset, capped at 100000) - include_total: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_total")) + include_total: bool | None = dc_field( + default=None, metadata=dc_config(field_name="include_total") + ) # Number of records to return limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) # Number of records to offset offset: int | None = dc_field(default=None, metadata=dc_config(field_name="offset")) # Filter by the target user ID. Server-side: returns all bans against this user. Client-side: narrows the authenticated user's own bans to this target. - target_user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="target_user_id")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + target_user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="target_user_id") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryFutureChannelBansResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of found future channel bans - bans: 'list[FutureChannelBanResponse]' = dc_field(metadata=dc_config(field_name="bans")) + bans: "list[FutureChannelBanResponse]" = dc_field( + metadata=dc_config(field_name="bans") + ) # Total number of bans matching the query filter, computed at query time and capped at 100000. Only present when include_total is set on the request; omitted when computing the total timed out total: int | None = dc_field(default=None, metadata=dc_config(field_name="total")) + @dataclass class QueryLabelResultsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Sorting parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter conditions - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryLabelResultsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of moderation label results - label_results: 'list[LabelResultResponse]' = dc_field(metadata=dc_config(field_name="label_results")) + label_results: "list[LabelResultResponse]" = dc_field( + metadata=dc_config(field_name="label_results") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryMembersPayload(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) offset: int | None = dc_field(default=None, metadata=dc_config(field_name="offset")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - members: 'list[ChannelMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + members: "list[ChannelMemberRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="members") + ) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) + filter_conditions: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_conditions") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryMembershipLevelsRequest(DataClassJsonMixin): @@ -11244,39 +22495,61 @@ class QueryMembershipLevelsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Sorting parameters for the query - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filters to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + @dataclass class QueryMembershipLevelsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - membership_levels: 'list[MembershipLevelResponse]' = dc_field(metadata=dc_config(field_name="membership_levels")) + membership_levels: "list[MembershipLevelResponse]" = dc_field( + metadata=dc_config(field_name="membership_levels") + ) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryMessageFlagsPayload(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) offset: int | None = dc_field(default=None, metadata=dc_config(field_name="offset")) # Whether to include deleted messages in the results - show_deleted_messages: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_deleted_messages")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + show_deleted_messages: bool | None = dc_field( + default=None, metadata=dc_config(field_name="show_deleted_messages") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) + filter_conditions: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_conditions") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryMessageFlagsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # The flags that match the query - flags: 'list[MessageFlagResponse]' = dc_field(metadata=dc_config(field_name="flags")) + flags: "list[MessageFlagResponse]" = dc_field( + metadata=dc_config(field_name="flags") + ) + @dataclass class QueryMessageHistoryRequest(DataClassJsonMixin): @@ -11286,143 +22559,218 @@ class QueryMessageHistoryRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) + @dataclass class QueryMessageHistoryResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Message history entries - message_history: 'list[MessageHistoryEntryResponse]' = dc_field(metadata=dc_config(field_name="message_history")) + message_history: "list[MessageHistoryEntryResponse]" = dc_field( + metadata=dc_config(field_name="message_history") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryModerationConfigsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Sorting parameters for the results - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter conditions for moderation configs - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryModerationConfigsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of moderation configurations - configs: 'list[ConfigResponse]' = dc_field(metadata=dc_config(field_name="configs")) + configs: "list[ConfigResponse]" = dc_field(metadata=dc_config(field_name="configs")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryModerationFlagsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter conditions for moderation flags - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + @dataclass class QueryModerationFlagsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - flags: 'list[ModerationFlagResponse]' = dc_field(metadata=dc_config(field_name="flags")) + flags: "list[ModerationFlagResponse]" = dc_field( + metadata=dc_config(field_name="flags") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryModerationLogsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Sorting parameters for the results - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter conditions for moderation logs - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryModerationLogsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of moderation action logs - logs: 'list[ActionLogResponse]' = dc_field(metadata=dc_config(field_name="logs")) + logs: "list[ActionLogResponse]" = dc_field(metadata=dc_config(field_name="logs")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryModerationRulesRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Sorting parameters for the results - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter conditions for moderation rules - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryModerationRulesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # AI image label definitions with metadata for dashboard rendering - ai_image_label_definitions: 'list[AIImageLabelDefinition]' = dc_field(metadata=dc_config(field_name="ai_image_label_definitions")) + ai_image_label_definitions: "list[AIImageLabelDefinition]" = dc_field( + metadata=dc_config(field_name="ai_image_label_definitions") + ) # Available harm labels for closed caption rules - closed_caption_labels: list[str] = dc_field(metadata=dc_config(field_name="closed_caption_labels")) + closed_caption_labels: list[str] = dc_field( + metadata=dc_config(field_name="closed_caption_labels") + ) # Deprecated: use keyframe_label_classifications instead. Available L1 harm labels for keyframe rules - keyframe_labels: list[str] = dc_field(metadata=dc_config(field_name="keyframe_labels")) + keyframe_labels: list[str] = dc_field( + metadata=dc_config(field_name="keyframe_labels") + ) # Available harm labels for OCR-based rule conditions (keyframe_ocr_rule and ocr_content). Mirrors `closed_caption_labels` today but kept as a separate field so the pickers can diverge later. ocr_labels: list[str] = dc_field(metadata=dc_config(field_name="ocr_labels")) # List of moderation rules - rules: 'list[ModerationRuleV2Response]' = dc_field(metadata=dc_config(field_name="rules")) + rules: "list[ModerationRuleV2Response]" = dc_field( + metadata=dc_config(field_name="rules") + ) # Stream L1 to leaf-level label name mapping for AI image rules - ai_image_subclassifications: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="ai_image_subclassifications")) + ai_image_subclassifications: "dict[str, list[str]]" = dc_field( + metadata=dc_config(field_name="ai_image_subclassifications") + ) # Default LLM label descriptions - default_llm_labels: 'dict[str, str]' = dc_field(metadata=dc_config(field_name="default_llm_labels")) + default_llm_labels: "dict[str, str]" = dc_field( + metadata=dc_config(field_name="default_llm_labels") + ) # Recommended LLM label descriptions for username-scoped policies (key starts with 'username:'). Used by /moderation/v2/labels fast-path. - default_username_llm_labels: 'dict[str, str]' = dc_field(metadata=dc_config(field_name="default_username_llm_labels")) + default_username_llm_labels: "dict[str, str]" = dc_field( + metadata=dc_config(field_name="default_username_llm_labels") + ) # L1 to L2 mapping of keyframe harm label classifications - keyframe_label_classifications: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="keyframe_label_classifications")) + keyframe_label_classifications: "dict[str, list[str]]" = dc_field( + metadata=dc_config(field_name="keyframe_label_classifications") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryPinnedActivitiesRequest(DataClassJsonMixin): - enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) + enrich_own_fields: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_fields") + ) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Sorting parameters for the query - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filters to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + @dataclass class QueryPinnedActivitiesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of pinned activities matching the query - pinned_activities: 'list[ActivityPinResponse]' = dc_field(metadata=dc_config(field_name="pinned_activities")) + pinned_activities: "list[ActivityPinResponse]" = dc_field( + metadata=dc_config(field_name="pinned_activities") + ) # Cursor for next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Cursor for previous page prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryPollVotesRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + @dataclass class QueryPollsRequest(DataClassJsonMixin): @@ -11430,106 +22778,167 @@ class QueryPollsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + @dataclass class QueryPollsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Polls data returned by the query - polls: 'list[PollResponseData]' = dc_field(metadata=dc_config(field_name="polls")) + polls: "list[PollResponseData]" = dc_field(metadata=dc_config(field_name="polls")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryPredefinedFiltersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Predefined filters - predefined_filters: 'list[PredefinedFilterResponse]' = dc_field(metadata=dc_config(field_name="predefined_filters")) + predefined_filters: "list[PredefinedFilterResponse]" = dc_field( + metadata=dc_config(field_name="predefined_filters") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryReactionsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryReactionsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - reactions: 'list[ReactionResponse]' = dc_field(metadata=dc_config(field_name="reactions")) + reactions: "list[ReactionResponse]" = dc_field( + metadata=dc_config(field_name="reactions") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryRemindersRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryRemindersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # MessageReminders data returned by the query - reminders: 'list[ReminderResponseData]' = dc_field(metadata=dc_config(field_name="reminders")) + reminders: "list[ReminderResponseData]" = dc_field( + metadata=dc_config(field_name="reminders") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryReviewQueueRequest(DataClassJsonMixin): - exclude_default_action_config: bool | None = dc_field(default=None, metadata=dc_config(field_name="exclude_default_action_config")) + exclude_default_action_config: bool | None = dc_field( + default=None, metadata=dc_config(field_name="exclude_default_action_config") + ) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) # Number of items to lock (1-25) - lock_count: int | None = dc_field(default=None, metadata=dc_config(field_name="lock_count")) + lock_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="lock_count") + ) # Duration for which items should be locked - lock_duration: int | None = dc_field(default=None, metadata=dc_config(field_name="lock_duration")) + lock_duration: int | None = dc_field( + default=None, metadata=dc_config(field_name="lock_duration") + ) # Whether to lock items for review (true), unlock items (false), or just fetch (nil) - lock_items: bool | None = dc_field(default=None, metadata=dc_config(field_name="lock_items")) + lock_items: bool | None = dc_field( + default=None, metadata=dc_config(field_name="lock_items") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Whether to return only statistics - stats_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="stats_only")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + stats_only: bool | None = dc_field( + default=None, metadata=dc_config(field_name="stats_only") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Sorting parameters for the results - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter conditions for review queue items. Accepts built-in fields (e.g. status, channel_cid, severity, recommended_action) and customer-supplied moderation_payload.custom keys: any key that is not a built-in field is matched against the item's custom moderation data (e.g. {"location_id": "loc-42"}). Use filter_config.filterable_custom_keys to discover which custom keys the app exposes as chips. - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryReviewQueueResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of review queue items - items: 'list[ReviewQueueItemResponse]' = dc_field(metadata=dc_config(field_name="items")) + items: "list[ReviewQueueItemResponse]" = dc_field( + metadata=dc_config(field_name="items") + ) # Configuration for moderation actions - action_config: 'dict[str, list[ModerationActionConfigResponse]]' = dc_field(metadata=dc_config(field_name="action_config")) + action_config: "dict[str, list[ModerationActionConfigResponse]]" = dc_field( + metadata=dc_config(field_name="action_config") + ) # Statistics about the review queue stats: dict[str, object] = dc_field(metadata=dc_config(field_name="stats")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - default_action_config: 'dict[str, list[ModerationActionConfigResponse]] | None' = dc_field(default=None, metadata=dc_config(field_name="default_action_config")) - filter_config: 'FilterConfigResponse | None' = dc_field(default=None, metadata=dc_config(field_name="filter_config")) + default_action_config: "dict[str, list[ModerationActionConfigResponse]] | None" = ( + dc_field(default=None, metadata=dc_config(field_name="default_action_config")) + ) + filter_config: "FilterConfigResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="filter_config") + ) + @dataclass class QueryRevisionHistoryRequest(DataClassJsonMixin): @@ -11539,17 +22948,23 @@ class QueryRevisionHistoryRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) + @dataclass class QueryRevisionHistoryResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Revision history entries - revisions: 'list[RevisionHistoryResponse]' = dc_field(metadata=dc_config(field_name="revisions")) + revisions: "list[RevisionHistoryResponse]" = dc_field( + metadata=dc_config(field_name="revisions") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QuerySegmentTargetsRequest(DataClassJsonMixin): # Limit @@ -11558,18 +22973,26 @@ class QuerySegmentTargetsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Prev prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="Sort")) - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="Filter")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="Sort") + ) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="Filter") + ) + @dataclass class QuerySegmentTargetsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Targets - targets: 'list[SegmentTargetResponse]' = dc_field(metadata=dc_config(field_name="targets")) + targets: "list[SegmentTargetResponse]" = dc_field( + metadata=dc_config(field_name="targets") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QuerySegmentsRequest(DataClassJsonMixin): # Filter to apply to the query @@ -11578,21 +23001,29 @@ class QuerySegmentsRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) + @dataclass class QuerySegmentsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Segments - segments: 'list[SegmentResponse]' = dc_field(metadata=dc_config(field_name="segments")) + segments: "list[SegmentResponse]" = dc_field( + metadata=dc_config(field_name="segments") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryTeamUsageStatsRequest(DataClassJsonMixin): # End date in YYYY-MM-DD format. Used with start_date for custom date range. Returns daily breakdown. - end_date: str | None = dc_field(default=None, metadata=dc_config(field_name="end_date")) + end_date: str | None = dc_field( + default=None, metadata=dc_config(field_name="end_date") + ) # Maximum number of teams to return per page (default: 30, max: 30) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) # Month in YYYY-MM format (e.g., '2026-01'). Mutually exclusive with start_date/end_date. Returns aggregated monthly values. @@ -11600,90 +23031,137 @@ class QueryTeamUsageStatsRequest(DataClassJsonMixin): # Cursor for pagination to fetch next page of teams next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Start date in YYYY-MM-DD format. Used with end_date for custom date range. Returns daily breakdown. - start_date: str | None = dc_field(default=None, metadata=dc_config(field_name="start_date")) + start_date: str | None = dc_field( + default=None, metadata=dc_config(field_name="start_date") + ) # Filter results to a single team ID. Empty string selects users not assigned to any team. Mutually exclusive with 'next'. team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) + @dataclass class QueryTeamUsageStatsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Array of team usage statistics - teams: 'list[TeamUsageStats]' = dc_field(metadata=dc_config(field_name="teams")) + teams: "list[TeamUsageStats]" = dc_field(metadata=dc_config(field_name="teams")) # Cursor for pagination to fetch next page next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) + @dataclass class QueryThreadsRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) - member_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="member_limit")) + member_limit: int | None = dc_field( + default=None, metadata=dc_config(field_name="member_limit") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Limit the number of participants returned per each thread - participant_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="participant_limit")) + participant_limit: int | None = dc_field( + default=None, metadata=dc_config(field_name="participant_limit") + ) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Limit the number of replies returned per each thread - reply_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="reply_limit")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + reply_limit: int | None = dc_field( + default=None, metadata=dc_config(field_name="reply_limit") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryThreadsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of enriched thread states - threads: 'list[ThreadStateResponse]' = dc_field(metadata=dc_config(field_name="threads")) + threads: "list[ThreadStateResponse]" = dc_field( + metadata=dc_config(field_name="threads") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryUserFeedbackRequest(DataClassJsonMixin): limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Filter conditions to apply to the query - filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter_conditions")) + filter_conditions: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_conditions") + ) + @dataclass class QueryUserFeedbackResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - user_feedback: 'list[UserFeedbackResponse]' = dc_field(metadata=dc_config(field_name="user_feedback")) + user_feedback: "list[UserFeedbackResponse]" = dc_field( + metadata=dc_config(field_name="user_feedback") + ) next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) + @dataclass class QueryUsersPayload(DataClassJsonMixin): # Filter conditions to apply to the query - filter_conditions: dict[str, object] = dc_field(metadata=dc_config(field_name="filter_conditions")) - include_deactivated_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_deactivated_users")) + filter_conditions: dict[str, object] = dc_field( + metadata=dc_config(field_name="filter_conditions") + ) + include_deactivated_users: bool | None = dc_field( + default=None, metadata=dc_config(field_name="include_deactivated_users") + ) limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) offset: int | None = dc_field(default=None, metadata=dc_config(field_name="offset")) - presence: bool | None = dc_field(default=None, metadata=dc_config(field_name="presence")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + presence: bool | None = dc_field( + default=None, metadata=dc_config(field_name="presence") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Array of sort parameters - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class QueryUsersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Array of users as result of filters applied. - users: 'list[FullUserResponse]' = dc_field(metadata=dc_config(field_name="users")) + users: "list[FullUserResponse]" = dc_field(metadata=dc_config(field_name="users")) + @dataclass class QueueResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - queue: 'ModerationQueueResponse | None' = dc_field(default=None, metadata=dc_config(field_name="queue")) + queue: "ModerationQueueResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="queue") + ) + @dataclass class RTMPBroadcastRequest(DataClassJsonMixin): @@ -11692,41 +23170,65 @@ class RTMPBroadcastRequest(DataClassJsonMixin): # URL for the RTMP server to send the call to stream_url: str = dc_field(metadata=dc_config(field_name="stream_url")) # If provided, will override the call's RTMP settings quality. One of: 360p, 480p, 720p, 1080p, 1440p, portrait-360x640, portrait-480x854, portrait-720x1280, portrait-1080x1920, portrait-1440x2560 - quality: str | None = dc_field(default=None, metadata=dc_config(field_name="quality")) + quality: str | None = dc_field( + default=None, metadata=dc_config(field_name="quality") + ) # If provided, will be appended at the end of stream_url - stream_key: str | None = dc_field(default=None, metadata=dc_config(field_name="stream_key")) - layout: 'LayoutSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="layout")) + stream_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="stream_key") + ) + layout: "LayoutSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="layout") + ) + @dataclass class RTMPIngress(DataClassJsonMixin): address: str = dc_field(metadata=dc_config(field_name="address")) + @dataclass class RTMPLocation(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) stream_key: str = dc_field(metadata=dc_config(field_name="stream_key")) stream_url: str = dc_field(metadata=dc_config(field_name="stream_url")) + @dataclass class RTMPSettings(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - quality_name: str | None = dc_field(default=None, metadata=dc_config(field_name="quality_name")) - layout: 'LayoutSettings | None' = dc_field(default=None, metadata=dc_config(field_name="layout")) - location: 'RTMPLocation | None' = dc_field(default=None, metadata=dc_config(field_name="location")) + quality_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="quality_name") + ) + layout: "LayoutSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="layout") + ) + location: "RTMPLocation | None" = dc_field( + default=None, metadata=dc_config(field_name="location") + ) + @dataclass class RTMPSettingsRequest(DataClassJsonMixin): # Whether RTMP broadcasting is enabled - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) # Resolution to set for the RTMP stream. One of: 360p, 480p, 720p, 1080p, 1440p, portrait-360x640, portrait-480x854, portrait-720x1280, portrait-1080x1920, portrait-1440x2560 - quality: str | None = dc_field(default=None, metadata=dc_config(field_name="quality")) - layout: 'LayoutSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="layout")) + quality: str | None = dc_field( + default=None, metadata=dc_config(field_name="quality") + ) + layout: "LayoutSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="layout") + ) + @dataclass class RTMPSettingsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) quality: str = dc_field(metadata=dc_config(field_name="quality")) - layout: 'LayoutSettingsResponse' = dc_field(metadata=dc_config(field_name="layout")) + layout: "LayoutSettingsResponse" = dc_field(metadata=dc_config(field_name="layout")) + @dataclass class RankingConfig(DataClassJsonMixin): @@ -11735,154 +23237,337 @@ class RankingConfig(DataClassJsonMixin): # Scoring formula. Required when type is 'expression' or 'interest' score: str | None = dc_field(default=None, metadata=dc_config(field_name="score")) # Default values for ranking - defaults: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="defaults")) + defaults: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="defaults") + ) # Decay functions configuration - functions: 'dict[str, DecayFunctionConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="functions")) + functions: "dict[str, DecayFunctionConfig] | None" = dc_field( + default=None, metadata=dc_config(field_name="functions") + ) + @dataclass class RawRecordSettings(DataClassJsonMixin): mode: str = dc_field(metadata=dc_config(field_name="mode")) - audio_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="audio_only")) + audio_only: bool | None = dc_field( + default=None, metadata=dc_config(field_name="audio_only") + ) + @dataclass class RawRecordingResponse(DataClassJsonMixin): status: str = dc_field(metadata=dc_config(field_name="status")) + @dataclass class RawRecordingSettingsRequest(DataClassJsonMixin): # Recording mode. One of: available, disabled, auto-on mode: str = dc_field(metadata=dc_config(field_name="mode")) # If true, only audio tracks will be recorded - audio_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="audio_only")) + audio_only: bool | None = dc_field( + default=None, metadata=dc_config(field_name="audio_only") + ) + @dataclass class RawRecordingSettingsResponse(DataClassJsonMixin): mode: str = dc_field(metadata=dc_config(field_name="mode")) - audio_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="audio_only")) + audio_only: bool | None = dc_field( + default=None, metadata=dc_config(field_name="audio_only") + ) + @dataclass class Reaction(DataClassJsonMixin): activity_id: str = dc_field(metadata=dc_config(field_name="activity_id")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) kind: str = dc_field(metadata=dc_config(field_name="kind")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) parent: str | None = dc_field(default=None, metadata=dc_config(field_name="parent")) score: float | None = dc_field(default=None, metadata=dc_config(field_name="score")) - target_feeds: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="target_feeds")) - children_counts: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="children_counts")) - data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) - latest_children: 'dict[str, list[Reaction]] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_children")) - moderation: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="moderation")) - own_children: 'dict[str, list[Reaction]] | None' = dc_field(default=None, metadata=dc_config(field_name="own_children")) - target_feeds_extra_data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="target_feeds_extra_data")) - user: 'User | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + target_feeds: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="target_feeds") + ) + children_counts: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="children_counts") + ) + data: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="data") + ) + latest_children: "dict[str, list[Reaction]] | None" = dc_field( + default=None, metadata=dc_config(field_name="latest_children") + ) + moderation: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="moderation") + ) + own_children: "dict[str, list[Reaction]] | None" = dc_field( + default=None, metadata=dc_config(field_name="own_children") + ) + target_feeds_extra_data: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="target_feeds_extra_data") + ) + user: "User | None" = dc_field(default=None, metadata=dc_config(field_name="user")) + @dataclass class ReactionDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Represents channel in chat - channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "reaction.deleted" in this case - type: str = dc_field(default="reaction.deleted", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="reaction.deleted", metadata=dc_config(field_name="type") + ) # The ID of the channel containing the message - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) # The number of messages in the channel - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel containing the message - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel containing the message cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="message_id")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="message_id") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # The participants of the thread - thread_participants: 'list[UserResponseCommonFields] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + thread_participants: "list[UserResponseCommonFields] | None" = dc_field( + default=None, metadata=dc_config(field_name="thread_participants") + ) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) - reaction: 'ReactionResponse | None' = dc_field(default=None, metadata=dc_config(field_name="reaction")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + reaction: "ReactionResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="reaction") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ReactionGroupResponse(DataClassJsonMixin): # Count is the number of reactions of this type. count: int = dc_field(metadata=dc_config(field_name="count")) # FirstReactionAt is the time of the first reaction of this type. This is the same also if all reaction of this type are deleted, because if someone will react again with the same type, will be preserved the sorting. - first_reaction_at: datetime = dc_field(metadata=dc_config(field_name="first_reaction_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + first_reaction_at: datetime = dc_field( + metadata=dc_config( + field_name="first_reaction_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # LastReactionAt is the time of the last reaction of this type. - last_reaction_at: datetime = dc_field(metadata=dc_config(field_name="last_reaction_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_reaction_at: datetime = dc_field( + metadata=dc_config( + field_name="last_reaction_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # SumScores is the sum of all scores of reactions of this type. Medium allows you to clap articles more than once and shows the sum of all claps from all users. For example, you can send `clap` x5 using `score: 5`. sum_scores: int = dc_field(metadata=dc_config(field_name="sum_scores")) # The most recent users who reacted with this type, ordered by most recent first. - latest_reactions_by: 'list[ReactionGroupUserResponse]' = dc_field(metadata=dc_config(field_name="latest_reactions_by")) + latest_reactions_by: "list[ReactionGroupUserResponse]" = dc_field( + metadata=dc_config(field_name="latest_reactions_by") + ) + @dataclass class ReactionGroupUserResponse(DataClassJsonMixin): # The time when the user reacted. - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The ID of the user who reacted. user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ReactionNewEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Represents channel in chat - channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "reaction.new" in this case type: str = dc_field(default="reaction.new", metadata=dc_config(field_name="type")) # The ID of the channel containing the message - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) # The number of messages in the channel - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel containing the message - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel containing the message cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="message_id")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="message_id") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # The participants of the thread - thread_participants: 'list[UserResponseCommonFields] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + thread_participants: "list[UserResponseCommonFields] | None" = dc_field( + default=None, metadata=dc_config(field_name="thread_participants") + ) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) - reaction: 'ReactionResponse | None' = dc_field(default=None, metadata=dc_config(field_name="reaction")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + reaction: "ReactionResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="reaction") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ReactionRequest(DataClassJsonMixin): # The type of reaction (e.g. 'like', 'laugh', 'wow') type: str = dc_field(metadata=dc_config(field_name="type")) # Date/time of creation - created_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Reaction score. If not specified reaction has score of 1 score: int | None = dc_field(default=None, metadata=dc_config(field_name="score")) # Date/time of the last update - updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + updated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ReactionResponse(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Message ID message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # Score of the reaction @@ -11890,68 +23575,123 @@ class ReactionResponse(DataClassJsonMixin): # Type of reaction type: str = dc_field(metadata=dc_config(field_name="type")) # Date/time of the last update - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # User ID user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # Custom data for this object custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + @dataclass class ReactionUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # Represents channel in chat - channel: 'ChannelResponse' = dc_field(metadata=dc_config(field_name="channel")) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Represents any chat message - message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) # The type of event: "reaction.updated" in this case - type: str = dc_field(default="reaction.updated", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="reaction.updated", metadata=dc_config(field_name="type") + ) # The ID of the channel containing the message - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # The number of members in the channel - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) # The number of messages in the channel - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel containing the message - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel containing the message cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team ID team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) - reaction: 'ReactionResponse | None' = dc_field(default=None, metadata=dc_config(field_name="reaction")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + reaction: "ReactionResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="reaction") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ReactivateUserRequest(DataClassJsonMixin): # ID of the user who's reactivating the user - created_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_id")) + created_by_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="created_by_id") + ) # Set this field to put new name for the user name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # Restore previously deleted messages - restore_messages: bool | None = dc_field(default=None, metadata=dc_config(field_name="restore_messages")) + restore_messages: bool | None = dc_field( + default=None, metadata=dc_config(field_name="restore_messages") + ) + @dataclass class ReactivateUserResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ReactivateUsersRequest(DataClassJsonMixin): # User IDs to reactivate user_ids: list[str] = dc_field(metadata=dc_config(field_name="user_ids")) # ID of the user who's reactivating the users - created_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_id")) - restore_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="restore_channels")) + created_by_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="created_by_id") + ) + restore_channels: bool | None = dc_field( + default=None, metadata=dc_config(field_name="restore_channels") + ) # Restore previously deleted messages - restore_messages: bool | None = dc_field(default=None, metadata=dc_config(field_name="restore_messages")) + restore_messages: bool | None = dc_field( + default=None, metadata=dc_config(field_name="restore_messages") + ) + @dataclass class ReactivateUsersResponse(DataClassJsonMixin): @@ -11959,65 +23699,112 @@ class ReactivateUsersResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) task_id: str = dc_field(metadata=dc_config(field_name="task_id")) + @dataclass class ReadCollectionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of collections matching the references - collections: 'list[CollectionResponse]' = dc_field(metadata=dc_config(field_name="collections")) + collections: "list[CollectionResponse]" = dc_field( + metadata=dc_config(field_name="collections") + ) + @dataclass class ReadReceiptsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) + @dataclass class ReadStateResponse(DataClassJsonMixin): - last_read: datetime = dc_field(metadata=dc_config(field_name="last_read", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_read: datetime = dc_field( + metadata=dc_config( + field_name="last_read", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) unread_messages: int = dc_field(metadata=dc_config(field_name="unread_messages")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) - last_delivered_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_delivered_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - last_delivered_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="last_delivered_message_id")) - last_read_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="last_read_message_id")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + last_delivered_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_delivered_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + last_delivered_message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="last_delivered_message_id") + ) + last_read_message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="last_read_message_id") + ) + @dataclass class RecordSettings(DataClassJsonMixin): mode: str = dc_field(metadata=dc_config(field_name="mode")) - audio_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="audio_only")) - quality: str | None = dc_field(default=None, metadata=dc_config(field_name="quality")) - layout: 'LayoutSettings | None' = dc_field(default=None, metadata=dc_config(field_name="layout")) + audio_only: bool | None = dc_field( + default=None, metadata=dc_config(field_name="audio_only") + ) + quality: str | None = dc_field( + default=None, metadata=dc_config(field_name="quality") + ) + layout: "LayoutSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="layout") + ) + @dataclass class RecordSettingsRequest(DataClassJsonMixin): # Recording mode. One of: available, disabled, auto-on mode: str = dc_field(metadata=dc_config(field_name="mode")) # Whether to record audio only - audio_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="audio_only")) + audio_only: bool | None = dc_field( + default=None, metadata=dc_config(field_name="audio_only") + ) # Recording quality. One of: 360p, 480p, 720p, 1080p, 1440p, portrait-360x640, portrait-480x854, portrait-720x1280, portrait-1080x1920, portrait-1440x2560 - quality: str | None = dc_field(default=None, metadata=dc_config(field_name="quality")) - layout: 'LayoutSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="layout")) + quality: str | None = dc_field( + default=None, metadata=dc_config(field_name="quality") + ) + layout: "LayoutSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="layout") + ) + @dataclass class RecordSettingsResponse(DataClassJsonMixin): audio_only: bool = dc_field(metadata=dc_config(field_name="audio_only")) mode: str = dc_field(metadata=dc_config(field_name="mode")) quality: str = dc_field(metadata=dc_config(field_name="quality")) - layout: 'LayoutSettingsResponse' = dc_field(metadata=dc_config(field_name="layout")) + layout: "LayoutSettingsResponse" = dc_field(metadata=dc_config(field_name="layout")) + @dataclass class RejectAppealRequestPayload(DataClassJsonMixin): # Reason for rejecting the appeal decision_reason: str = dc_field(metadata=dc_config(field_name="decision_reason")) + @dataclass class RejectFeedMemberInviteRequest(DataClassJsonMixin): - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class RejectFeedMemberInviteResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - member: 'FeedMemberResponse' = dc_field(metadata=dc_config(field_name="member")) + member: "FeedMemberResponse" = dc_field(metadata=dc_config(field_name="member")) + @dataclass class RejectFollowRequest(DataClassJsonMixin): @@ -12026,107 +23813,232 @@ class RejectFollowRequest(DataClassJsonMixin): # Fully qualified ID of the target feed target: str = dc_field(metadata=dc_config(field_name="target")) + @dataclass class RejectFollowResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) + follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) + @dataclass class ReminderCreatedEvent(DataClassJsonMixin): # The CID of the Channel for which the reminder was created cid: str = dc_field(metadata=dc_config(field_name="cid")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The ID of the message for which the reminder was created message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # The ID of the user for whom the reminder was created user_id: str = dc_field(metadata=dc_config(field_name="user_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reminder: 'ReminderResponseData' = dc_field(metadata=dc_config(field_name="reminder")) + reminder: "ReminderResponseData" = dc_field( + metadata=dc_config(field_name="reminder") + ) # The type of event: "reminder.created" in this case - type: str = dc_field(default="reminder.created", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="reminder.created", metadata=dc_config(field_name="type") + ) # The ID of the parent message, if the reminder is for a thread message - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class ReminderDeletedEvent(DataClassJsonMixin): # The CID of the Channel for which the reminder was created cid: str = dc_field(metadata=dc_config(field_name="cid")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The ID of the message for which the reminder was created message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # The ID of the user for whom the reminder was created user_id: str = dc_field(metadata=dc_config(field_name="user_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reminder: 'ReminderResponseData' = dc_field(metadata=dc_config(field_name="reminder")) + reminder: "ReminderResponseData" = dc_field( + metadata=dc_config(field_name="reminder") + ) # The type of event: "reminder.deleted" in this case - type: str = dc_field(default="reminder.deleted", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="reminder.deleted", metadata=dc_config(field_name="type") + ) # The ID of the parent message, if the reminder is for a thread message - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class ReminderNotificationEvent(DataClassJsonMixin): # The CID of the Channel for which the reminder was created cid: str = dc_field(metadata=dc_config(field_name="cid")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The ID of the message for which the reminder was created message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # The ID of the user for whom the reminder was created user_id: str = dc_field(metadata=dc_config(field_name="user_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reminder: 'ReminderResponseData' = dc_field(metadata=dc_config(field_name="reminder")) + reminder: "ReminderResponseData" = dc_field( + metadata=dc_config(field_name="reminder") + ) # The type of event: "notification.reminder_due" in this case - type: str = dc_field(default="notification.reminder_due", metadata=dc_config(field_name="type")) - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="notification.reminder_due", metadata=dc_config(field_name="type") + ) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class ReminderResponseData(DataClassJsonMixin): channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - remind_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="remind_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + remind_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="remind_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ReminderUpdatedEvent(DataClassJsonMixin): # The CID of the Channel for which the reminder was created cid: str = dc_field(metadata=dc_config(field_name="cid")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The ID of the message for which the reminder was created message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # The ID of the user for whom the reminder was created user_id: str = dc_field(metadata=dc_config(field_name="user_id")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reminder: 'ReminderResponseData' = dc_field(metadata=dc_config(field_name="reminder")) + reminder: "ReminderResponseData" = dc_field( + metadata=dc_config(field_name="reminder") + ) # The type of event: "reminder.updated" in this case - type: str = dc_field(default="reminder.updated", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="reminder.updated", metadata=dc_config(field_name="type") + ) # The ID of the parent message, if the reminder is for a thread message - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class RemoveUserGroupMembersRequest(DataClassJsonMixin): # List of user IDs to remove member_ids: list[str] = dc_field(metadata=dc_config(field_name="member_ids")) - team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="team_id")) + team_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="team_id") + ) + @dataclass class RemoveUserGroupMembersResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - user_group: 'UserGroupResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) + user_group: "UserGroupResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user_group") + ) + @dataclass class RepliesMeta(DataClassJsonMixin): @@ -12137,47 +24049,74 @@ class RepliesMeta(DataClassJsonMixin): # Number of unread siblings that match current filters. remaining: int = dc_field(metadata=dc_config(field_name="remaining")) # Opaque cursor to request the next page of siblings. - next_cursor: str | None = dc_field(default=None, metadata=dc_config(field_name="next_cursor")) + next_cursor: str | None = dc_field( + default=None, metadata=dc_config(field_name="next_cursor") + ) + @dataclass class ReportByHistogramBucket(DataClassJsonMixin): category: str = dc_field(metadata=dc_config(field_name="category")) count: int = dc_field(metadata=dc_config(field_name="count")) sum: float = dc_field(metadata=dc_config(field_name="sum")) - lower_bound: 'Bound | None' = dc_field(default=None, metadata=dc_config(field_name="lower_bound")) - upper_bound: 'Bound | None' = dc_field(default=None, metadata=dc_config(field_name="upper_bound")) + lower_bound: "Bound | None" = dc_field( + default=None, metadata=dc_config(field_name="lower_bound") + ) + upper_bound: "Bound | None" = dc_field( + default=None, metadata=dc_config(field_name="upper_bound") + ) + @dataclass class ReportClientEventRequest(DataClassJsonMixin): # Client-side events to report (1-100 per request) - events: 'list[ClientEvent]' = dc_field(metadata=dc_config(field_name="events")) + events: "list[ClientEvent]" = dc_field(metadata=dc_config(field_name="events")) + @dataclass class ReportClientEventResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class ReportResponse(DataClassJsonMixin): - call: 'CallReportResponse' = dc_field(metadata=dc_config(field_name="call")) - participants: 'ParticipantReportResponse' = dc_field(metadata=dc_config(field_name="participants")) - user_ratings: 'UserRatingReportResponse' = dc_field(metadata=dc_config(field_name="user_ratings")) + call: "CallReportResponse" = dc_field(metadata=dc_config(field_name="call")) + participants: "ParticipantReportResponse" = dc_field( + metadata=dc_config(field_name="participants") + ) + user_ratings: "UserRatingReportResponse" = dc_field( + metadata=dc_config(field_name="user_ratings") + ) + @dataclass class ResolutionMetricsTimeSeries(DataClassJsonMixin): - height: 'MetricTimeSeries | None' = dc_field(default=None, metadata=dc_config(field_name="height")) - width: 'MetricTimeSeries | None' = dc_field(default=None, metadata=dc_config(field_name="width")) + height: "MetricTimeSeries | None" = dc_field( + default=None, metadata=dc_config(field_name="height") + ) + width: "MetricTimeSeries | None" = dc_field( + default=None, metadata=dc_config(field_name="width") + ) + @dataclass class ResolveSipAuthRequest(DataClassJsonMixin): # SIP caller number - sip_caller_number: str = dc_field(metadata=dc_config(field_name="sip_caller_number")) + sip_caller_number: str = dc_field( + metadata=dc_config(field_name="sip_caller_number") + ) # SIP trunk number to look up sip_trunk_number: str = dc_field(metadata=dc_config(field_name="sip_trunk_number")) # Host from the SIP From header - from_host: str | None = dc_field(default=None, metadata=dc_config(field_name="from_host")) + from_host: str | None = dc_field( + default=None, metadata=dc_config(field_name="from_host") + ) # Transport-layer source IP address of the SIP request - source_ip: str | None = dc_field(default=None, metadata=dc_config(field_name="source_ip")) + source_ip: str | None = dc_field( + default=None, metadata=dc_config(field_name="source_ip") + ) + @dataclass class ResolveSipAuthResponse(DataClassJsonMixin): @@ -12185,114 +24124,200 @@ class ResolveSipAuthResponse(DataClassJsonMixin): auth_result: str = dc_field(metadata=dc_config(field_name="auth_result")) duration: str = dc_field(metadata=dc_config(field_name="duration")) # Password for digest authentication (when auth_result is password) - password: str | None = dc_field(default=None, metadata=dc_config(field_name="password")) + password: str | None = dc_field( + default=None, metadata=dc_config(field_name="password") + ) # ID of the matched SIP trunk - trunk_id: str | None = dc_field(default=None, metadata=dc_config(field_name="trunk_id")) + trunk_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="trunk_id") + ) # Username for digest authentication (when auth_result is password) - username: str | None = dc_field(default=None, metadata=dc_config(field_name="username")) + username: str | None = dc_field( + default=None, metadata=dc_config(field_name="username") + ) + @dataclass class ResolveSipInboundRequest(DataClassJsonMixin): # SIP caller number - sip_caller_number: str = dc_field(metadata=dc_config(field_name="sip_caller_number")) + sip_caller_number: str = dc_field( + metadata=dc_config(field_name="sip_caller_number") + ) # SIP trunk number to resolve sip_trunk_number: str = dc_field(metadata=dc_config(field_name="sip_trunk_number")) # Optional routing number for routing number-based call routing (10 digits) - routing_number: str | None = dc_field(default=None, metadata=dc_config(field_name="routing_number")) + routing_number: str | None = dc_field( + default=None, metadata=dc_config(field_name="routing_number") + ) # Optional pre-authenticated trunk ID (from PreAuth no-auth flow) - trunk_id: str | None = dc_field(default=None, metadata=dc_config(field_name="trunk_id")) + trunk_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="trunk_id") + ) # SIP digest challenge authentication data - challenge: 'SIPChallengeRequest | None' = dc_field(default=None, metadata=dc_config(field_name="challenge")) + challenge: "SIPChallengeRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="challenge") + ) # Optional SIP headers as key-value pairs - sip_headers: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="sip_headers")) + sip_headers: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="sip_headers") + ) + @dataclass class ResolveSipInboundResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Credentials for SIP inbound call authentication - credentials: 'SipInboundCredentials' = dc_field(metadata=dc_config(field_name="credentials")) + credentials: "SipInboundCredentials" = dc_field( + metadata=dc_config(field_name="credentials") + ) # SIP Inbound Routing Rule response - sip_routing_rule: 'SIPInboundRoutingRuleResponse | None' = dc_field(default=None, metadata=dc_config(field_name="sip_routing_rule")) + sip_routing_rule: "SIPInboundRoutingRuleResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="sip_routing_rule") + ) # SIP trunk information - sip_trunk: 'SIPTrunkResponse | None' = dc_field(default=None, metadata=dc_config(field_name="sip_trunk")) + sip_trunk: "SIPTrunkResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="sip_trunk") + ) + @dataclass class Response(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class RestoreActionRequestPayload(DataClassJsonMixin): # Reason for the appeal decision - decision_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="decision_reason")) + decision_reason: str | None = dc_field( + default=None, metadata=dc_config(field_name="decision_reason") + ) + @dataclass class RestoreActivityRequest(DataClassJsonMixin): - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class RestoreActivityResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + @dataclass class RestoreCommentRequest(DataClassJsonMixin): - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class RestoreCommentResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) - comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) + @dataclass class RestoreFeedGroupRequest(DataClassJsonMixin): pass + @dataclass class RestoreFeedGroupResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_group: 'FeedGroupResponse' = dc_field(metadata=dc_config(field_name="feed_group")) + feed_group: "FeedGroupResponse" = dc_field( + metadata=dc_config(field_name="feed_group") + ) + @dataclass class RestoreUsersRequest(DataClassJsonMixin): user_ids: list[str] = dc_field(metadata=dc_config(field_name="user_ids")) + @dataclass class RetentionPolicy(DataClassJsonMixin): app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) - enabled_at: datetime = dc_field(metadata=dc_config(field_name="enabled_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + enabled_at: datetime = dc_field( + metadata=dc_config( + field_name="enabled_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) policy: str = dc_field(metadata=dc_config(field_name="policy")) - config: 'PolicyConfig' = dc_field(metadata=dc_config(field_name="config")) + config: "PolicyConfig" = dc_field(metadata=dc_config(field_name="config")) + @dataclass class RetentionRunResponse(DataClassJsonMixin): app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) date: str = dc_field(metadata=dc_config(field_name="date")) policy: str = dc_field(metadata=dc_config(field_name="policy")) - stats: 'RunStats' = dc_field(metadata=dc_config(field_name="stats")) + stats: "RunStats" = dc_field(metadata=dc_config(field_name="stats")) + @dataclass class ReviewQueueItemNewEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="review_queue_item.new", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="review_queue_item.new", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The flags associated with this review queue item - flags: 'list[ModerationFlagResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="flags")) - action: 'ActionLogResponse | None' = dc_field(default=None, metadata=dc_config(field_name="action")) - review_queue_item: 'ReviewQueueItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="review_queue_item")) + flags: "list[ModerationFlagResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="flags") + ) + action: "ActionLogResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="action") + ) + review_queue_item: "ReviewQueueItemResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="review_queue_item") + ) + @dataclass class ReviewQueueItemResponse(DataClassJsonMixin): # AI-determined text severity ai_text_severity: str = dc_field(metadata=dc_config(field_name="ai_text_severity")) # When the item was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # ID of the entity being reviewed entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) # Type of entity being reviewed @@ -12302,9 +24327,13 @@ class ReviewQueueItemResponse(DataClassJsonMixin): flags_count: int = dc_field(metadata=dc_config(field_name="flags_count")) # Unique identifier of the review queue item id: str = dc_field(metadata=dc_config(field_name="id")) - latest_moderator_action: str = dc_field(metadata=dc_config(field_name="latest_moderator_action")) + latest_moderator_action: str = dc_field( + metadata=dc_config(field_name="latest_moderator_action") + ) # Suggested moderation action - recommended_action: str = dc_field(metadata=dc_config(field_name="recommended_action")) + recommended_action: str = dc_field( + metadata=dc_config(field_name="recommended_action") + ) # ID of the moderator who reviewed the item reviewed_by: str = dc_field(metadata=dc_config(field_name="reviewed_by")) # Severity level of the content @@ -12312,72 +24341,181 @@ class ReviewQueueItemResponse(DataClassJsonMixin): # Current status of the review status: str = dc_field(metadata=dc_config(field_name="status")) # When the item was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Moderation actions taken - actions: 'list[ActionLogResponse]' = dc_field(metadata=dc_config(field_name="actions")) + actions: "list[ActionLogResponse]" = dc_field( + metadata=dc_config(field_name="actions") + ) # Associated ban records - bans: 'list[BanInfoResponse]' = dc_field(metadata=dc_config(field_name="bans")) + bans: "list[BanInfoResponse]" = dc_field(metadata=dc_config(field_name="bans")) # Associated flag records - flags: 'list[ModerationFlagResponse]' = dc_field(metadata=dc_config(field_name="flags")) + flags: "list[ModerationFlagResponse]" = dc_field( + metadata=dc_config(field_name="flags") + ) # Detected languages in the content languages: list[str] = dc_field(metadata=dc_config(field_name="languages")) # When the review was completed - completed_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="completed_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - config_key: str | None = dc_field(default=None, metadata=dc_config(field_name="config_key")) + completed_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="completed_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + config_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="config_key") + ) # ID of who created the entity - entity_creator_id: str | None = dc_field(default=None, metadata=dc_config(field_name="entity_creator_id")) + entity_creator_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="entity_creator_id") + ) # When the item was escalated - escalated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="escalated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + escalated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="escalated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # ID of the moderator who escalated the item - escalated_by: str | None = dc_field(default=None, metadata=dc_config(field_name="escalated_by")) + escalated_by: str | None = dc_field( + default=None, metadata=dc_config(field_name="escalated_by") + ) # When the item was reviewed - reviewed_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="reviewed_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + reviewed_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="reviewed_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Teams associated with this item - teams: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="teams")) - activity: 'EnrichedActivity | None' = dc_field(default=None, metadata=dc_config(field_name="activity")) - appeal: 'AppealItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="appeal")) + teams: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="teams") + ) + activity: "EnrichedActivity | None" = dc_field( + default=None, metadata=dc_config(field_name="activity") + ) + appeal: "AppealItemResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="appeal") + ) # User response object - assigned_to: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="assigned_to")) - call: 'ModerationCallResponse | None' = dc_field(default=None, metadata=dc_config(field_name="call")) - entity_creator: 'EntityCreatorResponse | None' = dc_field(default=None, metadata=dc_config(field_name="entity_creator")) - escalation_metadata: 'EscalationMetadata | None' = dc_field(default=None, metadata=dc_config(field_name="escalation_metadata")) - feeds_v2_activity: 'EnrichedActivity | None' = dc_field(default=None, metadata=dc_config(field_name="feeds_v2_activity")) - feeds_v2_reaction: 'Reaction | None' = dc_field(default=None, metadata=dc_config(field_name="feeds_v2_reaction")) - feeds_v3_activity: 'FeedsV3ActivityResponse | None' = dc_field(default=None, metadata=dc_config(field_name="feeds_v3_activity")) - feeds_v3_comment: 'FeedsV3CommentResponse | None' = dc_field(default=None, metadata=dc_config(field_name="feeds_v3_comment")) - message: 'ChatMessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + assigned_to: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="assigned_to") + ) + call: "ModerationCallResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="call") + ) + entity_creator: "EntityCreatorResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="entity_creator") + ) + escalation_metadata: "EscalationMetadata | None" = dc_field( + default=None, metadata=dc_config(field_name="escalation_metadata") + ) + feeds_v2_activity: "EnrichedActivity | None" = dc_field( + default=None, metadata=dc_config(field_name="feeds_v2_activity") + ) + feeds_v2_reaction: "Reaction | None" = dc_field( + default=None, metadata=dc_config(field_name="feeds_v2_reaction") + ) + feeds_v3_activity: "FeedsV3ActivityResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="feeds_v3_activity") + ) + feeds_v3_comment: "FeedsV3CommentResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="feeds_v3_comment") + ) + message: "ChatMessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) # Content payload for moderation - moderation_payload: 'ModerationPayloadResponse | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_payload")) - reaction: 'Reaction | None' = dc_field(default=None, metadata=dc_config(field_name="reaction")) + moderation_payload: "ModerationPayloadResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation_payload") + ) + reaction: "Reaction | None" = dc_field( + default=None, metadata=dc_config(field_name="reaction") + ) + @dataclass class ReviewQueueItemUpdatedEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="review_queue_item.updated", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="review_queue_item.updated", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The flags associated with this review queue item - flags: 'list[ModerationFlagResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="flags")) - action: 'ActionLogResponse | None' = dc_field(default=None, metadata=dc_config(field_name="action")) - review_queue_item: 'ReviewQueueItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="review_queue_item")) + flags: "list[ModerationFlagResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="flags") + ) + action: "ActionLogResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="action") + ) + review_queue_item: "ReviewQueueItemResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="review_queue_item") + ) + @dataclass class RevisionHistoryResponse(DataClassJsonMixin): action_type: str = dc_field(metadata=dc_config(field_name="action_type")) actor_type: str = dc_field(metadata=dc_config(field_name="actor_type")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) object_id: str = dc_field(metadata=dc_config(field_name="object_id")) object_type: str = dc_field(metadata=dc_config(field_name="object_type")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - changed_fields: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="changed_fields")) - previous_obj_serialized: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="previous_obj_serialized")) + changed_fields: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="changed_fields") + ) + previous_obj_serialized: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="previous_obj_serialized") + ) + @dataclass class RingCallRequest(DataClassJsonMixin): # Indicate if call should be video video: bool | None = dc_field(default=None, metadata=dc_config(field_name="video")) # Members that should receive the ring. If no ids are provided, all call members who are not already in the call will receive ring notifications. - members_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="members_ids")) + members_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="members_ids") + ) + @dataclass class RingCallResponse(DataClassJsonMixin): @@ -12385,169 +24523,333 @@ class RingCallResponse(DataClassJsonMixin): # List of members ringing notification was sent to members_ids: list[str] = dc_field(metadata=dc_config(field_name="members_ids")) + @dataclass class RingSettings(DataClassJsonMixin): - auto_cancel_timeout_ms: int = dc_field(metadata=dc_config(field_name="auto_cancel_timeout_ms")) - incoming_call_timeout_ms: int = dc_field(metadata=dc_config(field_name="incoming_call_timeout_ms")) - missed_call_timeout_ms: int = dc_field(metadata=dc_config(field_name="missed_call_timeout_ms")) + auto_cancel_timeout_ms: int = dc_field( + metadata=dc_config(field_name="auto_cancel_timeout_ms") + ) + incoming_call_timeout_ms: int = dc_field( + metadata=dc_config(field_name="incoming_call_timeout_ms") + ) + missed_call_timeout_ms: int = dc_field( + metadata=dc_config(field_name="missed_call_timeout_ms") + ) + @dataclass class RingSettingsRequest(DataClassJsonMixin): # When none of the callees accept a ring call in this time a rejection will be sent by the caller with reason 'timeout' by the SDKs - auto_cancel_timeout_ms: int = dc_field(metadata=dc_config(field_name="auto_cancel_timeout_ms")) + auto_cancel_timeout_ms: int = dc_field( + metadata=dc_config(field_name="auto_cancel_timeout_ms") + ) # When a callee is online but doesn't answer a ring call in this time a rejection will be sent with reason 'timeout' by the SDKs - incoming_call_timeout_ms: int = dc_field(metadata=dc_config(field_name="incoming_call_timeout_ms")) + incoming_call_timeout_ms: int = dc_field( + metadata=dc_config(field_name="incoming_call_timeout_ms") + ) # When a callee doesn't accept or reject a ring call in this time a missed call event will be sent - missed_call_timeout_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="missed_call_timeout_ms")) + missed_call_timeout_ms: int | None = dc_field( + default=None, metadata=dc_config(field_name="missed_call_timeout_ms") + ) + @dataclass class RingSettingsResponse(DataClassJsonMixin): - auto_cancel_timeout_ms: int = dc_field(metadata=dc_config(field_name="auto_cancel_timeout_ms")) - incoming_call_timeout_ms: int = dc_field(metadata=dc_config(field_name="incoming_call_timeout_ms")) - missed_call_timeout_ms: int = dc_field(metadata=dc_config(field_name="missed_call_timeout_ms")) + auto_cancel_timeout_ms: int = dc_field( + metadata=dc_config(field_name="auto_cancel_timeout_ms") + ) + incoming_call_timeout_ms: int = dc_field( + metadata=dc_config(field_name="incoming_call_timeout_ms") + ) + missed_call_timeout_ms: int = dc_field( + metadata=dc_config(field_name="missed_call_timeout_ms") + ) + @dataclass class Role(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Whether this is a custom role or built-in custom: bool = dc_field(metadata=dc_config(field_name="custom")) # Unique role name name: str = dc_field(metadata=dc_config(field_name="name")) # Date/time of the last update - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # List of scopes where this role is currently present. `.app` means that role is present in app-level grants scopes: list[str] = dc_field(metadata=dc_config(field_name="scopes")) + @dataclass class RuleBuilderAction(DataClassJsonMixin): reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - skip_inbox: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_inbox")) + skip_inbox: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_inbox") + ) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - ban_options: 'BanOptions | None' = dc_field(default=None, metadata=dc_config(field_name="ban_options")) - call_options: 'CallActionOptions | None' = dc_field(default=None, metadata=dc_config(field_name="call_options")) - flag_user_options: 'FlagUserOptions | None' = dc_field(default=None, metadata=dc_config(field_name="flag_user_options")) + ban_options: "BanOptions | None" = dc_field( + default=None, metadata=dc_config(field_name="ban_options") + ) + call_options: "CallActionOptions | None" = dc_field( + default=None, metadata=dc_config(field_name="call_options") + ) + flag_user_options: "FlagUserOptions | None" = dc_field( + default=None, metadata=dc_config(field_name="flag_user_options") + ) + @dataclass class RuleBuilderCondition(DataClassJsonMixin): - confidence: float | None = dc_field(default=None, metadata=dc_config(field_name="confidence")) + confidence: float | None = dc_field( + default=None, metadata=dc_config(field_name="confidence") + ) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) - call_custom_property_params: 'CallCustomPropertyParameters | None' = dc_field(default=None, metadata=dc_config(field_name="call_custom_property_params")) - call_type_rule_params: 'CallTypeRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="call_type_rule_params")) - call_violation_count_params: 'CallViolationCountParameters | None' = dc_field(default=None, metadata=dc_config(field_name="call_violation_count_params")) - channel_message_count_rule_params: 'ChannelMessageCountRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="channel_message_count_rule_params")) - closed_caption_rule_params: 'ClosedCaptionRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="closed_caption_rule_params")) - content_count_rule_params: 'ContentCountRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="content_count_rule_params")) - content_custom_property_count_params: 'ContentCustomPropertyCountParameters | None' = dc_field(default=None, metadata=dc_config(field_name="content_custom_property_count_params")) - content_custom_property_params: 'ContentCustomPropertyParameters | None' = dc_field(default=None, metadata=dc_config(field_name="content_custom_property_params")) - content_flag_count_rule_params: 'FlagCountRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="content_flag_count_rule_params")) - flood_identical_params: 'FloodIdenticalRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="flood_identical_params")) - flood_similar_params: 'FloodSimilarRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="flood_similar_params")) - image_content_params: 'ImageContentParameters | None' = dc_field(default=None, metadata=dc_config(field_name="image_content_params")) - image_rule_params: 'ImageRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="image_rule_params")) - ip_content_count_rule_params: 'IPContentCountRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="ip_content_count_rule_params")) - ip_flag_count_rule_params: 'IPFlagCountRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="ip_flag_count_rule_params")) - keyframe_ocr_rule_params: 'KeyframeOCRRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="keyframe_ocr_rule_params")) - keyframe_rule_params: 'KeyframeRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="keyframe_rule_params")) - ocr_content_params: 'OCRContentParameters | None' = dc_field(default=None, metadata=dc_config(field_name="ocr_content_params")) - text_content_params: 'TextContentParameters | None' = dc_field(default=None, metadata=dc_config(field_name="text_content_params")) - text_rule_params: 'TextRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="text_rule_params")) - user_created_within_params: 'UserCreatedWithinParameters | None' = dc_field(default=None, metadata=dc_config(field_name="user_created_within_params")) - user_custom_property_params: 'UserCustomPropertyParameters | None' = dc_field(default=None, metadata=dc_config(field_name="user_custom_property_params")) - user_flag_count_rule_params: 'FlagCountRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="user_flag_count_rule_params")) - user_identical_content_count_params: 'UserIdenticalContentCountParameters | None' = dc_field(default=None, metadata=dc_config(field_name="user_identical_content_count_params")) - user_role_params: 'UserRoleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="user_role_params")) - user_rule_params: 'UserRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="user_rule_params")) - video_content_params: 'VideoContentParameters | None' = dc_field(default=None, metadata=dc_config(field_name="video_content_params")) - video_rule_params: 'VideoRuleParameters | None' = dc_field(default=None, metadata=dc_config(field_name="video_rule_params")) + call_custom_property_params: "CallCustomPropertyParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="call_custom_property_params") + ) + call_type_rule_params: "CallTypeRuleParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="call_type_rule_params") + ) + call_violation_count_params: "CallViolationCountParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="call_violation_count_params") + ) + channel_message_count_rule_params: "ChannelMessageCountRuleParameters | None" = ( + dc_field( + default=None, + metadata=dc_config(field_name="channel_message_count_rule_params"), + ) + ) + closed_caption_rule_params: "ClosedCaptionRuleParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="closed_caption_rule_params") + ) + content_count_rule_params: "ContentCountRuleParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="content_count_rule_params") + ) + content_custom_property_count_params: "ContentCustomPropertyCountParameters | None" = dc_field( + default=None, + metadata=dc_config(field_name="content_custom_property_count_params"), + ) + content_custom_property_params: "ContentCustomPropertyParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="content_custom_property_params") + ) + content_flag_count_rule_params: "FlagCountRuleParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="content_flag_count_rule_params") + ) + flood_identical_params: "FloodIdenticalRuleParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="flood_identical_params") + ) + flood_similar_params: "FloodSimilarRuleParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="flood_similar_params") + ) + image_content_params: "ImageContentParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="image_content_params") + ) + image_rule_params: "ImageRuleParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="image_rule_params") + ) + ip_content_count_rule_params: "IPContentCountRuleParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="ip_content_count_rule_params") + ) + ip_flag_count_rule_params: "IPFlagCountRuleParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="ip_flag_count_rule_params") + ) + keyframe_ocr_rule_params: "KeyframeOCRRuleParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="keyframe_ocr_rule_params") + ) + keyframe_rule_params: "KeyframeRuleParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="keyframe_rule_params") + ) + ocr_content_params: "OCRContentParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="ocr_content_params") + ) + text_content_params: "TextContentParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="text_content_params") + ) + text_rule_params: "TextRuleParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="text_rule_params") + ) + user_created_within_params: "UserCreatedWithinParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="user_created_within_params") + ) + user_custom_property_params: "UserCustomPropertyParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="user_custom_property_params") + ) + user_flag_count_rule_params: "FlagCountRuleParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="user_flag_count_rule_params") + ) + user_identical_content_count_params: "UserIdenticalContentCountParameters | None" = dc_field( + default=None, + metadata=dc_config(field_name="user_identical_content_count_params"), + ) + user_role_params: "UserRoleParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="user_role_params") + ) + user_rule_params: "UserRuleParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="user_rule_params") + ) + video_content_params: "VideoContentParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="video_content_params") + ) + video_rule_params: "VideoRuleParameters | None" = dc_field( + default=None, metadata=dc_config(field_name="video_rule_params") + ) + @dataclass class RuleBuilderConditionGroup(DataClassJsonMixin): logic: str | None = dc_field(default=None, metadata=dc_config(field_name="logic")) - conditions: 'list[RuleBuilderCondition] | None' = dc_field(default=None, metadata=dc_config(field_name="conditions")) + conditions: "list[RuleBuilderCondition] | None" = dc_field( + default=None, metadata=dc_config(field_name="conditions") + ) + @dataclass class RuleBuilderConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - rules: 'list[RuleBuilderRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) + rules: "list[RuleBuilderRule] | None" = dc_field( + default=None, metadata=dc_config(field_name="rules") + ) + @dataclass class RuleBuilderRule(DataClassJsonMixin): rule_type: str = dc_field(metadata=dc_config(field_name="rule_type")) - cooldown_period: str | None = dc_field(default=None, metadata=dc_config(field_name="cooldown_period")) + cooldown_period: str | None = dc_field( + default=None, metadata=dc_config(field_name="cooldown_period") + ) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) logic: str | None = dc_field(default=None, metadata=dc_config(field_name="logic")) - action_sequences: 'list[CallRuleActionSequence] | None' = dc_field(default=None, metadata=dc_config(field_name="action_sequences")) - conditions: 'list[RuleBuilderCondition] | None' = dc_field(default=None, metadata=dc_config(field_name="conditions")) - groups: 'list[RuleBuilderConditionGroup] | None' = dc_field(default=None, metadata=dc_config(field_name="groups")) - action: 'RuleBuilderAction | None' = dc_field(default=None, metadata=dc_config(field_name="action")) + action_sequences: "list[CallRuleActionSequence] | None" = dc_field( + default=None, metadata=dc_config(field_name="action_sequences") + ) + conditions: "list[RuleBuilderCondition] | None" = dc_field( + default=None, metadata=dc_config(field_name="conditions") + ) + groups: "list[RuleBuilderConditionGroup] | None" = dc_field( + default=None, metadata=dc_config(field_name="groups") + ) + action: "RuleBuilderAction | None" = dc_field( + default=None, metadata=dc_config(field_name="action") + ) + @dataclass class RunStats(DataClassJsonMixin): - channels_deleted: int | None = dc_field(default=None, metadata=dc_config(field_name="channels_deleted")) - messages_deleted: int | None = dc_field(default=None, metadata=dc_config(field_name="messages_deleted")) + channels_deleted: int | None = dc_field( + default=None, metadata=dc_config(field_name="channels_deleted") + ) + messages_deleted: int | None = dc_field( + default=None, metadata=dc_config(field_name="messages_deleted") + ) + @dataclass class S3Request(DataClassJsonMixin): # The AWS region where the bucket is hosted s3_region: str = dc_field(metadata=dc_config(field_name="s3_region")) # The AWS API key. To use Amazon S3 as your storage provider, you have two authentication options: IAM role or API key. If you do not specify the `s3_api_key` parameter, Stream will use IAM role authentication. In that case make sure to have the correct IAM role configured for your application. - s3_api_key: str | None = dc_field(default=None, metadata=dc_config(field_name="s3_api_key")) + s3_api_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="s3_api_key") + ) # The custom endpoint for S3. If you want to use a custom endpoint, you must also provide the `s3_api_key` and `s3_secret` parameters. - s3_custom_endpoint_url: str | None = dc_field(default=None, metadata=dc_config(field_name="s3_custom_endpoint_url")) + s3_custom_endpoint_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="s3_custom_endpoint_url") + ) # The AWS API Secret - s3_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="s3_secret")) + s3_secret: str | None = dc_field( + default=None, metadata=dc_config(field_name="s3_secret") + ) + @dataclass class SDKUsageReport(DataClassJsonMixin): - per_sdk_usage: 'dict[str, PerSDKUsageReport | None]' = dc_field(metadata=dc_config(field_name="per_sdk_usage")) + per_sdk_usage: "dict[str, PerSDKUsageReport | None]" = dc_field( + metadata=dc_config(field_name="per_sdk_usage") + ) + @dataclass class SDKUsageReportResponse(DataClassJsonMixin): - daily: 'list[DailyAggregateSDKUsageReportResponse]' = dc_field(metadata=dc_config(field_name="daily")) + daily: "list[DailyAggregateSDKUsageReportResponse]" = dc_field( + metadata=dc_config(field_name="daily") + ) + @dataclass class SFULocationResponse(DataClassJsonMixin): datacenter: str = dc_field(metadata=dc_config(field_name="datacenter")) id: str = dc_field(metadata=dc_config(field_name="id")) # Geographic coordinates - coordinates: 'CoordinatesResponse' = dc_field(metadata=dc_config(field_name="coordinates")) + coordinates: "CoordinatesResponse" = dc_field( + metadata=dc_config(field_name="coordinates") + ) # Geographic location metadata - location: 'LocationResponse' = dc_field(metadata=dc_config(field_name="location")) + location: "LocationResponse" = dc_field(metadata=dc_config(field_name="location")) count: int | None = dc_field(default=None, metadata=dc_config(field_name="count")) + @dataclass class SIPCallConfigsRequest(DataClassJsonMixin): # Custom data associated with the call - custom_data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom_data")) + custom_data: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom_data") + ) + @dataclass class SIPCallConfigsResponse(DataClassJsonMixin): # Custom data associated with the call - custom_data: dict[str, object] = dc_field(metadata=dc_config(field_name="custom_data")) + custom_data: dict[str, object] = dc_field( + metadata=dc_config(field_name="custom_data") + ) + @dataclass class SIPCallerConfigsRequest(DataClassJsonMixin): # Unique identifier for the caller (handlebars template) id: str = dc_field(metadata=dc_config(field_name="id")) # Custom data associated with the caller (values are handlebars templates) - custom_data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom_data")) + custom_data: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom_data") + ) + @dataclass class SIPCallerConfigsResponse(DataClassJsonMixin): # Unique identifier for the caller id: str = dc_field(metadata=dc_config(field_name="id")) # Custom data associated with the caller - custom_data: dict[str, object] = dc_field(metadata=dc_config(field_name="custom_data")) + custom_data: dict[str, object] = dc_field( + metadata=dc_config(field_name="custom_data") + ) + @dataclass class SIPChallengeRequest(DataClassJsonMixin): # Deprecated: A1 hash for backward compatibility a1: str | None = dc_field(default=None, metadata=dc_config(field_name="a1")) # Hash algorithm (e.g., MD5, SHA-256) - algorithm: str | None = dc_field(default=None, metadata=dc_config(field_name="algorithm")) + algorithm: str | None = dc_field( + default=None, metadata=dc_config(field_name="algorithm") + ) # Character set - charset: str | None = dc_field(default=None, metadata=dc_config(field_name="charset")) + charset: str | None = dc_field( + default=None, metadata=dc_config(field_name="charset") + ) # Client nonce for qop=auth cnonce: str | None = dc_field(default=None, metadata=dc_config(field_name="cnonce")) # SIP method (e.g., INVITE) @@ -12561,20 +24863,29 @@ class SIPChallengeRequest(DataClassJsonMixin): # Authentication realm realm: str | None = dc_field(default=None, metadata=dc_config(field_name="realm")) # Digest response hash from client - response: str | None = dc_field(default=None, metadata=dc_config(field_name="response")) + response: str | None = dc_field( + default=None, metadata=dc_config(field_name="response") + ) # Whether the nonce is stale stale: bool | None = dc_field(default=None, metadata=dc_config(field_name="stale")) # Request URI uri: str | None = dc_field(default=None, metadata=dc_config(field_name="uri")) # Whether to hash the username - userhash: bool | None = dc_field(default=None, metadata=dc_config(field_name="userhash")) + userhash: bool | None = dc_field( + default=None, metadata=dc_config(field_name="userhash") + ) # Username for authentication - username: str | None = dc_field(default=None, metadata=dc_config(field_name="username")) + username: str | None = dc_field( + default=None, metadata=dc_config(field_name="username") + ) # Domain list - domain: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="domain")) + domain: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="domain") + ) # Quality of protection options qop: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="qop")) + @dataclass class SIPDirectRoutingRuleCallConfigsRequest(DataClassJsonMixin): # ID of the call (handlebars template) @@ -12582,6 +24893,7 @@ class SIPDirectRoutingRuleCallConfigsRequest(DataClassJsonMixin): # Type of the call call_type: str = dc_field(metadata=dc_config(field_name="call_type")) + @dataclass class SIPDirectRoutingRuleCallConfigsResponse(DataClassJsonMixin): # ID of the call @@ -12589,31 +24901,54 @@ class SIPDirectRoutingRuleCallConfigsResponse(DataClassJsonMixin): # Type of the call call_type: str = dc_field(metadata=dc_config(field_name="call_type")) + @dataclass class SIPInboundRoutingRulePinConfigsRequest(DataClassJsonMixin): # Optional webhook URL for custom PIN handling - custom_webhook_url: str | None = dc_field(default=None, metadata=dc_config(field_name="custom_webhook_url")) + custom_webhook_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="custom_webhook_url") + ) # Prompt message for failed PIN attempts - pin_failed_attempt_prompt: str | None = dc_field(default=None, metadata=dc_config(field_name="pin_failed_attempt_prompt")) + pin_failed_attempt_prompt: str | None = dc_field( + default=None, metadata=dc_config(field_name="pin_failed_attempt_prompt") + ) # Prompt message for hangup after PIN input - pin_hangup_prompt: str | None = dc_field(default=None, metadata=dc_config(field_name="pin_hangup_prompt")) + pin_hangup_prompt: str | None = dc_field( + default=None, metadata=dc_config(field_name="pin_hangup_prompt") + ) # Prompt message for PIN input - pin_prompt: str | None = dc_field(default=None, metadata=dc_config(field_name="pin_prompt")) + pin_prompt: str | None = dc_field( + default=None, metadata=dc_config(field_name="pin_prompt") + ) # Prompt message for successful PIN input - pin_success_prompt: str | None = dc_field(default=None, metadata=dc_config(field_name="pin_success_prompt")) + pin_success_prompt: str | None = dc_field( + default=None, metadata=dc_config(field_name="pin_success_prompt") + ) + @dataclass class SIPInboundRoutingRulePinConfigsResponse(DataClassJsonMixin): # Optional webhook URL for custom PIN handling - custom_webhook_url: str | None = dc_field(default=None, metadata=dc_config(field_name="custom_webhook_url")) + custom_webhook_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="custom_webhook_url") + ) # Prompt message for failed PIN attempts - pin_failed_attempt_prompt: str | None = dc_field(default=None, metadata=dc_config(field_name="pin_failed_attempt_prompt")) + pin_failed_attempt_prompt: str | None = dc_field( + default=None, metadata=dc_config(field_name="pin_failed_attempt_prompt") + ) # Prompt message for hangup after PIN input - pin_hangup_prompt: str | None = dc_field(default=None, metadata=dc_config(field_name="pin_hangup_prompt")) + pin_hangup_prompt: str | None = dc_field( + default=None, metadata=dc_config(field_name="pin_hangup_prompt") + ) # Prompt message for PIN input - pin_prompt: str | None = dc_field(default=None, metadata=dc_config(field_name="pin_prompt")) + pin_prompt: str | None = dc_field( + default=None, metadata=dc_config(field_name="pin_prompt") + ) # Prompt message for successful PIN input - pin_success_prompt: str | None = dc_field(default=None, metadata=dc_config(field_name="pin_success_prompt")) + pin_success_prompt: str | None = dc_field( + default=None, metadata=dc_config(field_name="pin_success_prompt") + ) + @dataclass class SIPInboundRoutingRuleRequest(DataClassJsonMixin): @@ -12622,74 +24957,141 @@ class SIPInboundRoutingRuleRequest(DataClassJsonMixin): # List of SIP trunk IDs trunk_ids: list[str] = dc_field(metadata=dc_config(field_name="trunk_ids")) # Configuration for SIP caller settings - caller_configs: 'SIPCallerConfigsRequest' = dc_field(metadata=dc_config(field_name="caller_configs")) + caller_configs: "SIPCallerConfigsRequest" = dc_field( + metadata=dc_config(field_name="caller_configs") + ) # List of called numbers - called_numbers: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="called_numbers")) + called_numbers: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="called_numbers") + ) # List of caller numbers (optional) - caller_numbers: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="caller_numbers")) + caller_numbers: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="caller_numbers") + ) # Configuration for SIP call settings - call_configs: 'SIPCallConfigsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="call_configs")) + call_configs: "SIPCallConfigsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="call_configs") + ) # Configuration for direct routing rule calls - direct_routing_configs: 'SIPDirectRoutingRuleCallConfigsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="direct_routing_configs")) + direct_routing_configs: "SIPDirectRoutingRuleCallConfigsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="direct_routing_configs") + ) # Configuration for PIN protection settings - pin_protection_configs: 'SIPPinProtectionConfigsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="pin_protection_configs")) + pin_protection_configs: "SIPPinProtectionConfigsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="pin_protection_configs") + ) # Configuration for PIN routing rule calls - pin_routing_configs: 'SIPInboundRoutingRulePinConfigsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="pin_routing_configs")) + pin_routing_configs: "SIPInboundRoutingRulePinConfigsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="pin_routing_configs") + ) + @dataclass class SIPInboundRoutingRuleResponse(DataClassJsonMixin): # Creation timestamp - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) duration: str = dc_field(metadata=dc_config(field_name="duration")) # Unique identifier of the SIP Inbound Routing Rule id: str = dc_field(metadata=dc_config(field_name="id")) # Name of the SIP Inbound Routing Rule name: str = dc_field(metadata=dc_config(field_name="name")) # Last update timestamp - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # List of called numbers - called_numbers: list[str] = dc_field(metadata=dc_config(field_name="called_numbers")) + called_numbers: list[str] = dc_field( + metadata=dc_config(field_name="called_numbers") + ) # List of SIP trunk IDs trunk_ids: list[str] = dc_field(metadata=dc_config(field_name="trunk_ids")) # List of caller numbers - caller_numbers: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="caller_numbers")) + caller_numbers: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="caller_numbers") + ) # SIP call configuration response - call_configs: 'SIPCallConfigsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="call_configs")) + call_configs: "SIPCallConfigsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="call_configs") + ) # SIP caller configuration response - caller_configs: 'SIPCallerConfigsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="caller_configs")) + caller_configs: "SIPCallerConfigsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="caller_configs") + ) # Direct routing rule call configuration response - direct_routing_configs: 'SIPDirectRoutingRuleCallConfigsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="direct_routing_configs")) + direct_routing_configs: "SIPDirectRoutingRuleCallConfigsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="direct_routing_configs") + ) # PIN protection configuration response - pin_protection_configs: 'SIPPinProtectionConfigsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="pin_protection_configs")) + pin_protection_configs: "SIPPinProtectionConfigsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="pin_protection_configs") + ) # PIN routing rule call configuration response - pin_routing_configs: 'SIPInboundRoutingRulePinConfigsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="pin_routing_configs")) + pin_routing_configs: "SIPInboundRoutingRulePinConfigsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="pin_routing_configs") + ) + @dataclass class SIPPinProtectionConfigsRequest(DataClassJsonMixin): # Default PIN to use if there is no PIN set on the call object - default_pin: str | None = dc_field(default=None, metadata=dc_config(field_name="default_pin")) + default_pin: str | None = dc_field( + default=None, metadata=dc_config(field_name="default_pin") + ) # Whether PIN protection is enabled - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) # Maximum number of PIN attempts allowed - max_attempts: int | None = dc_field(default=None, metadata=dc_config(field_name="max_attempts")) + max_attempts: int | None = dc_field( + default=None, metadata=dc_config(field_name="max_attempts") + ) # Number of digits required for the PIN - required_pin_digits: int | None = dc_field(default=None, metadata=dc_config(field_name="required_pin_digits")) + required_pin_digits: int | None = dc_field( + default=None, metadata=dc_config(field_name="required_pin_digits") + ) + @dataclass class SIPPinProtectionConfigsResponse(DataClassJsonMixin): # Whether PIN protection is enabled enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) # Default PIN to use if there is no PIN set on the call object - default_pin: str | None = dc_field(default=None, metadata=dc_config(field_name="default_pin")) + default_pin: str | None = dc_field( + default=None, metadata=dc_config(field_name="default_pin") + ) # Maximum number of PIN attempts allowed - max_attempts: int | None = dc_field(default=None, metadata=dc_config(field_name="max_attempts")) + max_attempts: int | None = dc_field( + default=None, metadata=dc_config(field_name="max_attempts") + ) # Number of digits required for the PIN - required_pin_digits: int | None = dc_field(default=None, metadata=dc_config(field_name="required_pin_digits")) + required_pin_digits: int | None = dc_field( + default=None, metadata=dc_config(field_name="required_pin_digits") + ) + @dataclass class SIPTrunkResponse(DataClassJsonMixin): # Creation timestamp - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Unique identifier for the SIP trunk id: str = dc_field(metadata=dc_config(field_name="id")) # Name of the SIP trunk @@ -12697,7 +25099,14 @@ class SIPTrunkResponse(DataClassJsonMixin): # Password for SIP trunk authentication password: str = dc_field(metadata=dc_config(field_name="password")) # Last update timestamp - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The URI for the SIP trunk uri: str = dc_field(metadata=dc_config(field_name="uri")) # Username for SIP trunk authentication @@ -12707,40 +25116,66 @@ class SIPTrunkResponse(DataClassJsonMixin): # Phone numbers associated with this SIP trunk numbers: list[str] = dc_field(metadata=dc_config(field_name="numbers")) + @dataclass class SRTIngress(DataClassJsonMixin): address: str = dc_field(metadata=dc_config(field_name="address")) + @dataclass class ScoreBands(DataClassJsonMixin): good: float | None = dc_field(default=None, metadata=dc_config(field_name="good")) ok: float | None = dc_field(default=None, metadata=dc_config(field_name="ok")) poor: float | None = dc_field(default=None, metadata=dc_config(field_name="poor")) + @dataclass class ScreensharingSettings(DataClassJsonMixin): - access_request_enabled: bool = dc_field(metadata=dc_config(field_name="access_request_enabled")) + access_request_enabled: bool = dc_field( + metadata=dc_config(field_name="access_request_enabled") + ) enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - target_resolution: 'TargetResolution | None' = dc_field(default=None, metadata=dc_config(field_name="target_resolution")) + target_resolution: "TargetResolution | None" = dc_field( + default=None, metadata=dc_config(field_name="target_resolution") + ) + @dataclass class ScreensharingSettingsRequest(DataClassJsonMixin): - access_request_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="access_request_enabled")) - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - target_resolution: 'TargetResolution | None' = dc_field(default=None, metadata=dc_config(field_name="target_resolution")) + access_request_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="access_request_enabled") + ) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + target_resolution: "TargetResolution | None" = dc_field( + default=None, metadata=dc_config(field_name="target_resolution") + ) + @dataclass class ScreensharingSettingsResponse(DataClassJsonMixin): - access_request_enabled: bool = dc_field(metadata=dc_config(field_name="access_request_enabled")) + access_request_enabled: bool = dc_field( + metadata=dc_config(field_name="access_request_enabled") + ) enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - target_resolution: 'TargetResolution | None' = dc_field(default=None, metadata=dc_config(field_name="target_resolution")) + target_resolution: "TargetResolution | None" = dc_field( + default=None, metadata=dc_config(field_name="target_resolution") + ) + @dataclass class SearchPayload(DataClassJsonMixin): # Channel filter conditions - filter_conditions: dict[str, object] = dc_field(metadata=dc_config(field_name="filter_conditions")) - force_default_search: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_default_search")) - force_sql_v2_backend: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_sql_v2_backend")) + filter_conditions: dict[str, object] = dc_field( + metadata=dc_config(field_name="filter_conditions") + ) + force_default_search: bool | None = dc_field( + default=None, metadata=dc_config(field_name="force_default_search") + ) + force_sql_v2_backend: bool | None = dc_field( + default=None, metadata=dc_config(field_name="force_sql_v2_backend") + ) # Number of messages to return limit: int | None = dc_field(default=None, metadata=dc_config(field_name="limit")) # Pagination parameter. Cannot be used with non-zero offset. @@ -12750,35 +25185,61 @@ class SearchPayload(DataClassJsonMixin): # Search phrase query: str | None = dc_field(default=None, metadata=dc_config(field_name="query")) # Sort parameters. Cannot be used with non-zero offset - sort: 'list[SortParamRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + sort: "list[SortParamRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) # Message filter conditions - message_filter_conditions: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="message_filter_conditions")) - message_options: 'MessageOptions | None' = dc_field(default=None, metadata=dc_config(field_name="message_options")) + message_filter_conditions: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="message_filter_conditions") + ) + message_options: "MessageOptions | None" = dc_field( + default=None, metadata=dc_config(field_name="message_options") + ) + @dataclass class SearchResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Search results - results: 'list[SearchResult]' = dc_field(metadata=dc_config(field_name="results")) + results: "list[SearchResult]" = dc_field(metadata=dc_config(field_name="results")) # Value to pass to the next search query in order to paginate next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) # Value that points to the previous page. Pass as the next value in a search query to paginate backwards - previous: str | None = dc_field(default=None, metadata=dc_config(field_name="previous")) - results_warning: 'SearchWarning | None' = dc_field(default=None, metadata=dc_config(field_name="results_warning")) + previous: str | None = dc_field( + default=None, metadata=dc_config(field_name="previous") + ) + results_warning: "SearchWarning | None" = dc_field( + default=None, metadata=dc_config(field_name="results_warning") + ) + @dataclass class SearchResult(DataClassJsonMixin): - message: 'SearchResultMessage | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + message: "SearchResultMessage | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + @dataclass class SearchResultMessage(DataClassJsonMixin): cid: str = dc_field(metadata=dc_config(field_name="cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - deleted_reply_count: int = dc_field(metadata=dc_config(field_name="deleted_reply_count")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + deleted_reply_count: int = dc_field( + metadata=dc_config(field_name="deleted_reply_count") + ) html: str = dc_field(metadata=dc_config(field_name="html")) id: str = dc_field(metadata=dc_config(field_name="id")) - mentioned_channel: bool = dc_field(metadata=dc_config(field_name="mentioned_channel")) + mentioned_channel: bool = dc_field( + metadata=dc_config(field_name="mentioned_channel") + ) mentioned_here: bool = dc_field(metadata=dc_config(field_name="mentioned_here")) pinned: bool = dc_field(metadata=dc_config(field_name="pinned")) reply_count: int = dc_field(metadata=dc_config(field_name="reply_count")) @@ -12786,274 +25247,608 @@ class SearchResultMessage(DataClassJsonMixin): silent: bool = dc_field(metadata=dc_config(field_name="silent")) text: str = dc_field(metadata=dc_config(field_name="text")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - attachments: 'list[Attachment]' = dc_field(metadata=dc_config(field_name="attachments")) - latest_reactions: 'list[ReactionResponse]' = dc_field(metadata=dc_config(field_name="latest_reactions")) - mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) - own_reactions: 'list[ReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) - restricted_visibility: list[str] = dc_field(metadata=dc_config(field_name="restricted_visibility")) - custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction_counts: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="reaction_counts")) - reaction_scores: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="reaction_scores")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + attachments: "list[Attachment]" = dc_field( + metadata=dc_config(field_name="attachments") + ) + latest_reactions: "list[ReactionResponse]" = dc_field( + metadata=dc_config(field_name="latest_reactions") + ) + mentioned_users: "list[UserResponse]" = dc_field( + metadata=dc_config(field_name="mentioned_users") + ) + own_reactions: "list[ReactionResponse]" = dc_field( + metadata=dc_config(field_name="own_reactions") + ) + restricted_visibility: list[str] = dc_field( + metadata=dc_config(field_name="restricted_visibility") + ) + custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + reaction_counts: "dict[str, int]" = dc_field( + metadata=dc_config(field_name="reaction_counts") + ) + reaction_scores: "dict[str, int]" = dc_field( + metadata=dc_config(field_name="reaction_scores") + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) - command: str | None = dc_field(default=None, metadata=dc_config(field_name="command")) - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - deleted_for_me: bool | None = dc_field(default=None, metadata=dc_config(field_name="deleted_for_me")) - message_text_updated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="message_text_updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + command: str | None = dc_field( + default=None, metadata=dc_config(field_name="command") + ) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + deleted_for_me: bool | None = dc_field( + default=None, metadata=dc_config(field_name="deleted_for_me") + ) + message_text_updated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="message_text_updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) mml: str | None = dc_field(default=None, metadata=dc_config(field_name="mml")) - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) - pin_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pin_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - pinned_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="pinned_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) - quoted_message_id: str | None = dc_field(default=None, metadata=dc_config(field_name="quoted_message_id")) - show_in_channel: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_in_channel")) - mentioned_group_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_group_ids")) - mentioned_groups: 'list[UserGroupResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_groups")) - mentioned_roles: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_roles")) - thread_participants: 'list[UserResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) + pin_expires: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="pin_expires", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + pinned_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="pinned_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + poll_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="poll_id") + ) + quoted_message_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="quoted_message_id") + ) + show_in_channel: bool | None = dc_field( + default=None, metadata=dc_config(field_name="show_in_channel") + ) + mentioned_group_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_group_ids") + ) + mentioned_groups: "list[UserGroupResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="mentioned_groups") + ) + mentioned_roles: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_roles") + ) + thread_participants: "list[UserResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="thread_participants") + ) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) - draft: 'DraftResponse | None' = dc_field(default=None, metadata=dc_config(field_name="draft")) - i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) - image_labels: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="image_labels")) - member: 'ChannelMemberPartialResponse | None' = dc_field(default=None, metadata=dc_config(field_name="member")) - mentioned_channel_members: 'dict[str, ChannelMemberPartialResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_channel_members")) - moderation: 'ModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) + draft: "DraftResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="draft") + ) + i18n: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="i18n") + ) + image_labels: "dict[str, list[str]] | None" = dc_field( + default=None, metadata=dc_config(field_name="image_labels") + ) + member: "ChannelMemberPartialResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="member") + ) + mentioned_channel_members: "dict[str, ChannelMemberPartialResponse] | None" = ( + dc_field( + default=None, metadata=dc_config(field_name="mentioned_channel_members") + ) + ) + moderation: "ModerationV2Response | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation") + ) # User response object - pinned_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="pinned_by")) - poll: 'PollResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll")) + pinned_by: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="pinned_by") + ) + poll: "PollResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="poll") + ) # Represents any chat message - quoted_message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="quoted_message")) - reaction_groups: 'dict[str, ReactionGroupResponse | None] | None' = dc_field(default=None, metadata=dc_config(field_name="reaction_groups")) - reminder: 'ReminderResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="reminder")) - shared_location: 'SharedLocationResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="shared_location")) + quoted_message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="quoted_message") + ) + reaction_groups: "dict[str, ReactionGroupResponse | None] | None" = dc_field( + default=None, metadata=dc_config(field_name="reaction_groups") + ) + reminder: "ReminderResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="reminder") + ) + shared_location: "SharedLocationResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="shared_location") + ) + @dataclass class SearchRolesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Matching roles, sorted ascending by name - roles: 'list[Role]' = dc_field(metadata=dc_config(field_name="roles")) + roles: "list[Role]" = dc_field(metadata=dc_config(field_name="roles")) + @dataclass class SearchUserGroupsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of matching user groups - user_groups: 'list[UserGroupResponse]' = dc_field(metadata=dc_config(field_name="user_groups")) + user_groups: "list[UserGroupResponse]" = dc_field( + metadata=dc_config(field_name="user_groups") + ) + @dataclass class SearchWarning(DataClassJsonMixin): # Code corresponding to the warning warning_code: int = dc_field(metadata=dc_config(field_name="warning_code")) # Description of the warning - warning_description: str = dc_field(metadata=dc_config(field_name="warning_description")) + warning_description: str = dc_field( + metadata=dc_config(field_name="warning_description") + ) # Number of channels searched - channel_search_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_search_count")) + channel_search_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_search_count") + ) # Channel CIDs for the searched channels - channel_search_cids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="channel_search_cids")) + channel_search_cids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_search_cids") + ) + @dataclass class Segment(DataClassJsonMixin): - all_sender_channels: bool = dc_field(metadata=dc_config(field_name="all_sender_channels")) + all_sender_channels: bool = dc_field( + metadata=dc_config(field_name="all_sender_channels") + ) all_users: bool = dc_field(metadata=dc_config(field_name="all_users")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) id: str = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) size: int = dc_field(metadata=dc_config(field_name="size")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) - task_id: str | None = dc_field(default=None, metadata=dc_config(field_name="task_id")) - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) + task_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="task_id") + ) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + @dataclass class SegmentResponse(DataClassJsonMixin): - all_sender_channels: bool = dc_field(metadata=dc_config(field_name="all_sender_channels")) + all_sender_channels: bool = dc_field( + metadata=dc_config(field_name="all_sender_channels") + ) all_users: bool = dc_field(metadata=dc_config(field_name="all_users")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - deleted_at: datetime = dc_field(metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + deleted_at: datetime = dc_field( + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) description: str = dc_field(metadata=dc_config(field_name="description")) id: str = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) size: int = dc_field(metadata=dc_config(field_name="size")) type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) filter: dict[str, object] = dc_field(metadata=dc_config(field_name="filter")) + @dataclass class SegmentTargetResponse(DataClassJsonMixin): app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) segment_id: str = dc_field(metadata=dc_config(field_name="segment_id")) target_id: str = dc_field(metadata=dc_config(field_name="target_id")) + @dataclass class Segments(DataClassJsonMixin): - by_country_reason: str = dc_field(metadata=dc_config(field_name="by_country_reason")) - by_browser: 'list[BroadcastSegment]' = dc_field(metadata=dc_config(field_name="by_browser")) - by_country: 'list[BroadcastSegment]' = dc_field(metadata=dc_config(field_name="by_country")) - by_delivery_zone: 'list[DeliveryZoneSegment]' = dc_field(metadata=dc_config(field_name="by_delivery_zone")) - by_os: 'list[BroadcastSegment]' = dc_field(metadata=dc_config(field_name="by_os")) - by_sdk: 'list[BroadcastSegment]' = dc_field(metadata=dc_config(field_name="by_sdk")) + by_country_reason: str = dc_field( + metadata=dc_config(field_name="by_country_reason") + ) + by_browser: "list[BroadcastSegment]" = dc_field( + metadata=dc_config(field_name="by_browser") + ) + by_country: "list[BroadcastSegment]" = dc_field( + metadata=dc_config(field_name="by_country") + ) + by_delivery_zone: "list[DeliveryZoneSegment]" = dc_field( + metadata=dc_config(field_name="by_delivery_zone") + ) + by_os: "list[BroadcastSegment]" = dc_field(metadata=dc_config(field_name="by_os")) + by_sdk: "list[BroadcastSegment]" = dc_field(metadata=dc_config(field_name="by_sdk")) + @dataclass class SendCallEventRequest(DataClassJsonMixin): - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class SendCallEventResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class SendClosedCaptionRequest(DataClassJsonMixin): speaker_id: str = dc_field(metadata=dc_config(field_name="speaker_id")) text: str = dc_field(metadata=dc_config(field_name="text")) - end_time: datetime | None = dc_field(default=None, metadata=dc_config(field_name="end_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - language: str | None = dc_field(default=None, metadata=dc_config(field_name="language")) - service: str | None = dc_field(default=None, metadata=dc_config(field_name="service")) - start_time: datetime | None = dc_field(default=None, metadata=dc_config(field_name="start_time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - translated: bool | None = dc_field(default=None, metadata=dc_config(field_name="translated")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + end_time: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="end_time", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + language: str | None = dc_field( + default=None, metadata=dc_config(field_name="language") + ) + service: str | None = dc_field( + default=None, metadata=dc_config(field_name="service") + ) + start_time: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="start_time", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + translated: bool | None = dc_field( + default=None, metadata=dc_config(field_name="translated") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class SendClosedCaptionResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class SendEventRequest(DataClassJsonMixin): - event: 'EventRequest' = dc_field(metadata=dc_config(field_name="event")) + event: "EventRequest" = dc_field(metadata=dc_config(field_name="event")) + @dataclass class SendMessageRequest(DataClassJsonMixin): # Message data for creating or updating a message - message: 'MessageRequest' = dc_field(metadata=dc_config(field_name="message")) - force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) + message: "MessageRequest" = dc_field(metadata=dc_config(field_name="message")) + force_moderation: bool | None = dc_field( + default=None, metadata=dc_config(field_name="force_moderation") + ) # When true, the response includes channel_context: a slim channel object with cid, type, id and created_by - include_channel_context: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_channel_context")) + include_channel_context: bool | None = dc_field( + default=None, metadata=dc_config(field_name="include_channel_context") + ) # When true, the response includes mentioned_members: for each mentioned user, whether that user is currently a channel member. Requires the ReadChannelMembers permission - include_mentioned_members: bool | None = dc_field(default=None, metadata=dc_config(field_name="include_mentioned_members")) - keep_channel_hidden: bool | None = dc_field(default=None, metadata=dc_config(field_name="keep_channel_hidden")) - pending: bool | None = dc_field(default=None, metadata=dc_config(field_name="pending")) - skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) - pending_message_metadata: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="pending_message_metadata")) + include_mentioned_members: bool | None = dc_field( + default=None, metadata=dc_config(field_name="include_mentioned_members") + ) + keep_channel_hidden: bool | None = dc_field( + default=None, metadata=dc_config(field_name="keep_channel_hidden") + ) + pending: bool | None = dc_field( + default=None, metadata=dc_config(field_name="pending") + ) + skip_enrich_url: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_enrich_url") + ) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) + pending_message_metadata: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="pending_message_metadata") + ) + @dataclass class SendMessageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) # Slim channel object: identity plus creator - channel_context: 'ChannelContextResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel_context")) + channel_context: "ChannelContextResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel_context") + ) # Map of mentioned user ID to whether that user is currently an active channel member. Only set when include_mentioned_members was requested; omitted when the message has no mentions or the membership lookup failed - mentioned_members: 'dict[str, bool] | None' = dc_field(default=None, metadata=dc_config(field_name="mentioned_members")) + mentioned_members: "dict[str, bool] | None" = dc_field( + default=None, metadata=dc_config(field_name="mentioned_members") + ) # Pending message metadata - pending_message_metadata: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="pending_message_metadata")) + pending_message_metadata: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="pending_message_metadata") + ) + @dataclass class SendReactionRequest(DataClassJsonMixin): # Represents user reaction to a message - reaction: 'ReactionRequest' = dc_field(metadata=dc_config(field_name="reaction")) + reaction: "ReactionRequest" = dc_field(metadata=dc_config(field_name="reaction")) # Whether to replace all existing user reactions - enforce_unique: bool | None = dc_field(default=None, metadata=dc_config(field_name="enforce_unique")) + enforce_unique: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enforce_unique") + ) # Skips any mobile push notifications - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) + @dataclass class SendReactionResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) - reaction: 'ReactionResponse' = dc_field(metadata=dc_config(field_name="reaction")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) + reaction: "ReactionResponse" = dc_field(metadata=dc_config(field_name="reaction")) + @dataclass class SendUserCustomEventRequest(DataClassJsonMixin): - event: 'UserCustomEventRequest' = dc_field(metadata=dc_config(field_name="event")) + event: "UserCustomEventRequest" = dc_field(metadata=dc_config(field_name="event")) + @dataclass class SessionClient(DataClassJsonMixin): ip: str | None = dc_field(default=None, metadata=dc_config(field_name="ip")) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - network_type: str | None = dc_field(default=None, metadata=dc_config(field_name="network_type")) - version: str | None = dc_field(default=None, metadata=dc_config(field_name="version")) - location: 'CallStatsLocation | None' = dc_field(default=None, metadata=dc_config(field_name="location")) + network_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="network_type") + ) + version: str | None = dc_field( + default=None, metadata=dc_config(field_name="version") + ) + location: "CallStatsLocation | None" = dc_field( + default=None, metadata=dc_config(field_name="location") + ) + @dataclass class SessionSettings(DataClassJsonMixin): - inactivity_timeout_seconds: int = dc_field(metadata=dc_config(field_name="inactivity_timeout_seconds")) + inactivity_timeout_seconds: int = dc_field( + metadata=dc_config(field_name="inactivity_timeout_seconds") + ) + @dataclass class SessionSettingsRequest(DataClassJsonMixin): - inactivity_timeout_seconds: int = dc_field(metadata=dc_config(field_name="inactivity_timeout_seconds")) + inactivity_timeout_seconds: int = dc_field( + metadata=dc_config(field_name="inactivity_timeout_seconds") + ) + @dataclass class SessionSettingsResponse(DataClassJsonMixin): - inactivity_timeout_seconds: int = dc_field(metadata=dc_config(field_name="inactivity_timeout_seconds")) + inactivity_timeout_seconds: int = dc_field( + metadata=dc_config(field_name="inactivity_timeout_seconds") + ) + @dataclass class SessionWarningResponse(DataClassJsonMixin): code: str = dc_field(metadata=dc_config(field_name="code")) warning: str = dc_field(metadata=dc_config(field_name="warning")) - time: datetime | None = dc_field(default=None, metadata=dc_config(field_name="time", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + time: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="time", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class SetRetentionPolicyRequest(DataClassJsonMixin): max_age_hours: int = dc_field(metadata=dc_config(field_name="max_age_hours")) policy: str = dc_field(metadata=dc_config(field_name="policy")) + @dataclass class SetRetentionPolicyResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - policy: 'RetentionPolicy' = dc_field(metadata=dc_config(field_name="policy")) + policy: "RetentionPolicy" = dc_field(metadata=dc_config(field_name="policy")) + @dataclass class SetupSession(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) current_step: str = dc_field(metadata=dc_config(field_name="current_step")) status: str = dc_field(metadata=dc_config(field_name="status")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - setup_data: dict[str, object] = dc_field(metadata=dc_config(field_name="setup_data")) - completed_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="completed_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + setup_data: dict[str, object] = dc_field( + metadata=dc_config(field_name="setup_data") + ) + completed_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="completed_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class ShadowBlockActionRequestPayload(DataClassJsonMixin): # Reason for shadow blocking reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) + @dataclass class ShareResponse(DataClassJsonMixin): # ID of the sharing (child) activity activity_id: str = dc_field(metadata=dc_config(field_name="activity_id")) # When the share occurred - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + @dataclass class SharedLocation(DataClassJsonMixin): latitude: float = dc_field(metadata=dc_config(field_name="latitude")) longitude: float = dc_field(metadata=dc_config(field_name="longitude")) - created_by_device_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_device_id")) - end_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="end_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_by_device_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="created_by_device_id") + ) + end_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="end_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class SharedLocationResponse(DataClassJsonMixin): # Channel CID channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Device ID that created the live location - created_by_device_id: str = dc_field(metadata=dc_config(field_name="created_by_device_id")) + created_by_device_id: str = dc_field( + metadata=dc_config(field_name="created_by_device_id") + ) duration: str = dc_field(metadata=dc_config(field_name="duration")) # Latitude coordinate latitude: float = dc_field(metadata=dc_config(field_name="latitude")) @@ -13062,54 +25857,115 @@ class SharedLocationResponse(DataClassJsonMixin): # Message ID message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # Date/time of the last update - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # User ID user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # Time when the live location expires - end_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="end_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + end_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="end_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + @dataclass class SharedLocationResponseData(DataClassJsonMixin): channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - created_by_device_id: str = dc_field(metadata=dc_config(field_name="created_by_device_id")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + created_by_device_id: str = dc_field( + metadata=dc_config(field_name="created_by_device_id") + ) latitude: float = dc_field(metadata=dc_config(field_name="latitude")) longitude: float = dc_field(metadata=dc_config(field_name="longitude")) message_id: str = dc_field(metadata=dc_config(field_name="message_id")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - end_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="end_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + end_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="end_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + @dataclass class SharedLocationsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - active_live_locations: 'list[SharedLocationResponseData]' = dc_field(metadata=dc_config(field_name="active_live_locations")) + active_live_locations: "list[SharedLocationResponseData]" = dc_field( + metadata=dc_config(field_name="active_live_locations") + ) + @dataclass class ShowChannelRequest(DataClassJsonMixin): - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ShowChannelResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class SingleFollowResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) + follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) # Whether a notification activity was successfully created - notification_created: bool | None = dc_field(default=None, metadata=dc_config(field_name="notification_created")) + notification_created: bool | None = dc_field( + default=None, metadata=dc_config(field_name="notification_created") + ) + @dataclass class SipInboundCredentials(DataClassJsonMixin): @@ -13124,9 +25980,14 @@ class SipInboundCredentials(DataClassJsonMixin): # User ID for the call user_id: str = dc_field(metadata=dc_config(field_name="user_id")) # Custom data associated with the call - call_custom_data: dict[str, object] = dc_field(metadata=dc_config(field_name="call_custom_data")) + call_custom_data: dict[str, object] = dc_field( + metadata=dc_config(field_name="call_custom_data") + ) # Custom data associated with the user - user_custom_data: dict[str, object] = dc_field(metadata=dc_config(field_name="user_custom_data")) + user_custom_data: dict[str, object] = dc_field( + metadata=dc_config(field_name="user_custom_data") + ) + @dataclass class SortParam(DataClassJsonMixin): @@ -13134,277 +25995,469 @@ class SortParam(DataClassJsonMixin): field: str = dc_field(metadata=dc_config(field_name="field")) type: str = dc_field(metadata=dc_config(field_name="type")) + @dataclass class SortParamRequest(DataClassJsonMixin): # Direction of sorting, 1 for Ascending, -1 for Descending, default is 1. One of: -1, 1 - direction: int | None = dc_field(default=None, metadata=dc_config(field_name="direction")) + direction: int | None = dc_field( + default=None, metadata=dc_config(field_name="direction") + ) # Name of field to sort by field: str | None = dc_field(default=None, metadata=dc_config(field_name="field")) # Type of field to sort by. Empty string or omitted means string type (default). One of: number, boolean type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) + @dataclass class SourceHealth(DataClassJsonMixin): co_host_peak: int = dc_field(metadata=dc_config(field_name="co_host_peak")) dead_air_s: int = dc_field(metadata=dc_config(field_name="dead_air_s")) - interruptions: 'list[SourceInterruption]' = dc_field(metadata=dc_config(field_name="interruptions")) - publisher_sessions: 'list[PublisherSession]' = dc_field(metadata=dc_config(field_name="publisher_sessions")) + interruptions: "list[SourceInterruption]" = dc_field( + metadata=dc_config(field_name="interruptions") + ) + publisher_sessions: "list[PublisherSession]" = dc_field( + metadata=dc_config(field_name="publisher_sessions") + ) + @dataclass class SourceInterruption(DataClassJsonMixin): at_offset_min: float = dc_field(metadata=dc_config(field_name="at_offset_min")) dead_air_s: int = dc_field(metadata=dc_config(field_name="dead_air_s")) kind: str = dc_field(metadata=dc_config(field_name="kind")) - seamless: bool | None = dc_field(default=None, metadata=dc_config(field_name="seamless")) + seamless: bool | None = dc_field( + default=None, metadata=dc_config(field_name="seamless") + ) + @dataclass class SpeechSegmentConfig(DataClassJsonMixin): - max_speech_caption_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="max_speech_caption_ms")) - silence_duration_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="silence_duration_ms")) + max_speech_caption_ms: int | None = dc_field( + default=None, metadata=dc_config(field_name="max_speech_caption_ms") + ) + silence_duration_ms: int | None = dc_field( + default=None, metadata=dc_config(field_name="silence_duration_ms") + ) + @dataclass class StartCampaignRequest(DataClassJsonMixin): - scheduled_for: datetime | None = dc_field(default=None, metadata=dc_config(field_name="scheduled_for", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - stop_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="stop_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + scheduled_for: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="scheduled_for", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + stop_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="stop_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class StartCampaignResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - campaign: 'CampaignResponse | None' = dc_field(default=None, metadata=dc_config(field_name="campaign")) - users: 'PagerResponse | None' = dc_field(default=None, metadata=dc_config(field_name="users")) + campaign: "CampaignResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="campaign") + ) + users: "PagerResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="users") + ) + @dataclass class StartClosedCaptionsRequest(DataClassJsonMixin): # Enable transcriptions along with closed captions - enable_transcription: bool | None = dc_field(default=None, metadata=dc_config(field_name="enable_transcription")) + enable_transcription: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enable_transcription") + ) # Which external storage to use for transcriptions (only applicable if enable_transcription is true) - external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="external_storage")) + external_storage: str | None = dc_field( + default=None, metadata=dc_config(field_name="external_storage") + ) # The spoken language in the call, if not provided the language defined in the transcription settings will be used. One of: auto, ar, bg, ca, cs, da, de, el, en, es, et, fi, fr, he, hi, hr, hu, id, it, ja, ko, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, ta, th, tl, tr, uk, zh - language: str | None = dc_field(default=None, metadata=dc_config(field_name="language")) - speech_segment_config: 'SpeechSegmentConfig | None' = dc_field(default=None, metadata=dc_config(field_name="speech_segment_config")) + language: str | None = dc_field( + default=None, metadata=dc_config(field_name="language") + ) + speech_segment_config: "SpeechSegmentConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="speech_segment_config") + ) + @dataclass class StartClosedCaptionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class StartFrameRecordingRequest(DataClassJsonMixin): - recording_external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="recording_external_storage")) + recording_external_storage: str | None = dc_field( + default=None, metadata=dc_config(field_name="recording_external_storage") + ) + @dataclass class StartFrameRecordingResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class StartHLSBroadcastingRequest(DataClassJsonMixin): pass + @dataclass class StartHLSBroadcastingResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # the URL of the HLS playlist playlist_url: str = dc_field(metadata=dc_config(field_name="playlist_url")) + @dataclass class StartPolicyTestRunRequest(DataClassJsonMixin): pass + @dataclass class StartRTMPBroadcastsRequest(DataClassJsonMixin): # List of broadcasts to start - broadcasts: 'list[RTMPBroadcastRequest]' = dc_field(metadata=dc_config(field_name="broadcasts")) + broadcasts: "list[RTMPBroadcastRequest]" = dc_field( + metadata=dc_config(field_name="broadcasts") + ) + @dataclass class StartRTMPBroadcastsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class StartRecordingRequest(DataClassJsonMixin): - recording_external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="recording_external_storage")) + recording_external_storage: str | None = dc_field( + default=None, metadata=dc_config(field_name="recording_external_storage") + ) + @dataclass class StartRecordingResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class StartTranscriptionRequest(DataClassJsonMixin): # Enable closed captions along with transcriptions - enable_closed_captions: bool | None = dc_field(default=None, metadata=dc_config(field_name="enable_closed_captions")) + enable_closed_captions: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enable_closed_captions") + ) # The spoken language in the call, if not provided the language defined in the transcription settings will be used. One of: auto, ar, bg, ca, cs, da, de, el, en, es, et, fi, fr, he, hi, hr, hu, id, it, ja, ko, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, ta, th, tl, tr, uk, zh - language: str | None = dc_field(default=None, metadata=dc_config(field_name="language")) + language: str | None = dc_field( + default=None, metadata=dc_config(field_name="language") + ) # Store transcriptions in this external storage - transcription_external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="transcription_external_storage")) + transcription_external_storage: str | None = dc_field( + default=None, metadata=dc_config(field_name="transcription_external_storage") + ) + @dataclass class StartTranscriptionResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class StopAllRTMPBroadcastsRequest(DataClassJsonMixin): pass + @dataclass class StopAllRTMPBroadcastsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class StopCampaignRequest(DataClassJsonMixin): pass + @dataclass class StopClosedCaptionsRequest(DataClassJsonMixin): - stop_transcription: bool | None = dc_field(default=None, metadata=dc_config(field_name="stop_transcription")) + stop_transcription: bool | None = dc_field( + default=None, metadata=dc_config(field_name="stop_transcription") + ) + @dataclass class StopClosedCaptionsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class StopFrameRecordingRequest(DataClassJsonMixin): pass + @dataclass class StopFrameRecordingResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class StopHLSBroadcastingRequest(DataClassJsonMixin): pass + @dataclass class StopHLSBroadcastingResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class StopLiveRequest(DataClassJsonMixin): - continue_closed_caption: bool | None = dc_field(default=None, metadata=dc_config(field_name="continue_closed_caption")) - continue_composite_recording: bool | None = dc_field(default=None, metadata=dc_config(field_name="continue_composite_recording")) - continue_hls: bool | None = dc_field(default=None, metadata=dc_config(field_name="continue_hls")) - continue_individual_recording: bool | None = dc_field(default=None, metadata=dc_config(field_name="continue_individual_recording")) - continue_raw_recording: bool | None = dc_field(default=None, metadata=dc_config(field_name="continue_raw_recording")) - continue_recording: bool | None = dc_field(default=None, metadata=dc_config(field_name="continue_recording")) - continue_rtmp_broadcasts: bool | None = dc_field(default=None, metadata=dc_config(field_name="continue_rtmp_broadcasts")) - continue_transcription: bool | None = dc_field(default=None, metadata=dc_config(field_name="continue_transcription")) + continue_closed_caption: bool | None = dc_field( + default=None, metadata=dc_config(field_name="continue_closed_caption") + ) + continue_composite_recording: bool | None = dc_field( + default=None, metadata=dc_config(field_name="continue_composite_recording") + ) + continue_hls: bool | None = dc_field( + default=None, metadata=dc_config(field_name="continue_hls") + ) + continue_individual_recording: bool | None = dc_field( + default=None, metadata=dc_config(field_name="continue_individual_recording") + ) + continue_raw_recording: bool | None = dc_field( + default=None, metadata=dc_config(field_name="continue_raw_recording") + ) + continue_recording: bool | None = dc_field( + default=None, metadata=dc_config(field_name="continue_recording") + ) + continue_rtmp_broadcasts: bool | None = dc_field( + default=None, metadata=dc_config(field_name="continue_rtmp_broadcasts") + ) + continue_transcription: bool | None = dc_field( + default=None, metadata=dc_config(field_name="continue_transcription") + ) + @dataclass class StopLiveResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + @dataclass class StopRTMPBroadcastsRequest(DataClassJsonMixin): pass + @dataclass class StopRTMPBroadcastsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class StopRecordingRequest(DataClassJsonMixin): pass + @dataclass class StopRecordingResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class StopTranscriptionRequest(DataClassJsonMixin): - stop_closed_captions: bool | None = dc_field(default=None, metadata=dc_config(field_name="stop_closed_captions")) + stop_closed_captions: bool | None = dc_field( + default=None, metadata=dc_config(field_name="stop_closed_captions") + ) + @dataclass class StopTranscriptionResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class StoriesConfig(DataClassJsonMixin): # Whether to skip already watched stories - skip_watched: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_watched")) + skip_watched: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_watched") + ) # Whether to track watched status for stories - track_watched: bool | None = dc_field(default=None, metadata=dc_config(field_name="track_watched")) + track_watched: bool | None = dc_field( + default=None, metadata=dc_config(field_name="track_watched") + ) + @dataclass class StoriesFeedUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The ID of the feed fid: str = dc_field(metadata=dc_config(field_name="fid")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "feeds.stories_feed.updated" in this case - type: str = dc_field(default="feeds.stories_feed.updated", metadata=dc_config(field_name="type")) - feed_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="feed_visibility")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="feeds.stories_feed.updated", metadata=dc_config(field_name="type") + ) + feed_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="feed_visibility") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Individual activities for stories feeds - activities: 'list[ActivityResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="activities")) + activities: "list[ActivityResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="activities") + ) # Aggregated activities for stories feeds - aggregated_activities: 'list[AggregatedActivityResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="aggregated_activities")) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + aggregated_activities: "list[AggregatedActivityResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="aggregated_activities") + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class SubmitActionRequest(DataClassJsonMixin): # Type of moderation action to perform. One of: mark_reviewed, delete_message, delete_activity, delete_comment, delete_reaction, ban, custom, unban, restore, delete_user, delete_user_messages, unblock, block, shadow_block, unmask, kick_user, end_call, escalate, de_escalate action_type: str = dc_field(metadata=dc_config(field_name="action_type")) # UUID of the appeal to act on (required for reject_appeal, optional for other actions) - appeal_id: str | None = dc_field(default=None, metadata=dc_config(field_name="appeal_id")) + appeal_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="appeal_id") + ) # UUID of the review queue item to act on - item_id: str | None = dc_field(default=None, metadata=dc_config(field_name="item_id")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + item_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="item_id") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Configuration for ban moderation action - ban: 'BanActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="ban")) + ban: "BanActionRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="ban") + ) # Configuration for block action - block: 'BlockActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="block")) - bypass: 'BypassActionRequest | None' = dc_field(default=None, metadata=dc_config(field_name="bypass")) + block: "BlockActionRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="block") + ) + bypass: "BypassActionRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="bypass") + ) # Configuration for custom moderation action - custom: 'CustomActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: "CustomActionRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # Configuration for activity deletion action - delete_activity: 'DeleteActivityRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="delete_activity")) + delete_activity: "DeleteActivityRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="delete_activity") + ) # Configuration for comment deletion action - delete_comment: 'DeleteCommentRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="delete_comment")) + delete_comment: "DeleteCommentRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="delete_comment") + ) # Configuration for message deletion action - delete_message: 'DeleteMessageRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="delete_message")) + delete_message: "DeleteMessageRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="delete_message") + ) # Configuration for reaction deletion action - delete_reaction: 'DeleteReactionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="delete_reaction")) + delete_reaction: "DeleteReactionRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="delete_reaction") + ) # Configuration for user deletion action - delete_user: 'DeleteUserRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="delete_user")) + delete_user: "DeleteUserRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="delete_user") + ) # Configuration for deleting all of a user's chat messages without banning them or deleting their account - delete_user_messages: 'DeleteUserMessagesRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="delete_user_messages")) + delete_user_messages: "DeleteUserMessagesRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="delete_user_messages") + ) # Configuration for escalation action - escalate: 'EscalatePayload | None' = dc_field(default=None, metadata=dc_config(field_name="escalate")) - flag: 'FlagRequest | None' = dc_field(default=None, metadata=dc_config(field_name="flag")) + escalate: "EscalatePayload | None" = dc_field( + default=None, metadata=dc_config(field_name="escalate") + ) + flag: "FlagRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="flag") + ) # Configuration for mark reviewed action - mark_reviewed: 'MarkReviewedRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="mark_reviewed")) + mark_reviewed: "MarkReviewedRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="mark_reviewed") + ) # Configuration for rejecting an appeal - reject_appeal: 'RejectAppealRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="reject_appeal")) + reject_appeal: "RejectAppealRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="reject_appeal") + ) # Configuration for restore action. State-aware: reverses whichever of a delete, a block, or a shadow block currently applies to the content (including both a delete and a block/shadow block at once). - restore: 'RestoreActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="restore")) + restore: "RestoreActionRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="restore") + ) # Configuration for shadow block action - shadow_block: 'ShadowBlockActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="shadow_block")) + shadow_block: "ShadowBlockActionRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="shadow_block") + ) # Configuration for unban moderation action - unban: 'UnbanActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="unban")) + unban: "UnbanActionRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="unban") + ) # Deprecated: use restore instead — it now also reverses a block or shadow block. Configuration for unblock action. - unblock: 'UnblockActionRequestPayload | None' = dc_field(default=None, metadata=dc_config(field_name="unblock")) + unblock: "UnblockActionRequestPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="unblock") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class SubmitActionResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Present when the appeal was accepted but the entity could not be restored automatically. The moderator should restore it manually. - auto_restore_warning: str | None = dc_field(default=None, metadata=dc_config(field_name="auto_restore_warning")) - appeal_item: 'AppealItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="appeal_item")) - item: 'ReviewQueueItemResponse | None' = dc_field(default=None, metadata=dc_config(field_name="item")) + auto_restore_warning: str | None = dc_field( + default=None, metadata=dc_config(field_name="auto_restore_warning") + ) + appeal_item: "AppealItemResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="appeal_item") + ) + item: "ReviewQueueItemResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="item") + ) + @dataclass class SubmitModerationFeedbackRequest(DataClassJsonMixin): @@ -13415,228 +26468,514 @@ class SubmitModerationFeedbackRequest(DataClassJsonMixin): # Provider-side reference identifying the moderated content reference: str = dc_field(metadata=dc_config(field_name="reference")) # Optional moderation channel UUID for context - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) # Action originally produced by the moderation system - current_recommended_action: str | None = dc_field(default=None, metadata=dc_config(field_name="current_recommended_action")) + current_recommended_action: str | None = dc_field( + default=None, metadata=dc_config(field_name="current_recommended_action") + ) # Optional free-form note explaining why the classification was wrong - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) # Optional moderator-supplied action - expected_recommended_action: str | None = dc_field(default=None, metadata=dc_config(field_name="expected_recommended_action")) + expected_recommended_action: str | None = dc_field( + default=None, metadata=dc_config(field_name="expected_recommended_action") + ) # Classifications originally produced by the moderation system - current_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="current_labels")) + current_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="current_labels") + ) # Optional moderator-supplied classifications (up to 16 entries) - expected_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="expected_labels")) + expected_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="expected_labels") + ) + @dataclass class SubmitModerationFeedbackResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class SubscriberAllMetrics(DataClassJsonMixin): - audio: 'SubscriberAudioMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="audio")) - rtt_ms: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="rtt_ms")) - video: 'SubscriberVideoMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="video")) + audio: "SubscriberAudioMetrics | None" = dc_field( + default=None, metadata=dc_config(field_name="audio") + ) + rtt_ms: "ActiveCallsLatencyStats | None" = dc_field( + default=None, metadata=dc_config(field_name="rtt_ms") + ) + video: "SubscriberVideoMetrics | None" = dc_field( + default=None, metadata=dc_config(field_name="video") + ) + @dataclass class SubscriberAudioMetrics(DataClassJsonMixin): - concealment_pct: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="concealment_pct")) - jitter_ms: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="jitter_ms")) - packets_lost_pct: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="packets_lost_pct")) + concealment_pct: "ActiveCallsLatencyStats | None" = dc_field( + default=None, metadata=dc_config(field_name="concealment_pct") + ) + jitter_ms: "ActiveCallsLatencyStats | None" = dc_field( + default=None, metadata=dc_config(field_name="jitter_ms") + ) + packets_lost_pct: "ActiveCallsLatencyStats | None" = dc_field( + default=None, metadata=dc_config(field_name="packets_lost_pct") + ) + @dataclass class SubscriberStatsResponse(DataClassJsonMixin): total: int = dc_field(metadata=dc_config(field_name="total")) - total_subscribed_duration_seconds: int = dc_field(metadata=dc_config(field_name="total_subscribed_duration_seconds")) + total_subscribed_duration_seconds: int = dc_field( + metadata=dc_config(field_name="total_subscribed_duration_seconds") + ) unique: int = dc_field(metadata=dc_config(field_name="unique")) + @dataclass class SubscriberVideoMetrics(DataClassJsonMixin): - fps_30: 'ActiveCallsFPSStats | None' = dc_field(default=None, metadata=dc_config(field_name="fps_30")) - jitter_ms: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="jitter_ms")) - packets_lost_pct: 'ActiveCallsLatencyStats | None' = dc_field(default=None, metadata=dc_config(field_name="packets_lost_pct")) + fps_30: "ActiveCallsFPSStats | None" = dc_field( + default=None, metadata=dc_config(field_name="fps_30") + ) + jitter_ms: "ActiveCallsLatencyStats | None" = dc_field( + default=None, metadata=dc_config(field_name="jitter_ms") + ) + packets_lost_pct: "ActiveCallsLatencyStats | None" = dc_field( + default=None, metadata=dc_config(field_name="packets_lost_pct") + ) + @dataclass class SubscribersMetrics(DataClassJsonMixin): - all: 'SubscriberAllMetrics | None' = dc_field(default=None, metadata=dc_config(field_name="all")) + all: "SubscriberAllMetrics | None" = dc_field( + default=None, metadata=dc_config(field_name="all") + ) + @dataclass class Supporting(DataClassJsonMixin): - delivery_incident_windows: 'list[Incident]' = dc_field(metadata=dc_config(field_name="delivery_incident_windows")) - edge_outlier_zones: list[str] = dc_field(metadata=dc_config(field_name="edge_outlier_zones")) - source_drop_windows: 'list[TimeWindow]' = dc_field(metadata=dc_config(field_name="source_drop_windows")) + delivery_incident_windows: "list[Incident]" = dc_field( + metadata=dc_config(field_name="delivery_incident_windows") + ) + edge_outlier_zones: list[str] = dc_field( + metadata=dc_config(field_name="edge_outlier_zones") + ) + source_drop_windows: "list[TimeWindow]" = dc_field( + metadata=dc_config(field_name="source_drop_windows") + ) + @dataclass class TargetResolution(DataClassJsonMixin): height: int = dc_field(metadata=dc_config(field_name="height")) width: int = dc_field(metadata=dc_config(field_name="width")) - bitrate: int | None = dc_field(default=None, metadata=dc_config(field_name="bitrate")) + bitrate: int | None = dc_field( + default=None, metadata=dc_config(field_name="bitrate") + ) + @dataclass class TeamUsageStats(DataClassJsonMixin): # Team identifier (empty string for users not assigned to any team) team: str = dc_field(metadata=dc_config(field_name="team")) # Statistics for a single metric with optional daily breakdown - concurrent_connections: 'MetricStats' = dc_field(metadata=dc_config(field_name="concurrent_connections")) + concurrent_connections: "MetricStats" = dc_field( + metadata=dc_config(field_name="concurrent_connections") + ) # Statistics for a single metric with optional daily breakdown - concurrent_users: 'MetricStats' = dc_field(metadata=dc_config(field_name="concurrent_users")) + concurrent_users: "MetricStats" = dc_field( + metadata=dc_config(field_name="concurrent_users") + ) # Statistics for a single metric with optional daily breakdown - image_moderations_daily: 'MetricStats' = dc_field(metadata=dc_config(field_name="image_moderations_daily")) + image_moderations_daily: "MetricStats" = dc_field( + metadata=dc_config(field_name="image_moderations_daily") + ) # Statistics for a single metric with optional daily breakdown - messages_daily: 'MetricStats' = dc_field(metadata=dc_config(field_name="messages_daily")) + messages_daily: "MetricStats" = dc_field( + metadata=dc_config(field_name="messages_daily") + ) # Statistics for a single metric with optional daily breakdown - messages_last_24_hours: 'MetricStats' = dc_field(metadata=dc_config(field_name="messages_last_24_hours")) + messages_last_24_hours: "MetricStats" = dc_field( + metadata=dc_config(field_name="messages_last_24_hours") + ) # Statistics for a single metric with optional daily breakdown - messages_last_30_days: 'MetricStats' = dc_field(metadata=dc_config(field_name="messages_last_30_days")) + messages_last_30_days: "MetricStats" = dc_field( + metadata=dc_config(field_name="messages_last_30_days") + ) # Statistics for a single metric with optional daily breakdown - messages_month_to_date: 'MetricStats' = dc_field(metadata=dc_config(field_name="messages_month_to_date")) + messages_month_to_date: "MetricStats" = dc_field( + metadata=dc_config(field_name="messages_month_to_date") + ) # Statistics for a single metric with optional daily breakdown - messages_total: 'MetricStats' = dc_field(metadata=dc_config(field_name="messages_total")) + messages_total: "MetricStats" = dc_field( + metadata=dc_config(field_name="messages_total") + ) # Statistics for a single metric with optional daily breakdown - translations_daily: 'MetricStats' = dc_field(metadata=dc_config(field_name="translations_daily")) + translations_daily: "MetricStats" = dc_field( + metadata=dc_config(field_name="translations_daily") + ) # Statistics for a single metric with optional daily breakdown - users_daily: 'MetricStats' = dc_field(metadata=dc_config(field_name="users_daily")) + users_daily: "MetricStats" = dc_field(metadata=dc_config(field_name="users_daily")) # Statistics for a single metric with optional daily breakdown - users_engaged_last_30_days: 'MetricStats' = dc_field(metadata=dc_config(field_name="users_engaged_last_30_days")) + users_engaged_last_30_days: "MetricStats" = dc_field( + metadata=dc_config(field_name="users_engaged_last_30_days") + ) # Statistics for a single metric with optional daily breakdown - users_engaged_month_to_date: 'MetricStats' = dc_field(metadata=dc_config(field_name="users_engaged_month_to_date")) + users_engaged_month_to_date: "MetricStats" = dc_field( + metadata=dc_config(field_name="users_engaged_month_to_date") + ) # Statistics for a single metric with optional daily breakdown - users_last_24_hours: 'MetricStats' = dc_field(metadata=dc_config(field_name="users_last_24_hours")) + users_last_24_hours: "MetricStats" = dc_field( + metadata=dc_config(field_name="users_last_24_hours") + ) # Statistics for a single metric with optional daily breakdown - users_last_30_days: 'MetricStats' = dc_field(metadata=dc_config(field_name="users_last_30_days")) + users_last_30_days: "MetricStats" = dc_field( + metadata=dc_config(field_name="users_last_30_days") + ) # Statistics for a single metric with optional daily breakdown - users_month_to_date: 'MetricStats' = dc_field(metadata=dc_config(field_name="users_month_to_date")) + users_month_to_date: "MetricStats" = dc_field( + metadata=dc_config(field_name="users_month_to_date") + ) # Statistics for a single metric with optional daily breakdown - users_total: 'MetricStats' = dc_field(metadata=dc_config(field_name="users_total")) + users_total: "MetricStats" = dc_field(metadata=dc_config(field_name="users_total")) + @dataclass class TextContentParameters(DataClassJsonMixin): - contains_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="contains_url")) - label_operator: str | None = dc_field(default=None, metadata=dc_config(field_name="label_operator")) - severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) - text_length: int | None = dc_field(default=None, metadata=dc_config(field_name="text_length")) - text_length_operator: str | None = dc_field(default=None, metadata=dc_config(field_name="text_length_operator")) - blocklist_match: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_match")) - harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) - llm_harm_labels: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="llm_harm_labels")) + contains_url: bool | None = dc_field( + default=None, metadata=dc_config(field_name="contains_url") + ) + label_operator: str | None = dc_field( + default=None, metadata=dc_config(field_name="label_operator") + ) + severity: str | None = dc_field( + default=None, metadata=dc_config(field_name="severity") + ) + text_length: int | None = dc_field( + default=None, metadata=dc_config(field_name="text_length") + ) + text_length_operator: str | None = dc_field( + default=None, metadata=dc_config(field_name="text_length_operator") + ) + blocklist_match: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist_match") + ) + harm_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="harm_labels") + ) + llm_harm_labels: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="llm_harm_labels") + ) + @dataclass class TextRuleParameters(DataClassJsonMixin): - contains_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="contains_url")) - semantic_filter_min_threshold: float | None = dc_field(default=None, metadata=dc_config(field_name="semantic_filter_min_threshold")) - severity: str | None = dc_field(default=None, metadata=dc_config(field_name="severity")) - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) - blocklist_match: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_match")) - harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) - semantic_filter_names: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="semantic_filter_names")) - llm_harm_labels: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="llm_harm_labels")) + contains_url: bool | None = dc_field( + default=None, metadata=dc_config(field_name="contains_url") + ) + semantic_filter_min_threshold: float | None = dc_field( + default=None, metadata=dc_config(field_name="semantic_filter_min_threshold") + ) + severity: str | None = dc_field( + default=None, metadata=dc_config(field_name="severity") + ) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + time_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="time_window") + ) + blocklist_match: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist_match") + ) + harm_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="harm_labels") + ) + semantic_filter_names: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="semantic_filter_names") + ) + llm_harm_labels: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="llm_harm_labels") + ) + @dataclass class ThreadParticipant(DataClassJsonMixin): channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - last_read_at: datetime = dc_field(metadata=dc_config(field_name="last_read_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + last_read_at: datetime = dc_field( + metadata=dc_config( + field_name="last_read_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - last_thread_message_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_thread_message_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_thread_message_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_thread_message_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Left Thread At is the time when the user left the thread - left_thread_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="left_thread_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + left_thread_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="left_thread_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Thead ID is unique string identifier of the thread - thread_id: str | None = dc_field(default=None, metadata=dc_config(field_name="thread_id")) + thread_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="thread_id") + ) # User ID is unique string identifier of the user - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class ThreadResponse(DataClassJsonMixin): # Active Participant Count - active_participant_count: int = dc_field(metadata=dc_config(field_name="active_participant_count")) + active_participant_count: int = dc_field( + metadata=dc_config(field_name="active_participant_count") + ) # Channel CID channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Created By User ID - created_by_user_id: str = dc_field(metadata=dc_config(field_name="created_by_user_id")) + created_by_user_id: str = dc_field( + metadata=dc_config(field_name="created_by_user_id") + ) # Parent Message ID - parent_message_id: str = dc_field(metadata=dc_config(field_name="parent_message_id")) + parent_message_id: str = dc_field( + metadata=dc_config(field_name="parent_message_id") + ) # Participant Count - participant_count: int = dc_field(metadata=dc_config(field_name="participant_count")) + participant_count: int = dc_field( + metadata=dc_config(field_name="participant_count") + ) # Reply Count reply_count: int = dc_field(metadata=dc_config(field_name="reply_count")) # Title title: str = dc_field(metadata=dc_config(field_name="title")) # Date/time of the last update - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Custom data for this object custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Deleted At - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Last Message At - last_message_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_message_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_message_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_message_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Thread Participants - thread_participants: 'list[ThreadParticipant] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) + thread_participants: "list[ThreadParticipant] | None" = dc_field( + default=None, metadata=dc_config(field_name="thread_participants") + ) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) # User response object - created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) + created_by: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) # Represents any chat message - parent_message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="parent_message")) + parent_message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="parent_message") + ) + @dataclass class ThreadStateResponse(DataClassJsonMixin): # Active Participant Count - active_participant_count: int = dc_field(metadata=dc_config(field_name="active_participant_count")) + active_participant_count: int = dc_field( + metadata=dc_config(field_name="active_participant_count") + ) # Channel CID channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Created By User ID - created_by_user_id: str = dc_field(metadata=dc_config(field_name="created_by_user_id")) + created_by_user_id: str = dc_field( + metadata=dc_config(field_name="created_by_user_id") + ) # Parent Message ID - parent_message_id: str = dc_field(metadata=dc_config(field_name="parent_message_id")) + parent_message_id: str = dc_field( + metadata=dc_config(field_name="parent_message_id") + ) # Participant Count - participant_count: int = dc_field(metadata=dc_config(field_name="participant_count")) + participant_count: int = dc_field( + metadata=dc_config(field_name="participant_count") + ) # Reply Count reply_count: int = dc_field(metadata=dc_config(field_name="reply_count")) # Title title: str = dc_field(metadata=dc_config(field_name="title")) # Date/time of the last update - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - latest_replies: 'list[MessageResponse]' = dc_field(metadata=dc_config(field_name="latest_replies")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + latest_replies: "list[MessageResponse]" = dc_field( + metadata=dc_config(field_name="latest_replies") + ) # Custom data for this object custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # Deleted At - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Last Message At - last_message_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_message_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - read: 'list[ReadStateResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="read")) + last_message_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_message_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + read: "list[ReadStateResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="read") + ) # Thread Participants - thread_participants: 'list[ThreadParticipant] | None' = dc_field(default=None, metadata=dc_config(field_name="thread_participants")) + thread_participants: "list[ThreadParticipant] | None" = dc_field( + default=None, metadata=dc_config(field_name="thread_participants") + ) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) # User response object - created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) - draft: 'DraftResponse | None' = dc_field(default=None, metadata=dc_config(field_name="draft")) + created_by: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) + draft: "DraftResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="draft") + ) # Represents any chat message - parent_message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="parent_message")) + parent_message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="parent_message") + ) + @dataclass class ThreadUpdatedEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - type: str = dc_field(default="thread.updated", metadata=dc_config(field_name="type")) - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + type: str = dc_field( + default="thread.updated", metadata=dc_config(field_name="type") + ) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - thread: 'ThreadResponse | None' = dc_field(default=None, metadata=dc_config(field_name="thread")) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + thread: "ThreadResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="thread") + ) + @dataclass class ThreadedCommentResponse(DataClassJsonMixin): bookmark_count: int = dc_field(metadata=dc_config(field_name="bookmark_count")) - confidence_score: float = dc_field(metadata=dc_config(field_name="confidence_score")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + confidence_score: float = dc_field( + metadata=dc_config(field_name="confidence_score") + ) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) downvote_count: int = dc_field(metadata=dc_config(field_name="downvote_count")) id: str = dc_field(metadata=dc_config(field_name="id")) object_id: str = dc_field(metadata=dc_config(field_name="object_id")) @@ -13646,65 +26985,133 @@ class ThreadedCommentResponse(DataClassJsonMixin): score: int = dc_field(metadata=dc_config(field_name="score")) # Status of the comment. One of: active, deleted, removed, hidden status: str = dc_field(metadata=dc_config(field_name="status")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) upvote_count: int = dc_field(metadata=dc_config(field_name="upvote_count")) - mentioned_users: 'list[UserResponse]' = dc_field(metadata=dc_config(field_name="mentioned_users")) - own_reactions: 'list[FeedsReactionResponse]' = dc_field(metadata=dc_config(field_name="own_reactions")) + mentioned_users: "list[UserResponse]" = dc_field( + metadata=dc_config(field_name="mentioned_users") + ) + own_reactions: "list[FeedsReactionResponse]" = dc_field( + metadata=dc_config(field_name="own_reactions") + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) - controversy_score: float | None = dc_field(default=None, metadata=dc_config(field_name="controversy_score")) - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - edited_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="edited_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + controversy_score: float | None = dc_field( + default=None, metadata=dc_config(field_name="controversy_score") + ) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + edited_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="edited_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) - latest_reactions: 'list[FeedsReactionResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="latest_reactions")) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) + latest_reactions: "list[FeedsReactionResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="latest_reactions") + ) # Slice of nested comments (may be empty). - replies: 'list[ThreadedCommentResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="replies")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - i18n: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="i18n")) + replies: "list[ThreadedCommentResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="replies") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + i18n: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="i18n") + ) # Cursor & depth information for a comment's direct replies. Mirrors Reddit's 'load more replies' semantics. - meta: 'RepliesMeta | None' = dc_field(default=None, metadata=dc_config(field_name="meta")) - moderation: 'ModerationV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="moderation")) - reaction_groups: 'dict[str, FeedsReactionGroupResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="reaction_groups")) + meta: "RepliesMeta | None" = dc_field( + default=None, metadata=dc_config(field_name="meta") + ) + moderation: "ModerationV2Response | None" = dc_field( + default=None, metadata=dc_config(field_name="moderation") + ) + reaction_groups: "dict[str, FeedsReactionGroupResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="reaction_groups") + ) + @dataclass class Thresholds(DataClassJsonMixin): - explicit: 'LabelThresholds | None' = dc_field(default=None, metadata=dc_config(field_name="explicit")) - spam: 'LabelThresholds | None' = dc_field(default=None, metadata=dc_config(field_name="spam")) - toxic: 'LabelThresholds | None' = dc_field(default=None, metadata=dc_config(field_name="toxic")) + explicit: "LabelThresholds | None" = dc_field( + default=None, metadata=dc_config(field_name="explicit") + ) + spam: "LabelThresholds | None" = dc_field( + default=None, metadata=dc_config(field_name="spam") + ) + toxic: "LabelThresholds | None" = dc_field( + default=None, metadata=dc_config(field_name="toxic") + ) + @dataclass class ThumbnailResponse(DataClassJsonMixin): image_url: str = dc_field(metadata=dc_config(field_name="image_url")) + @dataclass class ThumbnailsSettings(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) + @dataclass class ThumbnailsSettingsRequest(DataClassJsonMixin): - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + @dataclass class ThumbnailsSettingsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) + @dataclass class Time(DataClassJsonMixin): pass + @dataclass class TimeWindow(DataClassJsonMixin): _from: str = dc_field(metadata=dc_config(field_name="from")) to: str = dc_field(metadata=dc_config(field_name="to")) + @dataclass class TopBroadcast(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) hours_watched: float = dc_field(metadata=dc_config(field_name="hours_watched")) - peak_concurrent_viewers: int = dc_field(metadata=dc_config(field_name="peak_concurrent_viewers")) - poor_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="poor_pct")) + peak_concurrent_viewers: int = dc_field( + metadata=dc_config(field_name="peak_concurrent_viewers") + ) + poor_pct: float | None = dc_field( + default=None, metadata=dc_config(field_name="poor_pct") + ) + @dataclass class TrackActivityMetricsEvent(DataClassJsonMixin): @@ -13715,6 +27122,7 @@ class TrackActivityMetricsEvent(DataClassJsonMixin): # The amount to increment (positive) or decrement (negative). Defaults to 1. The absolute value counts against rate limits. delta: int | None = dc_field(default=None, metadata=dc_config(field_name="delta")) + @dataclass class TrackActivityMetricsEventResult(DataClassJsonMixin): # The activity ID from the request @@ -13726,89 +27134,135 @@ class TrackActivityMetricsEventResult(DataClassJsonMixin): # Error message if processing failed error: str | None = dc_field(default=None, metadata=dc_config(field_name="error")) + @dataclass class TrackActivityMetricsRequest(DataClassJsonMixin): # List of metric events to track (max 100 per request) - events: 'list[TrackActivityMetricsEvent]' = dc_field(metadata=dc_config(field_name="events")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + events: "list[TrackActivityMetricsEvent]" = dc_field( + metadata=dc_config(field_name="events") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class TrackActivityMetricsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Results for each event in the request, in the same order - results: 'list[TrackActivityMetricsEventResult]' = dc_field(metadata=dc_config(field_name="results")) + results: "list[TrackActivityMetricsEventResult]" = dc_field( + metadata=dc_config(field_name="results") + ) + @dataclass class TrackStatsResponse(DataClassJsonMixin): duration_seconds: int = dc_field(metadata=dc_config(field_name="duration_seconds")) track_type: str = dc_field(metadata=dc_config(field_name="track_type")) + @dataclass class TranscriptionSettings(DataClassJsonMixin): # One of: available, disabled, auto-on - closed_caption_mode: str = dc_field(metadata=dc_config(field_name="closed_caption_mode")) + closed_caption_mode: str = dc_field( + metadata=dc_config(field_name="closed_caption_mode") + ) # The language used in this call as a two letter code language: str = dc_field(metadata=dc_config(field_name="language")) mode: str = dc_field(metadata=dc_config(field_name="mode")) - speech_segment_config: 'SpeechSegmentConfig | None' = dc_field(default=None, metadata=dc_config(field_name="speech_segment_config")) - translation: 'TranslationSettings | None' = dc_field(default=None, metadata=dc_config(field_name="translation")) + speech_segment_config: "SpeechSegmentConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="speech_segment_config") + ) + translation: "TranslationSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="translation") + ) + @dataclass class TranscriptionSettingsRequest(DataClassJsonMixin): - closed_caption_mode: str | None = dc_field(default=None, metadata=dc_config(field_name="closed_caption_mode")) - language: str | None = dc_field(default=None, metadata=dc_config(field_name="language")) + closed_caption_mode: str | None = dc_field( + default=None, metadata=dc_config(field_name="closed_caption_mode") + ) + language: str | None = dc_field( + default=None, metadata=dc_config(field_name="language") + ) mode: str | None = dc_field(default=None, metadata=dc_config(field_name="mode")) - speech_segment_config: 'SpeechSegmentConfig | None' = dc_field(default=None, metadata=dc_config(field_name="speech_segment_config")) - translation: 'TranslationSettings | None' = dc_field(default=None, metadata=dc_config(field_name="translation")) + speech_segment_config: "SpeechSegmentConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="speech_segment_config") + ) + translation: "TranslationSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="translation") + ) + @dataclass class TranscriptionSettingsResponse(DataClassJsonMixin): - closed_caption_mode: str = dc_field(metadata=dc_config(field_name="closed_caption_mode")) + closed_caption_mode: str = dc_field( + metadata=dc_config(field_name="closed_caption_mode") + ) language: str = dc_field(metadata=dc_config(field_name="language")) mode: str = dc_field(metadata=dc_config(field_name="mode")) - speech_segment_config: 'SpeechSegmentConfig | None' = dc_field(default=None, metadata=dc_config(field_name="speech_segment_config")) - translation: 'TranslationSettings | None' = dc_field(default=None, metadata=dc_config(field_name="translation")) + speech_segment_config: "SpeechSegmentConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="speech_segment_config") + ) + translation: "TranslationSettings | None" = dc_field( + default=None, metadata=dc_config(field_name="translation") + ) + @dataclass class TranslateActivityRequest(DataClassJsonMixin): # ISO 639-1 language code to translate to language: str = dc_field(metadata=dc_config(field_name="language")) + @dataclass class TranslateActivityResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + @dataclass class TranslateCommentRequest(DataClassJsonMixin): # ISO 639-1 language code to translate to language: str = dc_field(metadata=dc_config(field_name="language")) + @dataclass class TranslateCommentResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) + comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) + @dataclass class TranslateMessageRequest(DataClassJsonMixin): # Language to translate message to language: str = dc_field(metadata=dc_config(field_name="language")) + @dataclass class TranslateMessageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) + @dataclass class TranslationSettings(DataClassJsonMixin): - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - languages: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="languages")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + languages: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="languages") + ) + @dataclass class TriggeredRuleResponse(DataClassJsonMixin): @@ -13817,127 +27271,205 @@ class TriggeredRuleResponse(DataClassJsonMixin): # Action types resolved from the rule's action sequence actions: list[str] = dc_field(metadata=dc_config(field_name="actions")) # Name of the moderation rule that triggered - rule_name: str | None = dc_field(default=None, metadata=dc_config(field_name="rule_name")) + rule_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="rule_name") + ) # Type of the moderation rule that triggered (content, user, or call) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) # Violation count for action sequence rules (1-based) - violation_number: int | None = dc_field(default=None, metadata=dc_config(field_name="violation_number")) - call_options: 'CallActionOptions | None' = dc_field(default=None, metadata=dc_config(field_name="call_options")) + violation_number: int | None = dc_field( + default=None, metadata=dc_config(field_name="violation_number") + ) + call_options: "CallActionOptions | None" = dc_field( + default=None, metadata=dc_config(field_name="call_options") + ) + @dataclass class TruncateChannelRequest(DataClassJsonMixin): # Permanently delete channel data (messages, reactions, etc.) - hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) + hard_delete: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hard_delete") + ) # When `message` is set disables all push notifications for it - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) # Truncate channel data up to `truncated_at`. The system message (if provided) creation time is always greater than `truncated_at` - truncated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="truncated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + truncated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="truncated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # List of member IDs to hide message history for. If empty, truncates the channel for all members - member_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="member_ids")) + member_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="member_ids") + ) # Message data for creating or updating a message - message: 'MessageRequest | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + message: "MessageRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class TruncateChannelResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + @dataclass class TypingIndicatorsResponse(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) + @dataclass class UnbanActionRequestPayload(DataClassJsonMixin): # Channel CID for channel-specific unban - channel_cid: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_cid")) + channel_cid: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_cid") + ) # Reason for the appeal decision - decision_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="decision_reason")) + decision_reason: str | None = dc_field( + default=None, metadata=dc_config(field_name="decision_reason") + ) # Also remove the future channels ban for this user - remove_future_channels_ban: bool | None = dc_field(default=None, metadata=dc_config(field_name="remove_future_channels_ban")) + remove_future_channels_ban: bool | None = dc_field( + default=None, metadata=dc_config(field_name="remove_future_channels_ban") + ) # Optional: unban user directly without review item - target_user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="target_user_id")) + target_user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="target_user_id") + ) + @dataclass class UnbanRequest(DataClassJsonMixin): # ID of the user performing the unban Deprecated: not used by the unban flow # Deprecated - unbanned_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="unbanned_by_id")) + unbanned_by_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="unbanned_by_id") + ) # User request object - unbanned_by: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="unbanned_by")) + unbanned_by: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="unbanned_by") + ) + @dataclass class UnbanResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class UnblockActionRequestPayload(DataClassJsonMixin): # Reason for the appeal decision - decision_reason: str | None = dc_field(default=None, metadata=dc_config(field_name="decision_reason")) + decision_reason: str | None = dc_field( + default=None, metadata=dc_config(field_name="decision_reason") + ) + @dataclass class UnblockUserRequest(DataClassJsonMixin): # the user to unblock user_id: str = dc_field(metadata=dc_config(field_name="user_id")) + @dataclass class UnblockUserResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class UnblockUsersRequest(DataClassJsonMixin): blocked_user_id: str = dc_field(metadata=dc_config(field_name="blocked_user_id")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UnblockUsersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class UnblockedUserEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.unblocked_user" in this case - type: str = dc_field(default="call.unblocked_user", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.unblocked_user", metadata=dc_config(field_name="type") + ) + @dataclass class UndeleteMessageRequest(DataClassJsonMixin): # ID of the user who is undeleting the message undeleted_by: str = dc_field(metadata=dc_config(field_name="undeleted_by")) + @dataclass class UndeleteMessageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) + @dataclass class UnfollowBatchRequest(DataClassJsonMixin): # List of follow relationships to remove, each with optional keep_history - follows: 'list[UnfollowPair]' = dc_field(metadata=dc_config(field_name="follows")) + follows: "list[UnfollowPair]" = dc_field(metadata=dc_config(field_name="follows")) # Whether to delete the corresponding notification activity (default: false) - delete_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="delete_notification_activity")) + delete_notification_activity: bool | None = dc_field( + default=None, metadata=dc_config(field_name="delete_notification_activity") + ) # If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) + enrich_own_fields: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_fields") + ) + @dataclass class UnfollowBatchResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of follow relationships that were removed - follows: 'list[FollowResponse]' = dc_field(metadata=dc_config(field_name="follows")) + follows: "list[FollowResponse]" = dc_field(metadata=dc_config(field_name="follows")) + @dataclass class UnfollowPair(DataClassJsonMixin): @@ -13946,36 +27478,57 @@ class UnfollowPair(DataClassJsonMixin): # Fully qualified ID of the target feed target: str = dc_field(metadata=dc_config(field_name="target")) # When true, activities from the unfollowed feed will remain in the source feed's timeline (default: false) - keep_history: bool | None = dc_field(default=None, metadata=dc_config(field_name="keep_history")) + keep_history: bool | None = dc_field( + default=None, metadata=dc_config(field_name="keep_history") + ) + @dataclass class UnfollowResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) + follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) + @dataclass class UnmuteChannelRequest(DataClassJsonMixin): # Duration of mute in milliseconds - expiration: int | None = dc_field(default=None, metadata=dc_config(field_name="expiration")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + expiration: int | None = dc_field( + default=None, metadata=dc_config(field_name="expiration") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Channel CIDs to mute (if multiple channels) - channel_cids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="channel_cids")) + channel_cids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_cids") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UnmuteRequest(DataClassJsonMixin): # User IDs to unmute target_ids: list[str] = dc_field(metadata=dc_config(field_name="target_ids")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UnmuteResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # A list of users that can't be found. Common cause for this is deleted users - non_existing_users: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="non_existing_users")) + non_existing_users: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="non_existing_users") + ) + @dataclass class UnpinActivityResponse(DataClassJsonMixin): @@ -13984,7 +27537,8 @@ class UnpinActivityResponse(DataClassJsonMixin): feed: str = dc_field(metadata=dc_config(field_name="feed")) # ID of the user who unpinned the activity user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + @dataclass class UnpinRequest(DataClassJsonMixin): @@ -13993,61 +27547,109 @@ class UnpinRequest(DataClassJsonMixin): # the user ID of the user who pinned the message user_id: str = dc_field(metadata=dc_config(field_name="user_id")) + @dataclass class UnpinResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class UnreadCountsBatchRequest(DataClassJsonMixin): user_ids: list[str] = dc_field(metadata=dc_config(field_name="user_ids")) + @dataclass class UnreadCountsBatchResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - counts_by_user: 'dict[str, UnreadCountsResponse | None]' = dc_field(metadata=dc_config(field_name="counts_by_user")) + counts_by_user: "dict[str, UnreadCountsResponse | None]" = dc_field( + metadata=dc_config(field_name="counts_by_user") + ) + @dataclass class UnreadCountsChannel(DataClassJsonMixin): channel_id: str = dc_field(metadata=dc_config(field_name="channel_id")) - last_read: datetime = dc_field(metadata=dc_config(field_name="last_read", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_read: datetime = dc_field( + metadata=dc_config( + field_name="last_read", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) unread_count: int = dc_field(metadata=dc_config(field_name="unread_count")) + @dataclass class UnreadCountsChannelType(DataClassJsonMixin): channel_count: int = dc_field(metadata=dc_config(field_name="channel_count")) channel_type: str = dc_field(metadata=dc_config(field_name="channel_type")) unread_count: int = dc_field(metadata=dc_config(field_name="unread_count")) + @dataclass class UnreadCountsResponse(DataClassJsonMixin): - total_unread_count: int = dc_field(metadata=dc_config(field_name="total_unread_count")) - total_unread_threads_count: int = dc_field(metadata=dc_config(field_name="total_unread_threads_count")) - channel_type: 'list[UnreadCountsChannelType]' = dc_field(metadata=dc_config(field_name="channel_type")) - channels: 'list[UnreadCountsChannel]' = dc_field(metadata=dc_config(field_name="channels")) - threads: 'list[UnreadCountsThread]' = dc_field(metadata=dc_config(field_name="threads")) - total_unread_count_by_team: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="total_unread_count_by_team")) + total_unread_count: int = dc_field( + metadata=dc_config(field_name="total_unread_count") + ) + total_unread_threads_count: int = dc_field( + metadata=dc_config(field_name="total_unread_threads_count") + ) + channel_type: "list[UnreadCountsChannelType]" = dc_field( + metadata=dc_config(field_name="channel_type") + ) + channels: "list[UnreadCountsChannel]" = dc_field( + metadata=dc_config(field_name="channels") + ) + threads: "list[UnreadCountsThread]" = dc_field( + metadata=dc_config(field_name="threads") + ) + total_unread_count_by_team: "dict[str, int] | None" = dc_field( + default=None, metadata=dc_config(field_name="total_unread_count_by_team") + ) + @dataclass class UnreadCountsThread(DataClassJsonMixin): - last_read: datetime = dc_field(metadata=dc_config(field_name="last_read", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - last_read_message_id: str = dc_field(metadata=dc_config(field_name="last_read_message_id")) - parent_message_id: str = dc_field(metadata=dc_config(field_name="parent_message_id")) + last_read: datetime = dc_field( + metadata=dc_config( + field_name="last_read", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + last_read_message_id: str = dc_field( + metadata=dc_config(field_name="last_read_message_id") + ) + parent_message_id: str = dc_field( + metadata=dc_config(field_name="parent_message_id") + ) unread_count: int = dc_field(metadata=dc_config(field_name="unread_count")) + @dataclass class UpdateActivitiesPartialBatchRequest(DataClassJsonMixin): # List of activity changes to apply. Each change specifies an activity ID and the fields to set/unset - changes: 'list[UpdateActivityPartialChangeRequest]' = dc_field(metadata=dc_config(field_name="changes")) + changes: "list[UpdateActivityPartialChangeRequest]" = dc_field( + metadata=dc_config(field_name="changes") + ) # If true, forces moderation to run for server-side requests. By default, server-side requests skip moderation. Client-side requests always run moderation regardless of this field. - force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) + force_moderation: bool | None = dc_field( + default=None, metadata=dc_config(field_name="force_moderation") + ) + @dataclass class UpdateActivitiesPartialBatchResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of successfully updated activities - activities: 'list[ActivityResponse]' = dc_field(metadata=dc_config(field_name="activities")) + activities: "list[ActivityResponse]" = dc_field( + metadata=dc_config(field_name="activities") + ) + @dataclass class UpdateActivityPartialChangeRequest(DataClassJsonMixin): @@ -14055,383 +27657,845 @@ class UpdateActivityPartialChangeRequest(DataClassJsonMixin): activity_id: str = dc_field(metadata=dc_config(field_name="activity_id")) # Whether to copy custom data to the notification activity (only applies when handle_mention_notifications creates notifications) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) + copy_custom_to_notification: bool | None = dc_field( + default=None, metadata=dc_config(field_name="copy_custom_to_notification") + ) # When true and 'mentioned_user_ids' is updated, automatically creates or deletes mention notifications for added/removed users. Only applicable for client-side requests (ignored for server-side requests) - handle_mention_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="handle_mention_notifications")) + handle_mention_notifications: bool | None = dc_field( + default=None, metadata=dc_config(field_name="handle_mention_notifications") + ) # List of field names to remove. Supported fields: 'custom', 'location', 'expires_at', 'filter_tags', 'interest_tags', 'attachments', 'poll_id', 'mentioned_user_ids'. Use dot-notation for nested custom fields (e.g., 'custom.field_name') - unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) + unset: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="unset") + ) # Map of field names to new values. Supported fields: 'text', 'attachments', 'custom', 'visibility', 'visibility_tag', 'restrict_replies' (values: 'everyone', 'people_i_follow', 'nobody'), 'location', 'expires_at', 'filter_tags', 'interest_tags', 'poll_id', 'feeds', 'mentioned_user_ids'. For custom fields, use dot-notation (e.g., 'custom.field_name') - set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) + set: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="set") + ) + @dataclass class UpdateActivityPartialRequest(DataClassJsonMixin): # Whether to copy custom data to the notification activity (only applies when handle_mention_notifications creates notifications) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) + copy_custom_to_notification: bool | None = dc_field( + default=None, metadata=dc_config(field_name="copy_custom_to_notification") + ) # If true, enriches the activity's current_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) + enrich_own_fields: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_fields") + ) # If true, forces moderation to run for server-side requests. By default, server-side requests skip moderation. Client-side requests always run moderation regardless of this field. - force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) + force_moderation: bool | None = dc_field( + default=None, metadata=dc_config(field_name="force_moderation") + ) # If true, creates notification activities for newly mentioned users and deletes notifications for users no longer mentioned - handle_mention_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="handle_mention_notifications")) + handle_mention_notifications: bool | None = dc_field( + default=None, metadata=dc_config(field_name="handle_mention_notifications") + ) # If true, runs activity processors on the updated activity. Processors will only run if the activity text and/or attachments are changed. Defaults to false. - run_activity_processors: bool | None = dc_field(default=None, metadata=dc_config(field_name="run_activity_processors")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + run_activity_processors: bool | None = dc_field( + default=None, metadata=dc_config(field_name="run_activity_processors") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # List of field names to remove. Supported fields: 'custom', 'visibility_tag', 'location', 'expires_at', 'filter_tags', 'interest_tags', 'attachments', 'poll_id', 'mentioned_user_ids', 'search_data'. Use dot-notation for nested custom fields (e.g., 'custom.field_name') - unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) + unset: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="unset") + ) # Map of field names to new values. Supported fields: 'text', 'attachments', 'custom', 'visibility', 'visibility_tag', 'restrict_replies' (values: 'everyone', 'people_i_follow', 'nobody'), 'location', 'expires_at', 'filter_tags', 'interest_tags', 'poll_id', 'feeds', 'mentioned_user_ids', 'search_data'. For custom fields, use dot-notation (e.g., 'custom.field_name') - set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) + set: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="set") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdateActivityPartialResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + @dataclass class UpdateActivityRequest(DataClassJsonMixin): # Whether to copy custom data to the notification activity (only applies when handle_mention_notifications creates notifications) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) + copy_custom_to_notification: bool | None = dc_field( + default=None, metadata=dc_config(field_name="copy_custom_to_notification") + ) # If true, enriches the activity's current_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) + enrich_own_fields: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_fields") + ) # Time when the activity will expire - expires_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expires_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + expires_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="expires_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # If true, forces moderation to run for server-side requests. By default, server-side requests skip moderation. Client-side requests always run moderation regardless of this field. - force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) + force_moderation: bool | None = dc_field( + default=None, metadata=dc_config(field_name="force_moderation") + ) # If true, creates notification activities for newly mentioned users and deletes notifications for users no longer mentioned - handle_mention_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="handle_mention_notifications")) + handle_mention_notifications: bool | None = dc_field( + default=None, metadata=dc_config(field_name="handle_mention_notifications") + ) # Poll ID - poll_id: str | None = dc_field(default=None, metadata=dc_config(field_name="poll_id")) + poll_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="poll_id") + ) # Controls who can add comments/replies to this activity. One of: everyone, people_i_follow, nobody - restrict_replies: str | None = dc_field(default=None, metadata=dc_config(field_name="restrict_replies")) + restrict_replies: str | None = dc_field( + default=None, metadata=dc_config(field_name="restrict_replies") + ) # If true, runs activity processors on the updated activity. Processors will only run if the activity text and/or attachments are changed. Defaults to false. - run_activity_processors: bool | None = dc_field(default=None, metadata=dc_config(field_name="run_activity_processors")) + run_activity_processors: bool | None = dc_field( + default=None, metadata=dc_config(field_name="run_activity_processors") + ) # Whether to skip URL enrichment for the activity - skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) + skip_enrich_url: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_enrich_url") + ) # The text content of the activity text: str | None = dc_field(default=None, metadata=dc_config(field_name="text")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Visibility setting for the activity - visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility")) + visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="visibility") + ) # If visibility is 'tag', this is the tag name and is required - visibility_tag: str | None = dc_field(default=None, metadata=dc_config(field_name="visibility_tag")) + visibility_tag: str | None = dc_field( + default=None, metadata=dc_config(field_name="visibility_tag") + ) # List of attachments for the activity - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) # Collections that this activity references - collection_refs: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="collection_refs")) + collection_refs: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="collection_refs") + ) # List of feeds the activity is present in - feeds: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="feeds")) + feeds: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="feeds") + ) # Tags used for filtering the activity - filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) + filter_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_tags") + ) # Tags indicating interest categories - interest_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="interest_tags")) + interest_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="interest_tags") + ) # List of user IDs mentioned in the activity - mentioned_user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_user_ids")) + mentioned_user_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_user_ids") + ) # Custom data for the activity - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + location: "Location | None" = dc_field( + default=None, metadata=dc_config(field_name="location") + ) # Additional data for search indexing - search_data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="search_data")) + search_data: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="search_data") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdateActivityResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - activity: 'ActivityResponse' = dc_field(metadata=dc_config(field_name="activity")) + activity: "ActivityResponse" = dc_field(metadata=dc_config(field_name="activity")) + @dataclass class UpdateAppRequest(DataClassJsonMixin): - async_url_enrich_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="async_url_enrich_enabled")) - auto_translation_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="auto_translation_enabled")) - before_message_send_hook_attempt_timeout_ms: int | None = dc_field(default=None, metadata=dc_config(field_name="before_message_send_hook_attempt_timeout_ms")) - before_message_send_hook_url: str | None = dc_field(default=None, metadata=dc_config(field_name="before_message_send_hook_url")) - cdn_expiration_seconds: int | None = dc_field(default=None, metadata=dc_config(field_name="cdn_expiration_seconds")) - channel_hide_members_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="channel_hide_members_only")) - chat_primary_use_case: str | None = dc_field(default=None, metadata=dc_config(field_name="chat_primary_use_case")) - custom_action_handler_url: str | None = dc_field(default=None, metadata=dc_config(field_name="custom_action_handler_url")) - disable_auth_checks: bool | None = dc_field(default=None, metadata=dc_config(field_name="disable_auth_checks")) - disable_permissions_checks: bool | None = dc_field(default=None, metadata=dc_config(field_name="disable_permissions_checks")) - enable_hook_payload_compression: bool | None = dc_field(default=None, metadata=dc_config(field_name="enable_hook_payload_compression")) - enforce_unique_usernames: str | None = dc_field(default=None, metadata=dc_config(field_name="enforce_unique_usernames")) - feed_audit_logs_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="feed_audit_logs_enabled")) - feeds_moderation_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="feeds_moderation_enabled")) - feeds_v2_region: str | None = dc_field(default=None, metadata=dc_config(field_name="feeds_v2_region")) - guest_user_creation_disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="guest_user_creation_disabled")) - image_moderation_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="image_moderation_enabled")) - max_aggregated_activities_length: int | None = dc_field(default=None, metadata=dc_config(field_name="max_aggregated_activities_length")) - member_custom_on_mentioned_users_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="member_custom_on_mentioned_users_enabled")) - member_custom_on_messages_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="member_custom_on_messages_enabled")) - member_custom_on_typing_events_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="member_custom_on_typing_events_enabled")) - migrate_permissions_to_v2: bool | None = dc_field(default=None, metadata=dc_config(field_name="migrate_permissions_to_v2")) - moderation_analytics_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="moderation_analytics_enabled")) - moderation_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="moderation_enabled")) - moderation_onboarding_complete: bool | None = dc_field(default=None, metadata=dc_config(field_name="moderation_onboarding_complete")) - moderation_s3_image_access_role_arn: str | None = dc_field(default=None, metadata=dc_config(field_name="moderation_s3_image_access_role_arn")) - moderation_webhook_url: str | None = dc_field(default=None, metadata=dc_config(field_name="moderation_webhook_url")) - multi_tenant_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="multi_tenant_enabled")) - permission_version: str | None = dc_field(default=None, metadata=dc_config(field_name="permission_version")) - reminders_interval: int | None = dc_field(default=None, metadata=dc_config(field_name="reminders_interval")) - reminders_max_members: int | None = dc_field(default=None, metadata=dc_config(field_name="reminders_max_members")) - reminders_max_per_user: int | None = dc_field(default=None, metadata=dc_config(field_name="reminders_max_per_user")) - revoke_tokens_issued_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="revoke_tokens_issued_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - sns_key: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_key")) - sns_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_secret")) - sns_topic_arn: str | None = dc_field(default=None, metadata=dc_config(field_name="sns_topic_arn")) - sqs_key: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_key")) - sqs_secret: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_secret")) - sqs_url: str | None = dc_field(default=None, metadata=dc_config(field_name="sqs_url")) - user_response_time_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="user_response_time_enabled")) - video_primary_use_case: str | None = dc_field(default=None, metadata=dc_config(field_name="video_primary_use_case")) - webhook_url: str | None = dc_field(default=None, metadata=dc_config(field_name="webhook_url")) - allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) - event_hooks: 'list[EventHook] | None' = dc_field(default=None, metadata=dc_config(field_name="event_hooks")) - image_moderation_block_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="image_moderation_block_labels")) - image_moderation_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="image_moderation_labels")) - user_search_disallowed_roles: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="user_search_disallowed_roles")) - webhook_events: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="webhook_events")) - activity_metrics_config: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_metrics_config")) - apn_config: 'APNConfig | None' = dc_field(default=None, metadata=dc_config(field_name="apn_config")) - async_moderation_config: 'AsyncModerationConfiguration | None' = dc_field(default=None, metadata=dc_config(field_name="async_moderation_config")) - datadog_info: 'DataDogInfo | None' = dc_field(default=None, metadata=dc_config(field_name="datadog_info")) - file_upload_config: 'FileUploadConfig | None' = dc_field(default=None, metadata=dc_config(field_name="file_upload_config")) - firebase_config: 'FirebaseConfig | None' = dc_field(default=None, metadata=dc_config(field_name="firebase_config")) - grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) - huawei_config: 'HuaweiConfig | None' = dc_field(default=None, metadata=dc_config(field_name="huawei_config")) - image_upload_config: 'FileUploadConfig | None' = dc_field(default=None, metadata=dc_config(field_name="image_upload_config")) - moderation_dashboard_preferences: 'ModerationDashboardPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="moderation_dashboard_preferences")) - push_config: 'PushConfig | None' = dc_field(default=None, metadata=dc_config(field_name="push_config")) - xiaomi_config: 'XiaomiConfig | None' = dc_field(default=None, metadata=dc_config(field_name="xiaomi_config")) + async_url_enrich_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="async_url_enrich_enabled") + ) + auto_translation_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="auto_translation_enabled") + ) + before_message_send_hook_attempt_timeout_ms: int | None = dc_field( + default=None, + metadata=dc_config(field_name="before_message_send_hook_attempt_timeout_ms"), + ) + before_message_send_hook_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="before_message_send_hook_url") + ) + cdn_expiration_seconds: int | None = dc_field( + default=None, metadata=dc_config(field_name="cdn_expiration_seconds") + ) + channel_hide_members_only: bool | None = dc_field( + default=None, metadata=dc_config(field_name="channel_hide_members_only") + ) + chat_primary_use_case: str | None = dc_field( + default=None, metadata=dc_config(field_name="chat_primary_use_case") + ) + custom_action_handler_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="custom_action_handler_url") + ) + disable_auth_checks: bool | None = dc_field( + default=None, metadata=dc_config(field_name="disable_auth_checks") + ) + disable_permissions_checks: bool | None = dc_field( + default=None, metadata=dc_config(field_name="disable_permissions_checks") + ) + enable_hook_payload_compression: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enable_hook_payload_compression") + ) + enforce_unique_usernames: str | None = dc_field( + default=None, metadata=dc_config(field_name="enforce_unique_usernames") + ) + feed_audit_logs_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="feed_audit_logs_enabled") + ) + feeds_moderation_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="feeds_moderation_enabled") + ) + feeds_v2_region: str | None = dc_field( + default=None, metadata=dc_config(field_name="feeds_v2_region") + ) + guest_user_creation_disabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="guest_user_creation_disabled") + ) + image_moderation_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="image_moderation_enabled") + ) + max_aggregated_activities_length: int | None = dc_field( + default=None, metadata=dc_config(field_name="max_aggregated_activities_length") + ) + member_custom_on_mentioned_users_enabled: bool | None = dc_field( + default=None, + metadata=dc_config(field_name="member_custom_on_mentioned_users_enabled"), + ) + member_custom_on_messages_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="member_custom_on_messages_enabled") + ) + member_custom_on_typing_events_enabled: bool | None = dc_field( + default=None, + metadata=dc_config(field_name="member_custom_on_typing_events_enabled"), + ) + migrate_permissions_to_v2: bool | None = dc_field( + default=None, metadata=dc_config(field_name="migrate_permissions_to_v2") + ) + moderation_analytics_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="moderation_analytics_enabled") + ) + moderation_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="moderation_enabled") + ) + moderation_onboarding_complete: bool | None = dc_field( + default=None, metadata=dc_config(field_name="moderation_onboarding_complete") + ) + moderation_s3_image_access_role_arn: str | None = dc_field( + default=None, + metadata=dc_config(field_name="moderation_s3_image_access_role_arn"), + ) + moderation_webhook_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="moderation_webhook_url") + ) + multi_tenant_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="multi_tenant_enabled") + ) + permission_version: str | None = dc_field( + default=None, metadata=dc_config(field_name="permission_version") + ) + reminders_interval: int | None = dc_field( + default=None, metadata=dc_config(field_name="reminders_interval") + ) + reminders_max_members: int | None = dc_field( + default=None, metadata=dc_config(field_name="reminders_max_members") + ) + reminders_max_per_user: int | None = dc_field( + default=None, metadata=dc_config(field_name="reminders_max_per_user") + ) + revoke_tokens_issued_before: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="revoke_tokens_issued_before", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + sns_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="sns_key") + ) + sns_secret: str | None = dc_field( + default=None, metadata=dc_config(field_name="sns_secret") + ) + sns_topic_arn: str | None = dc_field( + default=None, metadata=dc_config(field_name="sns_topic_arn") + ) + sqs_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="sqs_key") + ) + sqs_secret: str | None = dc_field( + default=None, metadata=dc_config(field_name="sqs_secret") + ) + sqs_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="sqs_url") + ) + user_response_time_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="user_response_time_enabled") + ) + video_primary_use_case: str | None = dc_field( + default=None, metadata=dc_config(field_name="video_primary_use_case") + ) + webhook_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="webhook_url") + ) + allowed_flag_reasons: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowed_flag_reasons") + ) + event_hooks: "list[EventHook] | None" = dc_field( + default=None, metadata=dc_config(field_name="event_hooks") + ) + image_moderation_block_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="image_moderation_block_labels") + ) + image_moderation_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="image_moderation_labels") + ) + user_search_disallowed_roles: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="user_search_disallowed_roles") + ) + webhook_events: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="webhook_events") + ) + activity_metrics_config: "dict[str, int] | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_metrics_config") + ) + apn_config: "APNConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="apn_config") + ) + async_moderation_config: "AsyncModerationConfiguration | None" = dc_field( + default=None, metadata=dc_config(field_name="async_moderation_config") + ) + datadog_info: "DataDogInfo | None" = dc_field( + default=None, metadata=dc_config(field_name="datadog_info") + ) + file_upload_config: "FileUploadConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="file_upload_config") + ) + firebase_config: "FirebaseConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="firebase_config") + ) + grants: "dict[str, list[str]] | None" = dc_field( + default=None, metadata=dc_config(field_name="grants") + ) + huawei_config: "HuaweiConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="huawei_config") + ) + image_upload_config: "FileUploadConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="image_upload_config") + ) + moderation_dashboard_preferences: "ModerationDashboardPreferences | None" = ( + dc_field( + default=None, + metadata=dc_config(field_name="moderation_dashboard_preferences"), + ) + ) + push_config: "PushConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="push_config") + ) + xiaomi_config: "XiaomiConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="xiaomi_config") + ) + @dataclass class UpdateBlockListRequest(DataClassJsonMixin): - is_confusable_folding_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_confusable_folding_enabled")) - is_leet_check_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_leet_check_enabled")) - is_plural_check_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_plural_check_enabled")) - is_substring_matching_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_substring_matching_enabled")) + is_confusable_folding_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_confusable_folding_enabled") + ) + is_leet_check_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_leet_check_enabled") + ) + is_plural_check_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_plural_check_enabled") + ) + is_substring_matching_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_substring_matching_enabled") + ) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # List of words to block - words: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="words")) + words: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="words") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdateBlockListResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Block list contains restricted words - blocklist: 'BlockListResponse | None' = dc_field(default=None, metadata=dc_config(field_name="blocklist")) + blocklist: "BlockListResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="blocklist") + ) + @dataclass class UpdateBookmarkFolderRequest(DataClassJsonMixin): # Name of the folder name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Custom data for the folder - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdateBookmarkFolderResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - bookmark_folder: 'BookmarkFolderResponse' = dc_field(metadata=dc_config(field_name="bookmark_folder")) + bookmark_folder: "BookmarkFolderResponse" = dc_field( + metadata=dc_config(field_name="bookmark_folder") + ) + @dataclass class UpdateBookmarkRequest(DataClassJsonMixin): # ID of the folder containing the bookmark - folder_id: str | None = dc_field(default=None, metadata=dc_config(field_name="folder_id")) + folder_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="folder_id") + ) # Move the bookmark to this folder (empty string removes the folder) - new_folder_id: str | None = dc_field(default=None, metadata=dc_config(field_name="new_folder_id")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + new_folder_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="new_folder_id") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Custom data for the bookmark - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - new_folder: 'AddFolderRequest | None' = dc_field(default=None, metadata=dc_config(field_name="new_folder")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + new_folder: "AddFolderRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="new_folder") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdateBookmarkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) + bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) + @dataclass class UpdateCallMembersRequest(DataClassJsonMixin): # List of userID to remove - remove_members: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="remove_members")) + remove_members: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="remove_members") + ) # List of members to update or insert - update_members: 'list[MemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="update_members")) + update_members: "list[MemberRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="update_members") + ) + @dataclass class UpdateCallMembersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) + @dataclass class UpdateCallRequest(DataClassJsonMixin): # the time the call is scheduled to start - starts_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="starts_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + starts_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="starts_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Custom data for this object - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - settings_override: 'CallSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="settings_override")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + settings_override: "CallSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="settings_override") + ) + @dataclass class UpdateCallResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - members: 'list[MemberResponse]' = dc_field(metadata=dc_config(field_name="members")) - own_capabilities: 'list[OwnCapability]' = dc_field(metadata=dc_config(field_name="own_capabilities")) + members: "list[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) + own_capabilities: "list[OwnCapability]" = dc_field( + metadata=dc_config(field_name="own_capabilities") + ) # Represents a call - call: 'CallResponse' = dc_field(metadata=dc_config(field_name="call")) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + @dataclass class UpdateCallTypeRequest(DataClassJsonMixin): - external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="external_storage")) - grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) - notification_settings: 'NotificationSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="notification_settings")) - settings: 'CallSettingsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="settings")) + external_storage: str | None = dc_field( + default=None, metadata=dc_config(field_name="external_storage") + ) + grants: "dict[str, list[str]] | None" = dc_field( + default=None, metadata=dc_config(field_name="grants") + ) + notification_settings: "NotificationSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="notification_settings") + ) + settings: "CallSettingsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="settings") + ) + @dataclass class UpdateCallTypeResponse(DataClassJsonMixin): # the time the call type was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) duration: str = dc_field(metadata=dc_config(field_name="duration")) # the name of the call type name: str = dc_field(metadata=dc_config(field_name="name")) # the time the call type was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # the permissions granted to each role - grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) - notification_settings: 'NotificationSettingsResponse' = dc_field(metadata=dc_config(field_name="notification_settings")) - settings: 'CallSettingsResponse' = dc_field(metadata=dc_config(field_name="settings")) + grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) + notification_settings: "NotificationSettingsResponse" = dc_field( + metadata=dc_config(field_name="notification_settings") + ) + settings: "CallSettingsResponse" = dc_field( + metadata=dc_config(field_name="settings") + ) # the external storage for the call type - external_storage: str | None = dc_field(default=None, metadata=dc_config(field_name="external_storage")) + external_storage: str | None = dc_field( + default=None, metadata=dc_config(field_name="external_storage") + ) + @dataclass class UpdateCampaignRequest(DataClassJsonMixin): sender_id: str = dc_field(metadata=dc_config(field_name="sender_id")) - message_template: 'CampaignMessageTemplate' = dc_field(metadata=dc_config(field_name="message_template")) - create_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_channels")) - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + message_template: "CampaignMessageTemplate" = dc_field( + metadata=dc_config(field_name="message_template") + ) + create_channels: bool | None = dc_field( + default=None, metadata=dc_config(field_name="create_channels") + ) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - sender_mode: str | None = dc_field(default=None, metadata=dc_config(field_name="sender_mode")) - sender_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="sender_visibility")) - show_channels: bool | None = dc_field(default=None, metadata=dc_config(field_name="show_channels")) - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) - skip_webhook: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_webhook")) - segment_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="segment_ids")) - user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="user_ids")) - channel_template: 'CampaignChannelTemplate | None' = dc_field(default=None, metadata=dc_config(field_name="channel_template")) + sender_mode: str | None = dc_field( + default=None, metadata=dc_config(field_name="sender_mode") + ) + sender_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="sender_visibility") + ) + show_channels: bool | None = dc_field( + default=None, metadata=dc_config(field_name="show_channels") + ) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) + skip_webhook: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_webhook") + ) + segment_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="segment_ids") + ) + user_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="user_ids") + ) + channel_template: "CampaignChannelTemplate | None" = dc_field( + default=None, metadata=dc_config(field_name="channel_template") + ) + @dataclass class UpdateChannelPartialRequest(DataClassJsonMixin): - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) - set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + unset: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="unset") + ) + set: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="set") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdateChannelPartialResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of updated members - members: 'list[ChannelMemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + members: "list[ChannelMemberResponse]" = dc_field( + metadata=dc_config(field_name="members") + ) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) + @dataclass class UpdateChannelRequest(DataClassJsonMixin): # Set to `true` to accept the invite - accept_invite: bool | None = dc_field(default=None, metadata=dc_config(field_name="accept_invite")) + accept_invite: bool | None = dc_field( + default=None, metadata=dc_config(field_name="accept_invite") + ) # Sets cool down period for the channel in seconds - cooldown: int | None = dc_field(default=None, metadata=dc_config(field_name="cooldown")) + cooldown: int | None = dc_field( + default=None, metadata=dc_config(field_name="cooldown") + ) # Set to `true` to hide channel's history when adding new members - hide_history: bool | None = dc_field(default=None, metadata=dc_config(field_name="hide_history")) + hide_history: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hide_history") + ) # If set, hides channel's history before this time when adding new members. Takes precedence over `hide_history` when both are provided. Must be in RFC3339 format (e.g., "2024-01-01T10:00:00Z") and in the past. - hide_history_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="hide_history_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + hide_history_before: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="hide_history_before", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Set to `true` to reject the invite - reject_invite: bool | None = dc_field(default=None, metadata=dc_config(field_name="reject_invite")) + reject_invite: bool | None = dc_field( + default=None, metadata=dc_config(field_name="reject_invite") + ) # When `message` is set disables all push notifications for it - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # List of filter tags to add to the channel - add_filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="add_filter_tags")) + add_filter_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="add_filter_tags") + ) # List of user IDs to add to the channel - add_members: 'list[ChannelMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="add_members")) + add_members: "list[ChannelMemberRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="add_members") + ) # List of user IDs to make channel moderators - add_moderators: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="add_moderators")) + add_moderators: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="add_moderators") + ) # List of channel member role assignments. If any specified user is not part of the channel, the request will fail - assign_roles: 'list[ChannelMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="assign_roles")) + assign_roles: "list[ChannelMemberRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="assign_roles") + ) # List of user IDs to take away moderators status from - demote_moderators: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="demote_moderators")) + demote_moderators: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="demote_moderators") + ) # List of user IDs to invite to the channel - invites: 'list[ChannelMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="invites")) + invites: "list[ChannelMemberRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="invites") + ) # List of filter tags to remove from the channel - remove_filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="remove_filter_tags")) + remove_filter_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="remove_filter_tags") + ) # List of user IDs to remove from the channel - remove_members: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="remove_members")) - data: 'ChannelInputRequest | None' = dc_field(default=None, metadata=dc_config(field_name="data")) + remove_members: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="remove_members") + ) + data: "ChannelInputRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="data") + ) # Message data for creating or updating a message - message: 'MessageRequest | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + message: "MessageRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdateChannelResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of channel members - members: 'list[ChannelMemberResponse]' = dc_field(metadata=dc_config(field_name="members")) + members: "list[ChannelMemberResponse]" = dc_field( + metadata=dc_config(field_name="members") + ) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + @dataclass class UpdateChannelTypeRequest(DataClassJsonMixin): automod: str = dc_field(metadata=dc_config(field_name="automod")) automod_behavior: str = dc_field(metadata=dc_config(field_name="automod_behavior")) - max_message_length: int = dc_field(metadata=dc_config(field_name="max_message_length")) - blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) - blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) - connect_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="connect_events")) - count_messages: bool | None = dc_field(default=None, metadata=dc_config(field_name="count_messages")) - custom_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="custom_events")) - delivery_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="delivery_events")) - mark_messages_pending: bool | None = dc_field(default=None, metadata=dc_config(field_name="mark_messages_pending")) - message_retention: str | None = dc_field(default=None, metadata=dc_config(field_name="message_retention")) + max_message_length: int = dc_field( + metadata=dc_config(field_name="max_message_length") + ) + blocklist: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist") + ) + blocklist_behavior: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist_behavior") + ) + connect_events: bool | None = dc_field( + default=None, metadata=dc_config(field_name="connect_events") + ) + count_messages: bool | None = dc_field( + default=None, metadata=dc_config(field_name="count_messages") + ) + custom_events: bool | None = dc_field( + default=None, metadata=dc_config(field_name="custom_events") + ) + delivery_events: bool | None = dc_field( + default=None, metadata=dc_config(field_name="delivery_events") + ) + mark_messages_pending: bool | None = dc_field( + default=None, metadata=dc_config(field_name="mark_messages_pending") + ) + message_retention: str | None = dc_field( + default=None, metadata=dc_config(field_name="message_retention") + ) mutes: bool | None = dc_field(default=None, metadata=dc_config(field_name="mutes")) - partition_size: int | None = dc_field(default=None, metadata=dc_config(field_name="partition_size")) - partition_ttl: str | None = dc_field(default=None, metadata=dc_config(field_name="partition_ttl")) + partition_size: int | None = dc_field( + default=None, metadata=dc_config(field_name="partition_size") + ) + partition_ttl: str | None = dc_field( + default=None, metadata=dc_config(field_name="partition_ttl") + ) polls: bool | None = dc_field(default=None, metadata=dc_config(field_name="polls")) - push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) - push_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="push_notifications")) - quotes: bool | None = dc_field(default=None, metadata=dc_config(field_name="quotes")) - reactions: bool | None = dc_field(default=None, metadata=dc_config(field_name="reactions")) - read_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="read_events")) - reminders: bool | None = dc_field(default=None, metadata=dc_config(field_name="reminders")) - replies: bool | None = dc_field(default=None, metadata=dc_config(field_name="replies")) - search: bool | None = dc_field(default=None, metadata=dc_config(field_name="search")) - shared_locations: bool | None = dc_field(default=None, metadata=dc_config(field_name="shared_locations")) - skip_last_msg_update_for_system_msgs: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs")) - typing_events: bool | None = dc_field(default=None, metadata=dc_config(field_name="typing_events")) - uploads: bool | None = dc_field(default=None, metadata=dc_config(field_name="uploads")) - url_enrichment: bool | None = dc_field(default=None, metadata=dc_config(field_name="url_enrichment")) - user_message_reminders: bool | None = dc_field(default=None, metadata=dc_config(field_name="user_message_reminders")) - allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) - blocklists: 'list[BlockListOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="blocklists")) + push_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_level") + ) + push_notifications: bool | None = dc_field( + default=None, metadata=dc_config(field_name="push_notifications") + ) + quotes: bool | None = dc_field( + default=None, metadata=dc_config(field_name="quotes") + ) + reactions: bool | None = dc_field( + default=None, metadata=dc_config(field_name="reactions") + ) + read_events: bool | None = dc_field( + default=None, metadata=dc_config(field_name="read_events") + ) + reminders: bool | None = dc_field( + default=None, metadata=dc_config(field_name="reminders") + ) + replies: bool | None = dc_field( + default=None, metadata=dc_config(field_name="replies") + ) + search: bool | None = dc_field( + default=None, metadata=dc_config(field_name="search") + ) + shared_locations: bool | None = dc_field( + default=None, metadata=dc_config(field_name="shared_locations") + ) + skip_last_msg_update_for_system_msgs: bool | None = dc_field( + default=None, + metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs"), + ) + typing_events: bool | None = dc_field( + default=None, metadata=dc_config(field_name="typing_events") + ) + uploads: bool | None = dc_field( + default=None, metadata=dc_config(field_name="uploads") + ) + url_enrichment: bool | None = dc_field( + default=None, metadata=dc_config(field_name="url_enrichment") + ) + user_message_reminders: bool | None = dc_field( + default=None, metadata=dc_config(field_name="user_message_reminders") + ) + allowed_flag_reasons: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowed_flag_reasons") + ) + blocklists: "list[BlockListOptions] | None" = dc_field( + default=None, metadata=dc_config(field_name="blocklists") + ) # List of commands that channel supports - commands: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="commands")) - permissions: 'list[PolicyRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="permissions")) + commands: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="commands") + ) + permissions: "list[PolicyRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="permissions") + ) # Sets thresholds for AI moderation - automod_thresholds: 'Thresholds | None' = dc_field(default=None, metadata=dc_config(field_name="automod_thresholds")) - chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) - grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) + automod_thresholds: "Thresholds | None" = dc_field( + default=None, metadata=dc_config(field_name="automod_thresholds") + ) + chat_preferences: "ChatPreferences | None" = dc_field( + default=None, metadata=dc_config(field_name="chat_preferences") + ) + grants: "dict[str, list[str]] | None" = dc_field( + default=None, metadata=dc_config(field_name="grants") + ) + @dataclass class UpdateChannelTypeResponse(DataClassJsonMixin): @@ -14439,17 +28503,32 @@ class UpdateChannelTypeResponse(DataClassJsonMixin): automod_behavior: str = dc_field(metadata=dc_config(field_name="automod_behavior")) connect_events: bool = dc_field(metadata=dc_config(field_name="connect_events")) count_messages: bool = dc_field(metadata=dc_config(field_name="count_messages")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom_events: bool = dc_field(metadata=dc_config(field_name="custom_events")) delivery_events: bool = dc_field(metadata=dc_config(field_name="delivery_events")) duration: str = dc_field(metadata=dc_config(field_name="duration")) - mark_messages_pending: bool = dc_field(metadata=dc_config(field_name="mark_messages_pending")) - max_message_length: int = dc_field(metadata=dc_config(field_name="max_message_length")) - message_retention: str = dc_field(metadata=dc_config(field_name="message_retention")) + mark_messages_pending: bool = dc_field( + metadata=dc_config(field_name="mark_messages_pending") + ) + max_message_length: int = dc_field( + metadata=dc_config(field_name="max_message_length") + ) + message_retention: str = dc_field( + metadata=dc_config(field_name="message_retention") + ) mutes: bool = dc_field(metadata=dc_config(field_name="mutes")) name: str = dc_field(metadata=dc_config(field_name="name")) polls: bool = dc_field(metadata=dc_config(field_name="polls")) - push_notifications: bool = dc_field(metadata=dc_config(field_name="push_notifications")) + push_notifications: bool = dc_field( + metadata=dc_config(field_name="push_notifications") + ) quotes: bool = dc_field(metadata=dc_config(field_name="quotes")) reactions: bool = dc_field(metadata=dc_config(field_name="reactions")) read_events: bool = dc_field(metadata=dc_config(field_name="read_events")) @@ -14457,25 +28536,57 @@ class UpdateChannelTypeResponse(DataClassJsonMixin): replies: bool = dc_field(metadata=dc_config(field_name="replies")) search: bool = dc_field(metadata=dc_config(field_name="search")) shared_locations: bool = dc_field(metadata=dc_config(field_name="shared_locations")) - skip_last_msg_update_for_system_msgs: bool = dc_field(metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs")) + skip_last_msg_update_for_system_msgs: bool = dc_field( + metadata=dc_config(field_name="skip_last_msg_update_for_system_msgs") + ) typing_events: bool = dc_field(metadata=dc_config(field_name="typing_events")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) uploads: bool = dc_field(metadata=dc_config(field_name="uploads")) url_enrichment: bool = dc_field(metadata=dc_config(field_name="url_enrichment")) - user_message_reminders: bool = dc_field(metadata=dc_config(field_name="user_message_reminders")) + user_message_reminders: bool = dc_field( + metadata=dc_config(field_name="user_message_reminders") + ) commands: list[str] = dc_field(metadata=dc_config(field_name="commands")) - permissions: 'list[PolicyRequest]' = dc_field(metadata=dc_config(field_name="permissions")) - grants: 'dict[str, list[str]]' = dc_field(metadata=dc_config(field_name="grants")) - blocklist: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist")) - blocklist_behavior: str | None = dc_field(default=None, metadata=dc_config(field_name="blocklist_behavior")) - partition_size: int | None = dc_field(default=None, metadata=dc_config(field_name="partition_size")) - partition_ttl: str | None = dc_field(default=None, metadata=dc_config(field_name="partition_ttl")) - push_level: str | None = dc_field(default=None, metadata=dc_config(field_name="push_level")) - allowed_flag_reasons: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_flag_reasons")) - blocklists: 'list[BlockListOptions] | None' = dc_field(default=None, metadata=dc_config(field_name="blocklists")) + permissions: "list[PolicyRequest]" = dc_field( + metadata=dc_config(field_name="permissions") + ) + grants: "dict[str, list[str]]" = dc_field(metadata=dc_config(field_name="grants")) + blocklist: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist") + ) + blocklist_behavior: str | None = dc_field( + default=None, metadata=dc_config(field_name="blocklist_behavior") + ) + partition_size: int | None = dc_field( + default=None, metadata=dc_config(field_name="partition_size") + ) + partition_ttl: str | None = dc_field( + default=None, metadata=dc_config(field_name="partition_ttl") + ) + push_level: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_level") + ) + allowed_flag_reasons: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowed_flag_reasons") + ) + blocklists: "list[BlockListOptions] | None" = dc_field( + default=None, metadata=dc_config(field_name="blocklists") + ) # Sets thresholds for AI moderation - automod_thresholds: 'Thresholds | None' = dc_field(default=None, metadata=dc_config(field_name="automod_thresholds")) - chat_preferences: 'ChatPreferences | None' = dc_field(default=None, metadata=dc_config(field_name="chat_preferences")) + automod_thresholds: "Thresholds | None" = dc_field( + default=None, metadata=dc_config(field_name="automod_thresholds") + ) + chat_preferences: "ChatPreferences | None" = dc_field( + default=None, metadata=dc_config(field_name="chat_preferences") + ) + @dataclass class UpdateCollectionRequest(DataClassJsonMixin): @@ -14486,19 +28597,30 @@ class UpdateCollectionRequest(DataClassJsonMixin): # Custom data for the collection (required, must contain at least one key) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + @dataclass class UpdateCollectionsRequest(DataClassJsonMixin): # List of collections to update (only custom data is updatable) - collections: 'list[UpdateCollectionRequest]' = dc_field(metadata=dc_config(field_name="collections")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + collections: "list[UpdateCollectionRequest]" = dc_field( + metadata=dc_config(field_name="collections") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdateCollectionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of updated collections - collections: 'list[CollectionResponse]' = dc_field(metadata=dc_config(field_name="collections")) + collections: "list[CollectionResponse]" = dc_field( + metadata=dc_config(field_name="collections") + ) + @dataclass class UpdateCommandRequest(DataClassJsonMixin): @@ -14509,84 +28631,146 @@ class UpdateCommandRequest(DataClassJsonMixin): # Set name used for grouping commands set: str | None = dc_field(default=None, metadata=dc_config(field_name="set")) + @dataclass class UpdateCommandResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents custom chat command - command: 'Command | None' = dc_field(default=None, metadata=dc_config(field_name="command")) + command: "Command | None" = dc_field( + default=None, metadata=dc_config(field_name="command") + ) + @dataclass class UpdateCommentBookmarkRequest(DataClassJsonMixin): # ID of the folder containing the bookmark - folder_id: str | None = dc_field(default=None, metadata=dc_config(field_name="folder_id")) + folder_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="folder_id") + ) # Move the bookmark to this folder (empty string removes the folder) - new_folder_id: str | None = dc_field(default=None, metadata=dc_config(field_name="new_folder_id")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + new_folder_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="new_folder_id") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Custom data for the bookmark - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - new_folder: 'AddFolderRequest | None' = dc_field(default=None, metadata=dc_config(field_name="new_folder")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + new_folder: "AddFolderRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="new_folder") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdateCommentBookmarkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - bookmark: 'BookmarkResponse' = dc_field(metadata=dc_config(field_name="bookmark")) + bookmark: "BookmarkResponse" = dc_field(metadata=dc_config(field_name="bookmark")) + @dataclass class UpdateCommentPartialRequest(DataClassJsonMixin): # Whether to copy custom data to notification activities Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) + copy_custom_to_notification: bool | None = dc_field( + default=None, metadata=dc_config(field_name="copy_custom_to_notification") + ) # If true, forces moderation to run for server-side requests. By default, server-side requests skip moderation. Client-side requests always run moderation regardless of this field. - force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) + force_moderation: bool | None = dc_field( + default=None, metadata=dc_config(field_name="force_moderation") + ) # Whether to handle mention notification changes - handle_mention_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="handle_mention_notifications")) + handle_mention_notifications: bool | None = dc_field( + default=None, metadata=dc_config(field_name="handle_mention_notifications") + ) # Whether to skip URL enrichment - skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) + skip_enrich_url: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_enrich_url") + ) # Whether to skip push notifications - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # List of field names to remove. Supported fields: 'custom', 'attachments', 'mentioned_user_ids', 'status'. Use dot-notation for nested custom fields (e.g., 'custom.field_name') - unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) + unset: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="unset") + ) # Map of field names to new values. Supported fields: 'text', 'attachments', 'custom', 'mentioned_user_ids', 'status'. Use dot-notation for nested custom fields (e.g., 'custom.field_name') - set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) + set: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="set") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdateCommentPartialResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) + comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) + @dataclass class UpdateCommentRequest(DataClassJsonMixin): # Updated text content of the comment - comment: str | None = dc_field(default=None, metadata=dc_config(field_name="comment")) + comment: str | None = dc_field( + default=None, metadata=dc_config(field_name="comment") + ) # Whether to copy custom data to the notification activity (only applies when handle_mention_notifications creates notifications) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) + copy_custom_to_notification: bool | None = dc_field( + default=None, metadata=dc_config(field_name="copy_custom_to_notification") + ) # If true, forces moderation to run for server-side requests. By default, server-side requests skip moderation. Client-side requests always run moderation regardless of this field. - force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) + force_moderation: bool | None = dc_field( + default=None, metadata=dc_config(field_name="force_moderation") + ) # If true, creates notification activities for newly mentioned users and deletes notifications for users no longer mentioned - handle_mention_notifications: bool | None = dc_field(default=None, metadata=dc_config(field_name="handle_mention_notifications")) + handle_mention_notifications: bool | None = dc_field( + default=None, metadata=dc_config(field_name="handle_mention_notifications") + ) # Whether to skip URL enrichment for this comment - skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + skip_enrich_url: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_enrich_url") + ) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Updated media attachments for the comment. Providing this field will replace all existing attachments. - attachments: 'list[Attachment] | None' = dc_field(default=None, metadata=dc_config(field_name="attachments")) + attachments: "list[Attachment] | None" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) # List of user IDs mentioned in the comment - mentioned_user_ids: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="mentioned_user_ids")) + mentioned_user_ids: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="mentioned_user_ids") + ) # Updated custom data for the comment - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdateCommentResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - comment: 'CommentResponse' = dc_field(metadata=dc_config(field_name="comment")) + comment: "CommentResponse" = dc_field(metadata=dc_config(field_name="comment")) + @dataclass class UpdateExternalStorageRequest(DataClassJsonMixin): @@ -14594,13 +28778,20 @@ class UpdateExternalStorageRequest(DataClassJsonMixin): bucket: str = dc_field(metadata=dc_config(field_name="bucket")) # The type of storage to use storage_type: str = dc_field(metadata=dc_config(field_name="storage_type")) - gcs_credentials: str | None = dc_field(default=None, metadata=dc_config(field_name="gcs_credentials")) + gcs_credentials: str | None = dc_field( + default=None, metadata=dc_config(field_name="gcs_credentials") + ) # The path prefix to use for storing files path: str | None = dc_field(default=None, metadata=dc_config(field_name="path")) # Config for creating Amazon S3 storage. - aws_s3: 'S3Request | None' = dc_field(default=None, metadata=dc_config(field_name="aws_s3")) + aws_s3: "S3Request | None" = dc_field( + default=None, metadata=dc_config(field_name="aws_s3") + ) # Config for creating Azure Blob Storage storage - azure_blob: 'AzureRequest | None' = dc_field(default=None, metadata=dc_config(field_name="azure_blob")) + azure_blob: "AzureRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="azure_blob") + ) + @dataclass class UpdateExternalStorageResponse(DataClassJsonMixin): @@ -14611,30 +28802,59 @@ class UpdateExternalStorageResponse(DataClassJsonMixin): path: str = dc_field(metadata=dc_config(field_name="path")) type: str = dc_field(metadata=dc_config(field_name="type")) + @dataclass class UpdateFeedGroupRequest(DataClassJsonMixin): # Role new followers of feeds in this group are given. Either a built-in (feed_follower, feed_member_viewer) or any role your app has defined. Empty means feed_follower. Applied when the follow is accepted, so a follow that starts pending picks it up on approval - default_follower_role: str | None = dc_field(default=None, metadata=dc_config(field_name="default_follower_role")) + default_follower_role: str | None = dc_field( + default=None, metadata=dc_config(field_name="default_follower_role") + ) # Default visibility for the feed group. One of: public, visible, followers, members, private - default_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="default_visibility")) + default_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="default_visibility") + ) # Configuration for activity processors - activity_processors: 'list[ActivityProcessorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_processors")) + activity_processors: "list[ActivityProcessorConfig] | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_processors") + ) # Configuration for activity selectors - activity_selectors: 'list[ActivitySelectorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_selectors")) - activity_filter: 'ActivityFilterConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_filter")) - activity_processing: 'ActivityProcessingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="activity_processing")) - aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) + activity_selectors: "list[ActivitySelectorConfig] | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_selectors") + ) + activity_filter: "ActivityFilterConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_filter") + ) + activity_processing: "ActivityProcessingConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_processing") + ) + aggregation: "AggregationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="aggregation") + ) # Custom data for the feed group - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - notification: 'NotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="notification")) - push_notification: 'PushNotificationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="push_notification")) - ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) - stories: 'StoriesConfig | None' = dc_field(default=None, metadata=dc_config(field_name="stories")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + notification: "NotificationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="notification") + ) + push_notification: "PushNotificationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="push_notification") + ) + ranking: "RankingConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="ranking") + ) + stories: "StoriesConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="stories") + ) + @dataclass class UpdateFeedGroupResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_group: 'FeedGroupResponse' = dc_field(metadata=dc_config(field_name="feed_group")) + feed_group: "FeedGroupResponse" = dc_field( + metadata=dc_config(field_name="feed_group") + ) + @dataclass class UpdateFeedMembersRequest(DataClassJsonMixin): @@ -14644,60 +28864,96 @@ class UpdateFeedMembersRequest(DataClassJsonMixin): next: str | None = dc_field(default=None, metadata=dc_config(field_name="next")) prev: str | None = dc_field(default=None, metadata=dc_config(field_name="prev")) # List of members to upsert, remove, or set - members: 'list[FeedMemberRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) + members: "list[FeedMemberRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="members") + ) + @dataclass class UpdateFeedMembersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - added: 'list[FeedMemberResponse]' = dc_field(metadata=dc_config(field_name="added")) + added: "list[FeedMemberResponse]" = dc_field(metadata=dc_config(field_name="added")) removed_ids: list[str] = dc_field(metadata=dc_config(field_name="removed_ids")) - updated: 'list[FeedMemberResponse]' = dc_field(metadata=dc_config(field_name="updated")) + updated: "list[FeedMemberResponse]" = dc_field( + metadata=dc_config(field_name="updated") + ) + @dataclass class UpdateFeedRequest(DataClassJsonMixin): # If true, removes the geographic location from the feed - clear_location: bool | None = dc_field(default=None, metadata=dc_config(field_name="clear_location")) + clear_location: bool | None = dc_field( + default=None, metadata=dc_config(field_name="clear_location") + ) # ID of the new feed creator (owner) - created_by_id: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by_id")) + created_by_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="created_by_id") + ) # Description of the feed - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) # If true, enriches the feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) + enrich_own_fields: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_fields") + ) # Name of the feed name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # Tags used for filtering feeds - filter_tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="filter_tags")) + filter_tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="filter_tags") + ) # Custom data for the feed - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - location: 'Location | None' = dc_field(default=None, metadata=dc_config(field_name="location")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + location: "Location | None" = dc_field( + default=None, metadata=dc_config(field_name="location") + ) + @dataclass class UpdateFeedResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed: 'FeedResponse' = dc_field(metadata=dc_config(field_name="feed")) + feed: "FeedResponse" = dc_field(metadata=dc_config(field_name="feed")) + @dataclass class UpdateFeedViewRequest(DataClassJsonMixin): # Updated configuration for selecting activities - activity_selectors: 'list[ActivitySelectorConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="activity_selectors")) - aggregation: 'AggregationConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aggregation")) - ranking: 'RankingConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ranking")) + activity_selectors: "list[ActivitySelectorConfig] | None" = dc_field( + default=None, metadata=dc_config(field_name="activity_selectors") + ) + aggregation: "AggregationConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="aggregation") + ) + ranking: "RankingConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="ranking") + ) + @dataclass class UpdateFeedViewResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_view: 'FeedViewResponse' = dc_field(metadata=dc_config(field_name="feed_view")) + feed_view: "FeedViewResponse" = dc_field(metadata=dc_config(field_name="feed_view")) + @dataclass class UpdateFeedVisibilityRequest(DataClassJsonMixin): # Updated permission grants for each role - grants: 'dict[str, list[str]] | None' = dc_field(default=None, metadata=dc_config(field_name="grants")) + grants: "dict[str, list[str]] | None" = dc_field( + default=None, metadata=dc_config(field_name="grants") + ) + @dataclass class UpdateFeedVisibilityResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - feed_visibility: 'FeedVisibilityResponse' = dc_field(metadata=dc_config(field_name="feed_visibility")) + feed_visibility: "FeedVisibilityResponse" = dc_field( + metadata=dc_config(field_name="feed_visibility") + ) + @dataclass class UpdateFollowRequest(DataClassJsonMixin): @@ -14706,109 +28962,188 @@ class UpdateFollowRequest(DataClassJsonMixin): # Fully qualified ID of the target feed target: str = dc_field(metadata=dc_config(field_name="target")) # Maximum number of historical activities to copy from the target feed when the follow is first materialized. Not set = unlimited (default). 0 = copy nothing. Range: 0-1000. - activity_copy_limit: int | None = dc_field(default=None, metadata=dc_config(field_name="activity_copy_limit")) + activity_copy_limit: int | None = dc_field( + default=None, metadata=dc_config(field_name="activity_copy_limit") + ) # Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead # Deprecated - copy_custom_to_notification: bool | None = dc_field(default=None, metadata=dc_config(field_name="copy_custom_to_notification")) + copy_custom_to_notification: bool | None = dc_field( + default=None, metadata=dc_config(field_name="copy_custom_to_notification") + ) # Whether to create a notification activity for this follow - create_notification_activity: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_notification_activity")) + create_notification_activity: bool | None = dc_field( + default=None, metadata=dc_config(field_name="create_notification_activity") + ) # If true, auto-creates users referenced by the source and target FIDs when they don't already exist. Server-side only. Defaults to false. Use directly on single follow endpoints (Follow, GetOrCreateFollow). On batch endpoints (FollowBatch, GetOrCreateFollows), use the top-level create_users field; per-item follows[i].create_users is rejected. - create_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_users")) + create_users: bool | None = dc_field( + default=None, metadata=dc_config(field_name="create_users") + ) # If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) + enrich_own_fields: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_fields") + ) # Optional role for the follower in the follow relationship. Server-side only. Either a built-in ('feed_follower' (the default) or 'feed_member_viewer') or any role your app has defined; grants are not inspected. - follower_role: str | None = dc_field(default=None, metadata=dc_config(field_name="follower_role")) + follower_role: str | None = dc_field( + default=None, metadata=dc_config(field_name="follower_role") + ) # Push preference for the follow relationship - push_preference: str | None = dc_field(default=None, metadata=dc_config(field_name="push_preference")) + push_preference: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_preference") + ) # Whether to skip push for this follow - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) # Status of the follow relationship. One of: accepted, pending, rejected status: str | None = dc_field(default=None, metadata=dc_config(field_name="status")) # Custom data for the follow relationship - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class UpdateFollowResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - follow: 'FollowResponse' = dc_field(metadata=dc_config(field_name="follow")) + follow: "FollowResponse" = dc_field(metadata=dc_config(field_name="follow")) + @dataclass class UpdateLiveLocationRequest(DataClassJsonMixin): # Live location ID message_id: str = dc_field(metadata=dc_config(field_name="message_id")) # Time when the live location expires - end_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="end_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + end_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="end_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Latitude coordinate - latitude: float | None = dc_field(default=None, metadata=dc_config(field_name="latitude")) + latitude: float | None = dc_field( + default=None, metadata=dc_config(field_name="latitude") + ) # Longitude coordinate - longitude: float | None = dc_field(default=None, metadata=dc_config(field_name="longitude")) + longitude: float | None = dc_field( + default=None, metadata=dc_config(field_name="longitude") + ) + @dataclass class UpdateMemberPartialRequest(DataClassJsonMixin): - unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) - set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) + unset: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="unset") + ) + set: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="set") + ) + @dataclass class UpdateMemberPartialResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - channel_member: 'ChannelMemberResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel_member")) + channel_member: "ChannelMemberResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel_member") + ) + @dataclass class UpdateMembershipLevelRequest(DataClassJsonMixin): # Optional description of the membership level - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) # Display name for the membership level name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # Priority level (higher numbers = higher priority) - priority: int | None = dc_field(default=None, metadata=dc_config(field_name="priority")) + priority: int | None = dc_field( + default=None, metadata=dc_config(field_name="priority") + ) # Activity tags this membership level gives access to - tags: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="tags")) + tags: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="tags") + ) # Custom data for the membership level - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class UpdateMembershipLevelResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - membership_level: 'MembershipLevelResponse' = dc_field(metadata=dc_config(field_name="membership_level")) + membership_level: "MembershipLevelResponse" = dc_field( + metadata=dc_config(field_name="membership_level") + ) + @dataclass class UpdateMessagePartialRequest(DataClassJsonMixin): # Skip enriching the URL in the message - skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + skip_enrich_url: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_enrich_url") + ) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Array of field names to unset - unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) + unset: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="unset") + ) # Sets new field values - set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) + set: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="set") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdateMessagePartialResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) # Pending message metadata - pending_message_metadata: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="pending_message_metadata")) + pending_message_metadata: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="pending_message_metadata") + ) + @dataclass class UpdateMessageRequest(DataClassJsonMixin): # Message data for creating or updating a message - message: 'MessageRequest' = dc_field(metadata=dc_config(field_name="message")) + message: "MessageRequest" = dc_field(metadata=dc_config(field_name="message")) # Skip enrich URL - skip_enrich_url: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_enrich_url")) - skip_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="skip_push")) + skip_enrich_url: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_enrich_url") + ) + skip_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="skip_push") + ) + @dataclass class UpdateMessageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # Represents any chat message - message: 'MessageResponse' = dc_field(metadata=dc_config(field_name="message")) - pending_message_metadata: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="pending_message_metadata")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) + pending_message_metadata: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="pending_message_metadata") + ) + @dataclass class UpdatePollOptionRequest(DataClassJsonMixin): @@ -14816,21 +29151,37 @@ class UpdatePollOptionRequest(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) # Option text text: str = dc_field(metadata=dc_config(field_name="text")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Custom data for this object - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdatePollPartialRequest(DataClassJsonMixin): - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Array of field names to unset - unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) + unset: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="unset") + ) # Sets new field values - set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) + set: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="set") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdatePollRequest(DataClassJsonMixin): @@ -14839,26 +29190,49 @@ class UpdatePollRequest(DataClassJsonMixin): # Poll name name: str = dc_field(metadata=dc_config(field_name="name")) # Allow answers - allow_answers: bool | None = dc_field(default=None, metadata=dc_config(field_name="allow_answers")) + allow_answers: bool | None = dc_field( + default=None, metadata=dc_config(field_name="allow_answers") + ) # Allow user suggested options - allow_user_suggested_options: bool | None = dc_field(default=None, metadata=dc_config(field_name="allow_user_suggested_options")) + allow_user_suggested_options: bool | None = dc_field( + default=None, metadata=dc_config(field_name="allow_user_suggested_options") + ) # Poll description - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) # Enforce unique vote - enforce_unique_vote: bool | None = dc_field(default=None, metadata=dc_config(field_name="enforce_unique_vote")) + enforce_unique_vote: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enforce_unique_vote") + ) # Is closed - is_closed: bool | None = dc_field(default=None, metadata=dc_config(field_name="is_closed")) + is_closed: bool | None = dc_field( + default=None, metadata=dc_config(field_name="is_closed") + ) # Max votes allowed - max_votes_allowed: int | None = dc_field(default=None, metadata=dc_config(field_name="max_votes_allowed")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + max_votes_allowed: int | None = dc_field( + default=None, metadata=dc_config(field_name="max_votes_allowed") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Voting visibility - voting_visibility: str | None = dc_field(default=None, metadata=dc_config(field_name="voting_visibility")) + voting_visibility: str | None = dc_field( + default=None, metadata=dc_config(field_name="voting_visibility") + ) # Poll options - options: 'list[PollOptionRequest] | None' = dc_field(default=None, metadata=dc_config(field_name="options")) + options: "list[PollOptionRequest] | None" = dc_field( + default=None, metadata=dc_config(field_name="options") + ) # Custom data for this object - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdatePredefinedFilterRequest(DataClassJsonMixin): @@ -14867,37 +29241,72 @@ class UpdatePredefinedFilterRequest(DataClassJsonMixin): # Filter to apply to the query filter: dict[str, object] = dc_field(metadata=dc_config(field_name="filter")) # The description of the predefined filter - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) - sort: 'list[dict[str, object]] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) + sort: "list[dict[str, object]] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) + @dataclass class UpdatePredefinedFilterResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - predefined_filter: 'PredefinedFilterResponse | None' = dc_field(default=None, metadata=dc_config(field_name="predefined_filter")) + predefined_filter: "PredefinedFilterResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="predefined_filter") + ) + @dataclass class UpdateQueueRequest(DataClassJsonMixin): - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - sort: 'list[dict[str, object]] | None' = dc_field(default=None, metadata=dc_config(field_name="sort")) - filters: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filters")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + sort: "list[dict[str, object]] | None" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) + filters: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filters") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdateReminderRequest(DataClassJsonMixin): - remind_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="remind_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + remind_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="remind_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdateReminderResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - reminder: 'ReminderResponseData' = dc_field(metadata=dc_config(field_name="reminder")) + reminder: "ReminderResponseData" = dc_field( + metadata=dc_config(field_name="reminder") + ) + @dataclass class UpdateSIPInboundRoutingRuleRequest(DataClassJsonMixin): @@ -14906,25 +29315,43 @@ class UpdateSIPInboundRoutingRuleRequest(DataClassJsonMixin): # List of SIP trunk IDs trunk_ids: list[str] = dc_field(metadata=dc_config(field_name="trunk_ids")) # Configuration for SIP caller settings - caller_configs: 'SIPCallerConfigsRequest' = dc_field(metadata=dc_config(field_name="caller_configs")) + caller_configs: "SIPCallerConfigsRequest" = dc_field( + metadata=dc_config(field_name="caller_configs") + ) # List of called numbers - called_numbers: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="called_numbers")) + called_numbers: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="called_numbers") + ) # List of caller numbers (optional) - caller_numbers: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="caller_numbers")) + caller_numbers: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="caller_numbers") + ) # Configuration for SIP call settings - call_configs: 'SIPCallConfigsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="call_configs")) + call_configs: "SIPCallConfigsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="call_configs") + ) # Configuration for direct routing rule calls - direct_routing_configs: 'SIPDirectRoutingRuleCallConfigsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="direct_routing_configs")) + direct_routing_configs: "SIPDirectRoutingRuleCallConfigsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="direct_routing_configs") + ) # Configuration for PIN protection settings - pin_protection_configs: 'SIPPinProtectionConfigsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="pin_protection_configs")) + pin_protection_configs: "SIPPinProtectionConfigsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="pin_protection_configs") + ) # Configuration for PIN routing rule calls - pin_routing_configs: 'SIPInboundRoutingRulePinConfigsRequest | None' = dc_field(default=None, metadata=dc_config(field_name="pin_routing_configs")) + pin_routing_configs: "SIPInboundRoutingRulePinConfigsRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="pin_routing_configs") + ) + @dataclass class UpdateSIPInboundRoutingRuleResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # SIP Inbound Routing Rule response - sip_inbound_routing_rule: 'SIPInboundRoutingRuleResponse | None' = dc_field(default=None, metadata=dc_config(field_name="sip_inbound_routing_rule")) + sip_inbound_routing_rule: "SIPInboundRoutingRuleResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="sip_inbound_routing_rule") + ) + @dataclass class UpdateSIPTrunkRequest(DataClassJsonMixin): @@ -14933,111 +29360,178 @@ class UpdateSIPTrunkRequest(DataClassJsonMixin): # Phone numbers associated with this SIP trunk numbers: list[str] = dc_field(metadata=dc_config(field_name="numbers")) # Optional password for SIP trunk authentication - password: str | None = dc_field(default=None, metadata=dc_config(field_name="password")) + password: str | None = dc_field( + default=None, metadata=dc_config(field_name="password") + ) # Optional list of allowed IPv4/IPv6 addresses or CIDR blocks - allowed_ips: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="allowed_ips")) + allowed_ips: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="allowed_ips") + ) + @dataclass class UpdateSIPTrunkResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # SIP trunk information - sip_trunk: 'SIPTrunkResponse | None' = dc_field(default=None, metadata=dc_config(field_name="sip_trunk")) + sip_trunk: "SIPTrunkResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="sip_trunk") + ) + @dataclass class UpdateSegmentRequest(DataClassJsonMixin): # The description of the segment (max 256 characters) - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) # The name of the segment (max 128 characters) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # Filter to apply to the query - filter: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="filter")) + filter: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + @dataclass class UpdateSegmentResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - segment: 'SegmentResponse' = dc_field(metadata=dc_config(field_name="segment")) + segment: "SegmentResponse" = dc_field(metadata=dc_config(field_name="segment")) + @dataclass class UpdateThreadPartialRequest(DataClassJsonMixin): - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Array of field names to unset - unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) + unset: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="unset") + ) # Sets new field values - set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) + set: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="set") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpdateThreadPartialResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - thread: 'ThreadResponse' = dc_field(metadata=dc_config(field_name="thread")) + thread: "ThreadResponse" = dc_field(metadata=dc_config(field_name="thread")) + @dataclass class UpdateUserGroupRequest(DataClassJsonMixin): # The new description for the group - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) # The new name of the user group name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="team_id")) + team_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="team_id") + ) + @dataclass class UpdateUserGroupResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - user_group: 'UserGroupResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) + user_group: "UserGroupResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user_group") + ) + @dataclass class UpdateUserPartialRequest(DataClassJsonMixin): # User ID to update id: str = dc_field(metadata=dc_config(field_name="id")) - unset: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="unset")) - set: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="set")) + unset: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="unset") + ) + set: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="set") + ) + @dataclass class UpdateUserPermissionsRequest(DataClassJsonMixin): user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - grant_permissions: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="grant_permissions")) - revoke_permissions: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="revoke_permissions")) + grant_permissions: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="grant_permissions") + ) + revoke_permissions: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="revoke_permissions") + ) + @dataclass class UpdateUserPermissionsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class UpdateUsersPartialRequest(DataClassJsonMixin): - users: 'list[UpdateUserPartialRequest]' = dc_field(metadata=dc_config(field_name="users")) + users: "list[UpdateUserPartialRequest]" = dc_field( + metadata=dc_config(field_name="users") + ) + @dataclass class UpdateUsersRequest(DataClassJsonMixin): # Object containing users - users: 'dict[str, UserRequest]' = dc_field(metadata=dc_config(field_name="users")) + users: "dict[str, UserRequest]" = dc_field(metadata=dc_config(field_name="users")) + @dataclass class UpdateUsersResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - membership_deletion_task_id: str = dc_field(metadata=dc_config(field_name="membership_deletion_task_id")) + membership_deletion_task_id: str = dc_field( + metadata=dc_config(field_name="membership_deletion_task_id") + ) # Object containing users - users: 'dict[str, FullUserResponse]' = dc_field(metadata=dc_config(field_name="users")) + users: "dict[str, FullUserResponse]" = dc_field( + metadata=dc_config(field_name="users") + ) + @dataclass class UpdatedCallPermissionsEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The capabilities of the current user - own_capabilities: 'list[OwnCapability]' = dc_field(metadata=dc_config(field_name="own_capabilities")) + own_capabilities: "list[OwnCapability]" = dc_field( + metadata=dc_config(field_name="own_capabilities") + ) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "call.permissions_updated" in this case - type: str = dc_field(default="call.permissions_updated", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="call.permissions_updated", metadata=dc_config(field_name="type") + ) + @dataclass class UploadChannelFileRequest(DataClassJsonMixin): # file field file: str | None = dc_field(default=None, metadata=dc_config(field_name="file")) - user: 'OnlyUserID | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "OnlyUserID | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UploadChannelFileResponse(DataClassJsonMixin): @@ -15045,37 +29539,61 @@ class UploadChannelFileResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # URL to the uploaded asset. Should be used to put to `asset_url` attachment field file: str | None = dc_field(default=None, metadata=dc_config(field_name="file")) - moderation_action: str | None = dc_field(default=None, metadata=dc_config(field_name="moderation_action")) + moderation_action: str | None = dc_field( + default=None, metadata=dc_config(field_name="moderation_action") + ) # URL of the file thumbnail for supported file formats. Should be put to `thumb_url` attachment field - thumb_url: str | None = dc_field(default=None, metadata=dc_config(field_name="thumb_url")) + thumb_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="thumb_url") + ) + @dataclass class UploadChannelRequest(DataClassJsonMixin): file: str | None = dc_field(default=None, metadata=dc_config(field_name="file")) # field with JSON-encoded array of image size configurations - upload_sizes: 'list[ImageSize] | None' = dc_field(default=None, metadata=dc_config(field_name="upload_sizes")) - user: 'OnlyUserID | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + upload_sizes: "list[ImageSize] | None" = dc_field( + default=None, metadata=dc_config(field_name="upload_sizes") + ) + user: "OnlyUserID | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UploadChannelResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) file: str | None = dc_field(default=None, metadata=dc_config(field_name="file")) - moderation_action: str | None = dc_field(default=None, metadata=dc_config(field_name="moderation_action")) - thumb_url: str | None = dc_field(default=None, metadata=dc_config(field_name="thumb_url")) + moderation_action: str | None = dc_field( + default=None, metadata=dc_config(field_name="moderation_action") + ) + thumb_url: str | None = dc_field( + default=None, metadata=dc_config(field_name="thumb_url") + ) # Array of image size configurations - upload_sizes: 'list[ImageSize] | None' = dc_field(default=None, metadata=dc_config(field_name="upload_sizes")) + upload_sizes: "list[ImageSize] | None" = dc_field( + default=None, metadata=dc_config(field_name="upload_sizes") + ) + @dataclass class UpsertActionConfigItem(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) order: int = dc_field(metadata=dc_config(field_name="order")) - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) icon: str | None = dc_field(default=None, metadata=dc_config(field_name="icon")) id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) - queue_type: str | None = dc_field(default=None, metadata=dc_config(field_name="queue_type")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + queue_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="queue_type") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class UpsertActionConfigRequest(DataClassJsonMixin): @@ -15086,55 +29604,89 @@ class UpsertActionConfigRequest(DataClassJsonMixin): # Display order in the dashboard (0–100, lower numbers shown first) order: int = dc_field(metadata=dc_config(field_name="order")) # Human-readable label for the dashboard button - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) # Icon identifier for the dashboard button icon: str | None = dc_field(default=None, metadata=dc_config(field_name="icon")) # UUID of an existing action config to update; omit to create a new record id: str | None = dc_field(default=None, metadata=dc_config(field_name="id")) # Queue this config belongs to; null means the default queue - queue_type: str | None = dc_field(default=None, metadata=dc_config(field_name="queue_type")) + queue_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="queue_type") + ) # Optional user ID to associate with the audit log entry - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Action-specific parameters passed to the action handler - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpsertActionConfigResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # Configuration for a moderation action - action_config: 'ModerationActionConfigResponse | None' = dc_field(default=None, metadata=dc_config(field_name="action_config")) + action_config: "ModerationActionConfigResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="action_config") + ) + @dataclass class UpsertActivitiesRequest(DataClassJsonMixin): # List of activities to create or update - activities: 'list[ActivityRequest]' = dc_field(metadata=dc_config(field_name="activities")) + activities: "list[ActivityRequest]" = dc_field( + metadata=dc_config(field_name="activities") + ) # Server-side only. If true, auto-creates users referenced by activity user_id values that don't already exist. Default: false. - create_users: bool | None = dc_field(default=None, metadata=dc_config(field_name="create_users")) + create_users: bool | None = dc_field( + default=None, metadata=dc_config(field_name="create_users") + ) # If true, enriches the activities' current_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. - enrich_own_fields: bool | None = dc_field(default=None, metadata=dc_config(field_name="enrich_own_fields")) + enrich_own_fields: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_fields") + ) # If true, forces moderation to run for server-side requests. By default, server-side requests skip moderation. Client-side requests always run moderation regardless of this field. - force_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="force_moderation")) + force_moderation: bool | None = dc_field( + default=None, metadata=dc_config(field_name="force_moderation") + ) + @dataclass class UpsertActivitiesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of created or updated activities - activities: 'list[ActivityResponse]' = dc_field(metadata=dc_config(field_name="activities")) + activities: "list[ActivityResponse]" = dc_field( + metadata=dc_config(field_name="activities") + ) # Total number of mention notification activities created for mentioned users across all activities - mention_notifications_created: int | None = dc_field(default=None, metadata=dc_config(field_name="mention_notifications_created")) + mention_notifications_created: int | None = dc_field( + default=None, metadata=dc_config(field_name="mention_notifications_created") + ) + @dataclass class UpsertCollectionsRequest(DataClassJsonMixin): # List of collections to upsert (insert if new, update if existing) - collections: 'list[CollectionRequest]' = dc_field(metadata=dc_config(field_name="collections")) + collections: "list[CollectionRequest]" = dc_field( + metadata=dc_config(field_name="collections") + ) + @dataclass class UpsertCollectionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) # List of upserted collections - collections: 'list[CollectionResponse]' = dc_field(metadata=dc_config(field_name="collections")) + collections: "list[CollectionResponse]" = dc_field( + metadata=dc_config(field_name="collections") + ) + @dataclass class UpsertConfigRequest(DataClassJsonMixin): @@ -15145,55 +29697,108 @@ class UpsertConfigRequest(DataClassJsonMixin): # Team associated with the configuration team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Optional user ID to associate with the audit log entry - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - ai_audio_config: 'AIAudioConfigRequest | None' = dc_field(default=None, metadata=dc_config(field_name="ai_audio_config")) - ai_image_config: 'AIImageConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ai_image_config")) - ai_text_config: 'AITextConfig | None' = dc_field(default=None, metadata=dc_config(field_name="ai_text_config")) - ai_video_config: 'AIVideoConfigRequest | None' = dc_field(default=None, metadata=dc_config(field_name="ai_video_config")) - automod_platform_circumvention_config: 'AutomodPlatformCircumventionConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_platform_circumvention_config")) - automod_semantic_filters_config: 'AutomodSemanticFiltersConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_semantic_filters_config")) - automod_toxicity_config: 'AutomodToxicityConfig | None' = dc_field(default=None, metadata=dc_config(field_name="automod_toxicity_config")) - aws_rekognition_config: 'AIImageConfig | None' = dc_field(default=None, metadata=dc_config(field_name="aws_rekognition_config")) - block_list_config: 'BlockListConfig | None' = dc_field(default=None, metadata=dc_config(field_name="block_list_config")) - bodyguard_config: 'AITextConfig | None' = dc_field(default=None, metadata=dc_config(field_name="bodyguard_config")) - flood_config: 'FloodConfig | None' = dc_field(default=None, metadata=dc_config(field_name="flood_config")) - google_vision_config: 'GoogleVisionConfig | None' = dc_field(default=None, metadata=dc_config(field_name="google_vision_config")) - llm_config: 'LLMConfig | None' = dc_field(default=None, metadata=dc_config(field_name="llm_config")) - rule_builder_config: 'RuleBuilderConfig | None' = dc_field(default=None, metadata=dc_config(field_name="rule_builder_config")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + ai_audio_config: "AIAudioConfigRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="ai_audio_config") + ) + ai_image_config: "AIImageConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="ai_image_config") + ) + ai_text_config: "AITextConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="ai_text_config") + ) + ai_video_config: "AIVideoConfigRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="ai_video_config") + ) + automod_platform_circumvention_config: "AutomodPlatformCircumventionConfig | None" = dc_field( + default=None, + metadata=dc_config(field_name="automod_platform_circumvention_config"), + ) + automod_semantic_filters_config: "AutomodSemanticFiltersConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="automod_semantic_filters_config") + ) + automod_toxicity_config: "AutomodToxicityConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="automod_toxicity_config") + ) + aws_rekognition_config: "AIImageConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="aws_rekognition_config") + ) + block_list_config: "BlockListConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="block_list_config") + ) + bodyguard_config: "AITextConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="bodyguard_config") + ) + flood_config: "FloodConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="flood_config") + ) + google_vision_config: "GoogleVisionConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="google_vision_config") + ) + llm_config: "LLMConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="llm_config") + ) + rule_builder_config: "RuleBuilderConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="rule_builder_config") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) - velocity_filter_config: 'VelocityFilterConfig | None' = dc_field(default=None, metadata=dc_config(field_name="velocity_filter_config")) - video_call_rule_config: 'VideoCallRuleConfig | None' = dc_field(default=None, metadata=dc_config(field_name="video_call_rule_config")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + velocity_filter_config: "VelocityFilterConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="velocity_filter_config") + ) + video_call_rule_config: "VideoCallRuleConfig | None" = dc_field( + default=None, metadata=dc_config(field_name="video_call_rule_config") + ) + @dataclass class UpsertConfigResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - config: 'ConfigResponse | None' = dc_field(default=None, metadata=dc_config(field_name="config")) + config: "ConfigResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="config") + ) + @dataclass class UpsertExternalStorageAWSS3Request(DataClassJsonMixin): bucket: str = dc_field(metadata=dc_config(field_name="bucket")) region: str = dc_field(metadata=dc_config(field_name="region")) role_arn: str = dc_field(metadata=dc_config(field_name="role_arn")) - path_prefix: str | None = dc_field(default=None, metadata=dc_config(field_name="path_prefix")) + path_prefix: str | None = dc_field( + default=None, metadata=dc_config(field_name="path_prefix") + ) + @dataclass class UpsertExternalStorageGCSRequest(DataClassJsonMixin): bucket: str = dc_field(metadata=dc_config(field_name="bucket")) credentials: str = dc_field(metadata=dc_config(field_name="credentials")) - path_prefix: str | None = dc_field(default=None, metadata=dc_config(field_name="path_prefix")) + path_prefix: str | None = dc_field( + default=None, metadata=dc_config(field_name="path_prefix") + ) + @dataclass class UpsertExternalStorageRequest(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) - aws_s3: 'UpsertExternalStorageAWSS3Request | None' = dc_field(default=None, metadata=dc_config(field_name="aws_s3")) - gcs: 'UpsertExternalStorageGCSRequest | None' = dc_field(default=None, metadata=dc_config(field_name="gcs")) + aws_s3: "UpsertExternalStorageAWSS3Request | None" = dc_field( + default=None, metadata=dc_config(field_name="aws_s3") + ) + gcs: "UpsertExternalStorageGCSRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="gcs") + ) + @dataclass class UpsertExternalStorageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class UpsertModerationRuleRequest(DataClassJsonMixin): # Unique rule name @@ -15201,96 +29806,166 @@ class UpsertModerationRuleRequest(DataClassJsonMixin): # Type of rule: user, content, call, or flood rule_type: str = dc_field(metadata=dc_config(field_name="rule_type")) # Duration before rule can trigger again (e.g. 24h, 7d) - cooldown_period: str | None = dc_field(default=None, metadata=dc_config(field_name="cooldown_period")) + cooldown_period: str | None = dc_field( + default=None, metadata=dc_config(field_name="cooldown_period") + ) # Optional description of the rule - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) # Whether the rule is active - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) # Logical operator between conditions/groups: AND or OR logic: str | None = dc_field(default=None, metadata=dc_config(field_name="logic")) # Team scope for the rule team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) # Optional user ID to associate with the audit log entry - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) # Escalation sequences for call rules - action_sequences: 'list[CallRuleActionSequence] | None' = dc_field(default=None, metadata=dc_config(field_name="action_sequences")) + action_sequences: "list[CallRuleActionSequence] | None" = dc_field( + default=None, metadata=dc_config(field_name="action_sequences") + ) # Flat list of conditions (legacy) - conditions: 'list[RuleBuilderCondition] | None' = dc_field(default=None, metadata=dc_config(field_name="conditions")) + conditions: "list[RuleBuilderCondition] | None" = dc_field( + default=None, metadata=dc_config(field_name="conditions") + ) # List of config keys this rule applies to - config_keys: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="config_keys")) + config_keys: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="config_keys") + ) # Nested condition groups - groups: 'list[RuleBuilderConditionGroup] | None' = dc_field(default=None, metadata=dc_config(field_name="groups")) - action: 'RuleBuilderAction | None' = dc_field(default=None, metadata=dc_config(field_name="action")) + groups: "list[RuleBuilderConditionGroup] | None" = dc_field( + default=None, metadata=dc_config(field_name="groups") + ) + action: "RuleBuilderAction | None" = dc_field( + default=None, metadata=dc_config(field_name="action") + ) # User request object - user: 'UserRequest | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UpsertModerationRuleResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - rule: 'ModerationRuleV2Response | None' = dc_field(default=None, metadata=dc_config(field_name="rule")) + rule: "ModerationRuleV2Response | None" = dc_field( + default=None, metadata=dc_config(field_name="rule") + ) + @dataclass class UpsertModerationTemplateRequest(DataClassJsonMixin): # Name of the moderation template name: str = dc_field(metadata=dc_config(field_name="name")) # Configuration for a feeds moderation template - config: 'FeedsModerationTemplateConfigPayload' = dc_field(metadata=dc_config(field_name="config")) + config: "FeedsModerationTemplateConfigPayload" = dc_field( + metadata=dc_config(field_name="config") + ) + @dataclass class UpsertModerationTemplateResponse(DataClassJsonMixin): # When the template was created - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) duration: str = dc_field(metadata=dc_config(field_name="duration")) # Name of the moderation template name: str = dc_field(metadata=dc_config(field_name="name")) # When the template was last updated - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Configuration for a feeds moderation template - config: 'FeedsModerationTemplateConfigPayload | None' = dc_field(default=None, metadata=dc_config(field_name="config")) + config: "FeedsModerationTemplateConfigPayload | None" = dc_field( + default=None, metadata=dc_config(field_name="config") + ) + @dataclass class UpsertPushPreferencesRequest(DataClassJsonMixin): # A list of push preferences for channels, calls, or the user. - preferences: 'list[PushPreferenceInput]' = dc_field(metadata=dc_config(field_name="preferences")) + preferences: "list[PushPreferenceInput]" = dc_field( + metadata=dc_config(field_name="preferences") + ) + @dataclass class UpsertPushPreferencesResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) # The channel specific push notification preferences, only returned for channels you've edited. - user_channel_preferences: 'dict[str, dict[str, ChannelPushPreferencesResponse]]' = dc_field(metadata=dc_config(field_name="user_channel_preferences")) + user_channel_preferences: "dict[str, dict[str, ChannelPushPreferencesResponse]]" = ( + dc_field(metadata=dc_config(field_name="user_channel_preferences")) + ) # The user preferences, always returned regardless if you edited it - user_preferences: 'dict[str, PushPreferencesResponse]' = dc_field(metadata=dc_config(field_name="user_preferences")) + user_preferences: "dict[str, PushPreferencesResponse]" = dc_field( + metadata=dc_config(field_name="user_preferences") + ) + @dataclass class UpsertPushProviderRequest(DataClassJsonMixin): - push_provider: 'PushProviderRequest | None' = dc_field(default=None, metadata=dc_config(field_name="push_provider")) + push_provider: "PushProviderRequest | None" = dc_field( + default=None, metadata=dc_config(field_name="push_provider") + ) + @dataclass class UpsertPushProviderResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - push_provider: 'PushProviderResponse' = dc_field(metadata=dc_config(field_name="push_provider")) + push_provider: "PushProviderResponse" = dc_field( + metadata=dc_config(field_name="push_provider") + ) + @dataclass class UpsertPushTemplateRequest(DataClassJsonMixin): # Event type. One of: message.new, message.updated, reaction.new, notification.reminder_due, feeds.activity.added, feeds.comment.added, feeds.activity.reaction.added, feeds.comment.reaction.added, feeds.follow.created, feeds.notification_feed.updated event_type: str = dc_field(metadata=dc_config(field_name="event_type")) # Push provider type. One of: firebase, apn, huawei, xiaomi - push_provider_type: str = dc_field(metadata=dc_config(field_name="push_provider_type")) + push_provider_type: str = dc_field( + metadata=dc_config(field_name="push_provider_type") + ) # Whether to send push notification for this event - enable_push: bool | None = dc_field(default=None, metadata=dc_config(field_name="enable_push")) + enable_push: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enable_push") + ) # Push provider name - push_provider_name: str | None = dc_field(default=None, metadata=dc_config(field_name="push_provider_name")) + push_provider_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="push_provider_name") + ) # Push template - template: str | None = dc_field(default=None, metadata=dc_config(field_name="template")) + template: str | None = dc_field( + default=None, metadata=dc_config(field_name="template") + ) + @dataclass class UpsertPushTemplateResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - template: 'PushTemplateResponse | None' = dc_field(default=None, metadata=dc_config(field_name="template")) + template: "PushTemplateResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="template") + ) + @dataclass class UpsertSetupSessionRequest(DataClassJsonMixin): @@ -15299,82 +29974,175 @@ class UpsertSetupSessionRequest(DataClassJsonMixin): # The status of the setup session. One of: in_progress, completed status: str = dc_field(metadata=dc_config(field_name="status")) # Per-step data keyed by step name (welcome, input, configure, live) - setup_data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="setup_data")) + setup_data: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="setup_data") + ) + @dataclass class UpsertSetupSessionResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - setup_session: 'SetupSession | None' = dc_field(default=None, metadata=dc_config(field_name="setup_session")) + setup_session: "SetupSession | None" = dc_field( + default=None, metadata=dc_config(field_name="setup_session") + ) + @dataclass class User(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) - data: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="data")) + data: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="data") + ) + @dataclass class UserBannedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.banned" in this case type: str = dc_field(default="user.banned", metadata=dc_config(field_name="type")) # The ID of the channel where the target user was banned - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel where the target user was banned - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel where the target user was banned cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) # The expiration date of the ban - expiration: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expiration", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + expiration: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="expiration", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The reason for the ban reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # ID of the review queue item (flagged message) that triggered the ban, if the ban was applied from the moderation review queue - review_queue_item_id: str | None = dc_field(default=None, metadata=dc_config(field_name="review_queue_item_id")) + review_queue_item_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="review_queue_item_id") + ) # Whether the user was shadow banned - shadow: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow")) + shadow: bool | None = dc_field( + default=None, metadata=dc_config(field_name="shadow") + ) # The team of the channel where the target user was banned team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - total_bans: int | None = dc_field(default=None, metadata=dc_config(field_name="total_bans")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) - created_by: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) + total_bans: int | None = dc_field( + default=None, metadata=dc_config(field_name="total_bans") + ) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + created_by: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) + @dataclass class UserCreatedWithinParameters(DataClassJsonMixin): - max_age: str | None = dc_field(default=None, metadata=dc_config(field_name="max_age")) + max_age: str | None = dc_field( + default=None, metadata=dc_config(field_name="max_age") + ) + @dataclass class UserCustomEventRequest(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class UserCustomPropertyParameters(DataClassJsonMixin): - operator: str | None = dc_field(default=None, metadata=dc_config(field_name="operator")) - property_key: str | None = dc_field(default=None, metadata=dc_config(field_name="property_key")) + operator: str | None = dc_field( + default=None, metadata=dc_config(field_name="operator") + ) + property_key: str | None = dc_field( + default=None, metadata=dc_config(field_name="property_key") + ) + @dataclass class UserDeactivatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.deactivated" in this case - type: str = dc_field(default="user.deactivated", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - created_by: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) + type: str = dc_field( + default="user.deactivated", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + created_by: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) + @dataclass class UserDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The type of deletion that was used for the user's conversations. One of: hard, soft, pruning, (empty string) - delete_conversation: str = dc_field(metadata=dc_config(field_name="delete_conversation")) + delete_conversation: str = dc_field( + metadata=dc_config(field_name="delete_conversation") + ) # Whether the user's conversation channels were deleted - delete_conversation_channels: bool = dc_field(metadata=dc_config(field_name="delete_conversation_channels")) + delete_conversation_channels: bool = dc_field( + metadata=dc_config(field_name="delete_conversation_channels") + ) # The type of deletion that was used for the user's messages. One of: hard, soft, pruning, (empty string) delete_messages: str = dc_field(metadata=dc_config(field_name="delete_messages")) # The type of deletion that was used for the user. One of: hard, soft, pruning, (empty string) @@ -15382,21 +30150,38 @@ class UserDeletedEvent(DataClassJsonMixin): # Whether the user was hard deleted hard_delete: bool = dc_field(metadata=dc_config(field_name="hard_delete")) # Whether the user's messages were marked as deleted - mark_messages_deleted: bool = dc_field(metadata=dc_config(field_name="mark_messages_deleted")) + mark_messages_deleted: bool = dc_field( + metadata=dc_config(field_name="mark_messages_deleted") + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.deleted" in this case type: str = dc_field(default="user.deleted", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class UserFeedbackReport(DataClassJsonMixin): unreported_count: int = dc_field(metadata=dc_config(field_name="unreported_count")) - count_by_rating: 'dict[str, int]' = dc_field(metadata=dc_config(field_name="count_by_rating")) + count_by_rating: "dict[str, int]" = dc_field( + metadata=dc_config(field_name="count_by_rating") + ) + @dataclass class UserFeedbackReportResponse(DataClassJsonMixin): - daily: 'list[DailyAggregateUserFeedbackReportResponse]' = dc_field(metadata=dc_config(field_name="daily")) + daily: "list[DailyAggregateUserFeedbackReportResponse]" = dc_field( + metadata=dc_config(field_name="daily") + ) + @dataclass class UserFeedbackResponse(DataClassJsonMixin): @@ -15407,181 +30192,473 @@ class UserFeedbackResponse(DataClassJsonMixin): sdk_version: str = dc_field(metadata=dc_config(field_name="sdk_version")) session_id: str = dc_field(metadata=dc_config(field_name="session_id")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - platform: 'PlatformDataResponse' = dc_field(metadata=dc_config(field_name="platform")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + platform: "PlatformDataResponse" = dc_field( + metadata=dc_config(field_name="platform") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class UserFlaggedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The reason for the flag reason: str = dc_field(metadata=dc_config(field_name="reason")) # The total number of flags for the user total_flags: int = dc_field(metadata=dc_config(field_name="total_flags")) - user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.flagged" in this case type: str = dc_field(default="user.flagged", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Custom data - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - target_user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="target_user")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + target_user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="target_user") + ) + @dataclass class UserGroup(DataClassJsonMixin): app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) id: str = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - created_by: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by")) - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) - team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="team_id")) - members: 'list[UserGroupMember] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + created_by: str | None = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) + team_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="team_id") + ) + members: "list[UserGroupMember] | None" = dc_field( + default=None, metadata=dc_config(field_name="members") + ) + @dataclass class UserGroupCreatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "user_group.created" in this case - type: str = dc_field(default="user_group.created", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) - user_group: 'UserGroup | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) + type: str = dc_field( + default="user_group.created", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + user_group: "UserGroup | None" = dc_field( + default=None, metadata=dc_config(field_name="user_group") + ) + @dataclass class UserGroupDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "user_group.deleted" in this case - type: str = dc_field(default="user_group.deleted", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) - user_group: 'UserGroup | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) + type: str = dc_field( + default="user_group.deleted", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + user_group: "UserGroup | None" = dc_field( + default=None, metadata=dc_config(field_name="user_group") + ) + @dataclass class UserGroupMember(DataClassJsonMixin): app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) group_id: str = dc_field(metadata=dc_config(field_name="group_id")) is_admin: bool = dc_field(metadata=dc_config(field_name="is_admin")) user_id: str = dc_field(metadata=dc_config(field_name="user_id")) + @dataclass class UserGroupMemberAddedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The user IDs that were added members: list[str] = dc_field(metadata=dc_config(field_name="members")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "user_group.member_added" in this case - type: str = dc_field(default="user_group.member_added", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) - user_group: 'UserGroup | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) + type: str = dc_field( + default="user_group.member_added", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + user_group: "UserGroup | None" = dc_field( + default=None, metadata=dc_config(field_name="user_group") + ) + @dataclass class UserGroupMemberRemovedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The user IDs that were removed members: list[str] = dc_field(metadata=dc_config(field_name="members")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "user_group.member_removed" in this case - type: str = dc_field(default="user_group.member_removed", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) - user_group: 'UserGroup | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) + type: str = dc_field( + default="user_group.member_removed", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + user_group: "UserGroup | None" = dc_field( + default=None, metadata=dc_config(field_name="user_group") + ) + @dataclass class UserGroupResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) id: str = dc_field(metadata=dc_config(field_name="id")) name: str = dc_field(metadata=dc_config(field_name="name")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - created_by: str | None = dc_field(default=None, metadata=dc_config(field_name="created_by")) - description: str | None = dc_field(default=None, metadata=dc_config(field_name="description")) - team_id: str | None = dc_field(default=None, metadata=dc_config(field_name="team_id")) - members: 'list[UserGroupMember] | None' = dc_field(default=None, metadata=dc_config(field_name="members")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + created_by: str | None = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) + description: str | None = dc_field( + default=None, metadata=dc_config(field_name="description") + ) + team_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="team_id") + ) + members: "list[UserGroupMember] | None" = dc_field( + default=None, metadata=dc_config(field_name="members") + ) + @dataclass class UserGroupUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) # The type of event: "user_group.updated" in this case - type: str = dc_field(default="user_group.updated", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="user")) - user_group: 'UserGroup | None' = dc_field(default=None, metadata=dc_config(field_name="user_group")) + type: str = dc_field( + default="user_group.updated", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + user_group: "UserGroup | None" = dc_field( + default=None, metadata=dc_config(field_name="user_group") + ) + @dataclass class UserIdenticalContentCountParameters(DataClassJsonMixin): - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + time_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="time_window") + ) + @dataclass class UserMessagesDeletedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.messages.deleted" in this case - type: str = dc_field(default="user.messages.deleted", metadata=dc_config(field_name="type")) + type: str = dc_field( + default="user.messages.deleted", metadata=dc_config(field_name="type") + ) # The ID of the channel where the target user's messages were deleted - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel where the target user's messages were deleted - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel where the target user's messages were deleted cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) # Whether Messages were hard deleted - hard_delete: bool | None = dc_field(default=None, metadata=dc_config(field_name="hard_delete")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + hard_delete: bool | None = dc_field( + default=None, metadata=dc_config(field_name="hard_delete") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The team of the channel where the target user's messages were deleted team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + @dataclass class UserMuteResponse(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + expires: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="expires", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # User response object - target: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="target")) + target: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="target") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class UserMutedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.muted" in this case type: str = dc_field(default="user.muted", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The target users that were muted - target_users: 'list[UserResponseCommonFields] | None' = dc_field(default=None, metadata=dc_config(field_name="target_users")) - target_user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="target_user")) + target_users: "list[UserResponseCommonFields] | None" = dc_field( + default=None, metadata=dc_config(field_name="target_users") + ) + target_user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="target_user") + ) + @dataclass class UserRatingReportResponse(DataClassJsonMixin): average: float = dc_field(metadata=dc_config(field_name="average")) count: int = dc_field(metadata=dc_config(field_name="count")) + @dataclass class UserReactivatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.reactivated" in this case - type: str = dc_field(default="user.reactivated", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - created_by: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) + type: str = dc_field( + default="user.reactivated", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + created_by: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) + @dataclass class UserRequest(DataClassJsonMixin): @@ -15589,26 +30666,46 @@ class UserRequest(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) # User's profile image URL image: str | None = dc_field(default=None, metadata=dc_config(field_name="image")) - invisible: bool | None = dc_field(default=None, metadata=dc_config(field_name="invisible")) - language: str | None = dc_field(default=None, metadata=dc_config(field_name="language")) + invisible: bool | None = dc_field( + default=None, metadata=dc_config(field_name="invisible") + ) + language: str | None = dc_field( + default=None, metadata=dc_config(field_name="language") + ) # Optional name of user name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # User's global role role: str | None = dc_field(default=None, metadata=dc_config(field_name="role")) # List of teams the user belongs to - teams: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="teams")) + teams: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="teams") + ) # Custom user data - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) - privacy_settings: 'PrivacySettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="privacy_settings")) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + privacy_settings: "PrivacySettingsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="privacy_settings") + ) # Map of team-specific roles for the user - teams_role: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="teams_role")) + teams_role: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="teams_role") + ) + @dataclass class UserResponse(DataClassJsonMixin): # Whether a user is banned or not banned: bool = dc_field(metadata=dc_config(field_name="banned")) # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # Unique user identifier id: str = dc_field(metadata=dc_config(field_name="id")) invisible: bool = dc_field(metadata=dc_config(field_name="invisible")) @@ -15621,338 +30718,793 @@ class UserResponse(DataClassJsonMixin): # Whether a user is shadow banned shadow_banned: bool = dc_field(metadata=dc_config(field_name="shadow_banned")) # Date/time of the last update - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - blocked_user_ids: list[str] = dc_field(metadata=dc_config(field_name="blocked_user_ids")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + blocked_user_ids: list[str] = dc_field( + metadata=dc_config(field_name="blocked_user_ids") + ) # List of teams user is a part of teams: list[str] = dc_field(metadata=dc_config(field_name="teams")) # Custom data for this object custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - avg_response_time: int | None = dc_field(default=None, metadata=dc_config(field_name="avg_response_time")) + avg_response_time: int | None = dc_field( + default=None, metadata=dc_config(field_name="avg_response_time") + ) # Date when ban expires - ban_expires: datetime | None = dc_field(default=None, metadata=dc_config(field_name="ban_expires", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - bypass_moderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="bypass_moderation")) + ban_expires: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="ban_expires", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + bypass_moderation: bool | None = dc_field( + default=None, metadata=dc_config(field_name="bypass_moderation") + ) # Date of deactivation - deactivated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deactivated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deactivated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deactivated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Date/time of deletion - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) image: str | None = dc_field(default=None, metadata=dc_config(field_name="image")) # Date of last activity - last_active: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_active", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_active: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_active", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Optional name of user name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) # Revocation date for tokens - revoke_tokens_issued_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="revoke_tokens_issued_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + revoke_tokens_issued_before: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="revoke_tokens_issued_before", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # List of devices user is using - devices: 'list[DeviceResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="devices")) - privacy_settings: 'PrivacySettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="privacy_settings")) - push_notifications: 'PushNotificationSettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="push_notifications")) - teams_role: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="teams_role")) + devices: "list[DeviceResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="devices") + ) + privacy_settings: "PrivacySettingsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="privacy_settings") + ) + push_notifications: "PushNotificationSettingsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="push_notifications") + ) + teams_role: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="teams_role") + ) + @dataclass class UserResponseCommonFields(DataClassJsonMixin): banned: bool = dc_field(metadata=dc_config(field_name="banned")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) id: str = dc_field(metadata=dc_config(field_name="id")) language: str = dc_field(metadata=dc_config(field_name="language")) online: bool = dc_field(metadata=dc_config(field_name="online")) role: str = dc_field(metadata=dc_config(field_name="role")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - blocked_user_ids: list[str] = dc_field(metadata=dc_config(field_name="blocked_user_ids")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + blocked_user_ids: list[str] = dc_field( + metadata=dc_config(field_name="blocked_user_ids") + ) teams: list[str] = dc_field(metadata=dc_config(field_name="teams")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - avg_response_time: int | None = dc_field(default=None, metadata=dc_config(field_name="avg_response_time")) - deactivated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deactivated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + avg_response_time: int | None = dc_field( + default=None, metadata=dc_config(field_name="avg_response_time") + ) + deactivated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deactivated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) image: str | None = dc_field(default=None, metadata=dc_config(field_name="image")) - last_active: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_active", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + last_active: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_active", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - revoke_tokens_issued_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="revoke_tokens_issued_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - teams_role: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="teams_role")) + revoke_tokens_issued_before: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="revoke_tokens_issued_before", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + teams_role: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="teams_role") + ) + @dataclass class UserResponsePrivacyFields(DataClassJsonMixin): banned: bool = dc_field(metadata=dc_config(field_name="banned")) - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) id: str = dc_field(metadata=dc_config(field_name="id")) language: str = dc_field(metadata=dc_config(field_name="language")) online: bool = dc_field(metadata=dc_config(field_name="online")) role: str = dc_field(metadata=dc_config(field_name="role")) - updated_at: datetime = dc_field(metadata=dc_config(field_name="updated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - blocked_user_ids: list[str] = dc_field(metadata=dc_config(field_name="blocked_user_ids")) + updated_at: datetime = dc_field( + metadata=dc_config( + field_name="updated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + blocked_user_ids: list[str] = dc_field( + metadata=dc_config(field_name="blocked_user_ids") + ) teams: list[str] = dc_field(metadata=dc_config(field_name="teams")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - avg_response_time: int | None = dc_field(default=None, metadata=dc_config(field_name="avg_response_time")) - deactivated_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deactivated_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - deleted_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="deleted_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + avg_response_time: int | None = dc_field( + default=None, metadata=dc_config(field_name="avg_response_time") + ) + deactivated_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deactivated_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + deleted_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="deleted_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) image: str | None = dc_field(default=None, metadata=dc_config(field_name="image")) - invisible: bool | None = dc_field(default=None, metadata=dc_config(field_name="invisible")) - last_active: datetime | None = dc_field(default=None, metadata=dc_config(field_name="last_active", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + invisible: bool | None = dc_field( + default=None, metadata=dc_config(field_name="invisible") + ) + last_active: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="last_active", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) name: str | None = dc_field(default=None, metadata=dc_config(field_name="name")) - revoke_tokens_issued_before: datetime | None = dc_field(default=None, metadata=dc_config(field_name="revoke_tokens_issued_before", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - privacy_settings: 'PrivacySettingsResponse | None' = dc_field(default=None, metadata=dc_config(field_name="privacy_settings")) - teams_role: 'dict[str, str] | None' = dc_field(default=None, metadata=dc_config(field_name="teams_role")) + revoke_tokens_issued_before: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="revoke_tokens_issued_before", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + privacy_settings: "PrivacySettingsResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="privacy_settings") + ) + teams_role: "dict[str, str] | None" = dc_field( + default=None, metadata=dc_config(field_name="teams_role") + ) + @dataclass class UserRoleParameters(DataClassJsonMixin): - operator: str | None = dc_field(default=None, metadata=dc_config(field_name="operator")) + operator: str | None = dc_field( + default=None, metadata=dc_config(field_name="operator") + ) role: str | None = dc_field(default=None, metadata=dc_config(field_name="role")) + @dataclass class UserRuleParameters(DataClassJsonMixin): - max_age: str | None = dc_field(default=None, metadata=dc_config(field_name="max_age")) + max_age: str | None = dc_field( + default=None, metadata=dc_config(field_name="max_age") + ) + @dataclass class UserUnbannedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.unbanned" in this case type: str = dc_field(default="user.unbanned", metadata=dc_config(field_name="type")) # The ID of the channel where the target user was unbanned - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) - channel_member_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_member_count")) - channel_message_count: int | None = dc_field(default=None, metadata=dc_config(field_name="channel_message_count")) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) # The type of the channel where the target user was unbanned - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) # The CID of the channel where the target user was unbanned cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # Whether the target user was shadow unbanned - shadow: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow")) + shadow: bool | None = dc_field( + default=None, metadata=dc_config(field_name="shadow") + ) # The team of the channel where the target user was unbanned team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - channel_custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="channel_custom")) - created_by: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) + channel_custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + created_by: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) + @dataclass class UserUnmutedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.unmuted" in this case type: str = dc_field(default="user.unmuted", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) # The target users that were unmuted - target_users: 'list[UserResponseCommonFields] | None' = dc_field(default=None, metadata=dc_config(field_name="target_users")) - target_user: 'UserResponseCommonFields | None' = dc_field(default=None, metadata=dc_config(field_name="target_user")) + target_users: "list[UserResponseCommonFields] | None" = dc_field( + default=None, metadata=dc_config(field_name="target_users") + ) + target_user: "UserResponseCommonFields | None" = dc_field( + default=None, metadata=dc_config(field_name="target_user") + ) + @dataclass class UserUnreadReminderEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) # The channels with unread messages - channels: 'dict[str, ChannelMessagesResponse | None]' = dc_field(metadata=dc_config(field_name="channels")) + channels: "dict[str, ChannelMessagesResponse | None]" = dc_field( + metadata=dc_config(field_name="channels") + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: 'UserResponseCommonFields' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.unread_message_reminder" in this case - type: str = dc_field(default="user.unread_message_reminder", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + type: str = dc_field( + default="user.unread_message_reminder", metadata=dc_config(field_name="type") + ) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class UserUpdatedEvent(DataClassJsonMixin): # Date/time of creation - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user: 'UserResponsePrivacyFields' = dc_field(metadata=dc_config(field_name="user")) + user: "UserResponsePrivacyFields" = dc_field(metadata=dc_config(field_name="user")) # The type of event: "user.updated" in this case type: str = dc_field(default="user.updated", metadata=dc_config(field_name="type")) - received_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + received_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + @dataclass class ValidateExternalStorageResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) + @dataclass class VelocityFilterConfig(DataClassJsonMixin): _async: bool | None = dc_field(default=None, metadata=dc_config(field_name="async")) - advanced_filters: bool | None = dc_field(default=None, metadata=dc_config(field_name="advanced_filters")) - cascading_actions: bool | None = dc_field(default=None, metadata=dc_config(field_name="cascading_actions")) - cids_per_user: int | None = dc_field(default=None, metadata=dc_config(field_name="cids_per_user")) - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - first_message_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="first_message_only")) - rules: 'list[VelocityFilterConfigRule] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) + advanced_filters: bool | None = dc_field( + default=None, metadata=dc_config(field_name="advanced_filters") + ) + cascading_actions: bool | None = dc_field( + default=None, metadata=dc_config(field_name="cascading_actions") + ) + cids_per_user: int | None = dc_field( + default=None, metadata=dc_config(field_name="cids_per_user") + ) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + first_message_only: bool | None = dc_field( + default=None, metadata=dc_config(field_name="first_message_only") + ) + rules: "list[VelocityFilterConfigRule] | None" = dc_field( + default=None, metadata=dc_config(field_name="rules") + ) + @dataclass class VelocityFilterConfigRule(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) - ban_duration: int | None = dc_field(default=None, metadata=dc_config(field_name="ban_duration")) - cascading_action: str | None = dc_field(default=None, metadata=dc_config(field_name="cascading_action")) - cascading_threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="cascading_threshold")) - check_message_context: bool | None = dc_field(default=None, metadata=dc_config(field_name="check_message_context")) - fast_spam_threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="fast_spam_threshold")) - fast_spam_ttl: int | None = dc_field(default=None, metadata=dc_config(field_name="fast_spam_ttl")) - ip_ban: bool | None = dc_field(default=None, metadata=dc_config(field_name="ip_ban")) - probation_period: int | None = dc_field(default=None, metadata=dc_config(field_name="probation_period")) - shadow_ban: bool | None = dc_field(default=None, metadata=dc_config(field_name="shadow_ban")) - slow_spam_ban_duration: int | None = dc_field(default=None, metadata=dc_config(field_name="slow_spam_ban_duration")) - slow_spam_threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="slow_spam_threshold")) - slow_spam_ttl: int | None = dc_field(default=None, metadata=dc_config(field_name="slow_spam_ttl")) - url_only: bool | None = dc_field(default=None, metadata=dc_config(field_name="url_only")) + ban_duration: int | None = dc_field( + default=None, metadata=dc_config(field_name="ban_duration") + ) + cascading_action: str | None = dc_field( + default=None, metadata=dc_config(field_name="cascading_action") + ) + cascading_threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="cascading_threshold") + ) + check_message_context: bool | None = dc_field( + default=None, metadata=dc_config(field_name="check_message_context") + ) + fast_spam_threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="fast_spam_threshold") + ) + fast_spam_ttl: int | None = dc_field( + default=None, metadata=dc_config(field_name="fast_spam_ttl") + ) + ip_ban: bool | None = dc_field( + default=None, metadata=dc_config(field_name="ip_ban") + ) + probation_period: int | None = dc_field( + default=None, metadata=dc_config(field_name="probation_period") + ) + shadow_ban: bool | None = dc_field( + default=None, metadata=dc_config(field_name="shadow_ban") + ) + slow_spam_ban_duration: int | None = dc_field( + default=None, metadata=dc_config(field_name="slow_spam_ban_duration") + ) + slow_spam_threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="slow_spam_threshold") + ) + slow_spam_ttl: int | None = dc_field( + default=None, metadata=dc_config(field_name="slow_spam_ttl") + ) + url_only: bool | None = dc_field( + default=None, metadata=dc_config(field_name="url_only") + ) + @dataclass class VideoCallRuleConfig(DataClassJsonMixin): - flag_all_labels: bool | None = dc_field(default=None, metadata=dc_config(field_name="flag_all_labels")) - flagged_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="flagged_labels")) - rules: 'list[HarmConfig] | None' = dc_field(default=None, metadata=dc_config(field_name="rules")) + flag_all_labels: bool | None = dc_field( + default=None, metadata=dc_config(field_name="flag_all_labels") + ) + flagged_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="flagged_labels") + ) + rules: "list[HarmConfig] | None" = dc_field( + default=None, metadata=dc_config(field_name="rules") + ) + @dataclass class VideoContentParameters(DataClassJsonMixin): - label_operator: str | None = dc_field(default=None, metadata=dc_config(field_name="label_operator")) - harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) + label_operator: str | None = dc_field( + default=None, metadata=dc_config(field_name="label_operator") + ) + harm_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="harm_labels") + ) + @dataclass class VideoEndCallRequestPayload(DataClassJsonMixin): pass + @dataclass class VideoKickUserRequestPayload(DataClassJsonMixin): pass + @dataclass class VideoReactionOverTimeResponse(DataClassJsonMixin): - by_minute: 'list[CountByMinuteResponse] | None' = dc_field(default=None, metadata=dc_config(field_name="by_minute")) + by_minute: "list[CountByMinuteResponse] | None" = dc_field( + default=None, metadata=dc_config(field_name="by_minute") + ) + @dataclass class VideoReactionResponse(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) # User response object - user: 'UserResponse' = dc_field(metadata=dc_config(field_name="user")) - emoji_code: str | None = dc_field(default=None, metadata=dc_config(field_name="emoji_code")) - custom: dict[str, object] | None = dc_field(default=None, metadata=dc_config(field_name="custom")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + emoji_code: str | None = dc_field( + default=None, metadata=dc_config(field_name="emoji_code") + ) + custom: dict[str, object] | None = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + @dataclass class VideoReactionsResponse(DataClassJsonMixin): reaction: str = dc_field(metadata=dc_config(field_name="reaction")) - count_over_time: 'VideoReactionOverTimeResponse | None' = dc_field(default=None, metadata=dc_config(field_name="count_over_time")) + count_over_time: "VideoReactionOverTimeResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="count_over_time") + ) + @dataclass class VideoRuleParameters(DataClassJsonMixin): - threshold: int | None = dc_field(default=None, metadata=dc_config(field_name="threshold")) - time_window: str | None = dc_field(default=None, metadata=dc_config(field_name="time_window")) - harm_labels: list[str] | None = dc_field(default=None, metadata=dc_config(field_name="harm_labels")) + threshold: int | None = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + time_window: str | None = dc_field( + default=None, metadata=dc_config(field_name="time_window") + ) + harm_labels: list[str] | None = dc_field( + default=None, metadata=dc_config(field_name="harm_labels") + ) + @dataclass class VideoSettings(DataClassJsonMixin): - access_request_enabled: bool = dc_field(metadata=dc_config(field_name="access_request_enabled")) - camera_default_on: bool = dc_field(metadata=dc_config(field_name="camera_default_on")) + access_request_enabled: bool = dc_field( + metadata=dc_config(field_name="access_request_enabled") + ) + camera_default_on: bool = dc_field( + metadata=dc_config(field_name="camera_default_on") + ) camera_facing: str = dc_field(metadata=dc_config(field_name="camera_facing")) enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - target_resolution: 'TargetResolution' = dc_field(metadata=dc_config(field_name="target_resolution")) + target_resolution: "TargetResolution" = dc_field( + metadata=dc_config(field_name="target_resolution") + ) + @dataclass class VideoSettingsRequest(DataClassJsonMixin): - access_request_enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="access_request_enabled")) - camera_default_on: bool | None = dc_field(default=None, metadata=dc_config(field_name="camera_default_on")) - camera_facing: str | None = dc_field(default=None, metadata=dc_config(field_name="camera_facing")) - enabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="enabled")) - target_resolution: 'TargetResolution | None' = dc_field(default=None, metadata=dc_config(field_name="target_resolution")) + access_request_enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="access_request_enabled") + ) + camera_default_on: bool | None = dc_field( + default=None, metadata=dc_config(field_name="camera_default_on") + ) + camera_facing: str | None = dc_field( + default=None, metadata=dc_config(field_name="camera_facing") + ) + enabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + target_resolution: "TargetResolution | None" = dc_field( + default=None, metadata=dc_config(field_name="target_resolution") + ) + @dataclass class VideoSettingsResponse(DataClassJsonMixin): - access_request_enabled: bool = dc_field(metadata=dc_config(field_name="access_request_enabled")) - camera_default_on: bool = dc_field(metadata=dc_config(field_name="camera_default_on")) + access_request_enabled: bool = dc_field( + metadata=dc_config(field_name="access_request_enabled") + ) + camera_default_on: bool = dc_field( + metadata=dc_config(field_name="camera_default_on") + ) camera_facing: str = dc_field(metadata=dc_config(field_name="camera_facing")) enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - target_resolution: 'TargetResolution' = dc_field(metadata=dc_config(field_name="target_resolution")) + target_resolution: "TargetResolution" = dc_field( + metadata=dc_config(field_name="target_resolution") + ) + @dataclass class ViewerBehavior(DataClassJsonMixin): - connection_duration_p50_s: int = dc_field(metadata=dc_config(field_name="connection_duration_p50_s")) - connections_per_viewer_mean: float = dc_field(metadata=dc_config(field_name="connections_per_viewer_mean")) - median_watch_min: float = dc_field(metadata=dc_config(field_name="median_watch_min")) + connection_duration_p50_s: int = dc_field( + metadata=dc_config(field_name="connection_duration_p50_s") + ) + connections_per_viewer_mean: float = dc_field( + metadata=dc_config(field_name="connections_per_viewer_mean") + ) + median_watch_min: float = dc_field( + metadata=dc_config(field_name="median_watch_min") + ) note: str = dc_field(metadata=dc_config(field_name="note")) p90_watch_min: float = dc_field(metadata=dc_config(field_name="p90_watch_min")) - bounce_rate_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="bounce_rate_pct")) - connections_under_30s_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="connections_under_30s_pct")) - return_visit_rate_pct: float | None = dc_field(default=None, metadata=dc_config(field_name="return_visit_rate_pct")) + bounce_rate_pct: float | None = dc_field( + default=None, metadata=dc_config(field_name="bounce_rate_pct") + ) + connections_under_30s_pct: float | None = dc_field( + default=None, metadata=dc_config(field_name="connections_under_30s_pct") + ) + return_visit_rate_pct: float | None = dc_field( + default=None, metadata=dc_config(field_name="return_visit_rate_pct") + ) + @dataclass class VoteData(DataClassJsonMixin): - answer_text: str | None = dc_field(default=None, metadata=dc_config(field_name="answer_text")) - option_id: str | None = dc_field(default=None, metadata=dc_config(field_name="option_id")) + answer_text: str | None = dc_field( + default=None, metadata=dc_config(field_name="answer_text") + ) + option_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="option_id") + ) + @dataclass class WHEvent(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) + @dataclass class WHIPIngress(DataClassJsonMixin): # URL for a new whip input, every time a new link is created address: str = dc_field(metadata=dc_config(field_name="address")) + @dataclass class WSEvent(DataClassJsonMixin): - created_at: datetime = dc_field(metadata=dc_config(field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) type: str = dc_field(metadata=dc_config(field_name="type")) custom: dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - automoderation: bool | None = dc_field(default=None, metadata=dc_config(field_name="automoderation")) - channel_id: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_id")) - channel_last_message_at: datetime | None = dc_field(default=None, metadata=dc_config(field_name="channel_last_message_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"))) - channel_type: str | None = dc_field(default=None, metadata=dc_config(field_name="channel_type")) + automoderation: bool | None = dc_field( + default=None, metadata=dc_config(field_name="automoderation") + ) + channel_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_last_message_at: datetime | None = dc_field( + default=None, + metadata=dc_config( + field_name="channel_last_message_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + channel_type: str | None = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) cid: str | None = dc_field(default=None, metadata=dc_config(field_name="cid")) - connection_id: str | None = dc_field(default=None, metadata=dc_config(field_name="connection_id")) - parent_id: str | None = dc_field(default=None, metadata=dc_config(field_name="parent_id")) + connection_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="connection_id") + ) + parent_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) reason: str | None = dc_field(default=None, metadata=dc_config(field_name="reason")) team: str | None = dc_field(default=None, metadata=dc_config(field_name="team")) - thread_id: str | None = dc_field(default=None, metadata=dc_config(field_name="thread_id")) - user_id: str | None = dc_field(default=None, metadata=dc_config(field_name="user_id")) - watcher_count: int | None = dc_field(default=None, metadata=dc_config(field_name="watcher_count")) - automoderation_scores: 'ModerationResponse | None' = dc_field(default=None, metadata=dc_config(field_name="automoderation_scores")) + thread_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="thread_id") + ) + user_id: str | None = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + watcher_count: int | None = dc_field( + default=None, metadata=dc_config(field_name="watcher_count") + ) + automoderation_scores: "ModerationResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="automoderation_scores") + ) # Represents channel in chat - channel: 'ChannelResponse | None' = dc_field(default=None, metadata=dc_config(field_name="channel")) + channel: "ChannelResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) # User response object - created_by: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="created_by")) - me: 'OwnUserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="me")) - member: 'ChannelMemberResponse | None' = dc_field(default=None, metadata=dc_config(field_name="member")) + created_by: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) + me: "OwnUserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="me") + ) + member: "ChannelMemberResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="member") + ) # Represents any chat message - message: 'MessageResponse | None' = dc_field(default=None, metadata=dc_config(field_name="message")) - message_update: 'MessageUpdate | None' = dc_field(default=None, metadata=dc_config(field_name="message_update")) - poll: 'PollResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll")) - poll_vote: 'PollVoteResponseData | None' = dc_field(default=None, metadata=dc_config(field_name="poll_vote")) - reaction: 'ReactionResponse | None' = dc_field(default=None, metadata=dc_config(field_name="reaction")) - thread: 'ThreadResponse | None' = dc_field(default=None, metadata=dc_config(field_name="thread")) + message: "MessageResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + message_update: "MessageUpdate | None" = dc_field( + default=None, metadata=dc_config(field_name="message_update") + ) + poll: "PollResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="poll") + ) + poll_vote: "PollVoteResponseData | None" = dc_field( + default=None, metadata=dc_config(field_name="poll_vote") + ) + reaction: "ReactionResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="reaction") + ) + thread: "ThreadResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="thread") + ) # User response object - user: 'UserResponse | None' = dc_field(default=None, metadata=dc_config(field_name="user")) + user: "UserResponse | None" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + @dataclass class WebhookFailoverConfig(DataClassJsonMixin): - gcs_bucket: str | None = dc_field(default=None, metadata=dc_config(field_name="gcs_bucket")) - gcs_credentials: str | None = dc_field(default=None, metadata=dc_config(field_name="gcs_credentials")) - gcs_path: str | None = dc_field(default=None, metadata=dc_config(field_name="gcs_path")) + gcs_bucket: str | None = dc_field( + default=None, metadata=dc_config(field_name="gcs_bucket") + ) + gcs_credentials: str | None = dc_field( + default=None, metadata=dc_config(field_name="gcs_credentials") + ) + gcs_path: str | None = dc_field( + default=None, metadata=dc_config(field_name="gcs_path") + ) type: str | None = dc_field(default=None, metadata=dc_config(field_name="type")) + @dataclass class WrappedUnreadCountsResponse(DataClassJsonMixin): # Duration of the request in milliseconds duration: str = dc_field(metadata=dc_config(field_name="duration")) - total_unread_count: int = dc_field(metadata=dc_config(field_name="total_unread_count")) - total_unread_threads_count: int = dc_field(metadata=dc_config(field_name="total_unread_threads_count")) - channel_type: 'list[UnreadCountsChannelType]' = dc_field(metadata=dc_config(field_name="channel_type")) - channels: 'list[UnreadCountsChannel]' = dc_field(metadata=dc_config(field_name="channels")) - threads: 'list[UnreadCountsThread]' = dc_field(metadata=dc_config(field_name="threads")) - total_unread_count_by_team: 'dict[str, int] | None' = dc_field(default=None, metadata=dc_config(field_name="total_unread_count_by_team")) + total_unread_count: int = dc_field( + metadata=dc_config(field_name="total_unread_count") + ) + total_unread_threads_count: int = dc_field( + metadata=dc_config(field_name="total_unread_threads_count") + ) + channel_type: "list[UnreadCountsChannelType]" = dc_field( + metadata=dc_config(field_name="channel_type") + ) + channels: "list[UnreadCountsChannel]" = dc_field( + metadata=dc_config(field_name="channels") + ) + threads: "list[UnreadCountsThread]" = dc_field( + metadata=dc_config(field_name="threads") + ) + total_unread_count_by_team: "dict[str, int] | None" = dc_field( + default=None, metadata=dc_config(field_name="total_unread_count_by_team") + ) + @dataclass class XiaomiConfig(DataClassJsonMixin): - disabled: bool | None = dc_field(default=None, metadata=dc_config(field_name="Disabled")) - package_name: str | None = dc_field(default=None, metadata=dc_config(field_name="package_name")) + disabled: bool | None = dc_field( + default=None, metadata=dc_config(field_name="Disabled") + ) + package_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="package_name") + ) secret: str | None = dc_field(default=None, metadata=dc_config(field_name="secret")) + @dataclass class XiaomiConfigFields(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - package_name: str | None = dc_field(default=None, metadata=dc_config(field_name="package_name")) + package_name: str | None = dc_field( + default=None, metadata=dc_config(field_name="package_name") + ) secret: str | None = dc_field(default=None, metadata=dc_config(field_name="secret")) - - - - - - - - - - diff --git a/getstream/moderation/async_rest_client.py b/getstream/moderation/async_rest_client.py index 1bcf8b01..7284b3b0 100644 --- a/getstream/moderation/async_rest_client.py +++ b/getstream/moderation/async_rest_client.py @@ -1,4 +1,3 @@ - # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import AsyncBaseClient from getstream.common import telemetry @@ -8,8 +7,14 @@ class ModerationRestClient(AsyncBaseClient): - - def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): + def __init__( + self, + api_key: str, + base_url: str, + timeout: float, + token: str, + user_agent: str = None, + ): """ Initializes ModerationClient with BaseClient instance :param api_key: A string representing the client's API key @@ -26,306 +31,1068 @@ def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user user_agent=user_agent, ) - @telemetry.operation_name("getstream.api.moderation.get_action_config") - async def get_action_config(self, queue_type: Optional[str] = None, entity_type: Optional[str] = None, exclude_defaults: Optional[bool] = None, only_defaults: Optional[bool] = None, user_id: Optional[str] = None) -> StreamResponse[GetActionConfigResponse]: - query_params = build_query_param(queue_type=queue_type, entity_type=entity_type, exclude_defaults=exclude_defaults, only_defaults=only_defaults, user_id=user_id) - return await self.get("/api/v2/moderation/action_config", GetActionConfigResponse, query_params=query_params) - + async def get_action_config( + self, + queue_type: Optional[str] = None, + entity_type: Optional[str] = None, + exclude_defaults: Optional[bool] = None, + only_defaults: Optional[bool] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[GetActionConfigResponse]: + query_params = build_query_param( + queue_type=queue_type, + entity_type=entity_type, + exclude_defaults=exclude_defaults, + only_defaults=only_defaults, + user_id=user_id, + ) + return await self.get( + "/api/v2/moderation/action_config", + GetActionConfigResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.moderation.upsert_action_config") - async def upsert_action_config(self, action: str, entity_type: str, order: int, description: Optional[str] = None, icon: Optional[str] = None, id: Optional[str] = None, queue_type: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpsertActionConfigResponse]: - json = UpsertActionConfigRequest(action=action, entity_type=entity_type, order=order, description=description, icon=icon, id=id, queue_type=queue_type, user_id=user_id, custom=custom, user=user).to_dict() - return await self.post("/api/v2/moderation/action_config", UpsertActionConfigResponse, json=json) - + async def upsert_action_config( + self, + action: str, + entity_type: str, + order: int, + description: Optional[str] = None, + icon: Optional[str] = None, + id: Optional[str] = None, + queue_type: Optional[str] = None, + user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpsertActionConfigResponse]: + json = UpsertActionConfigRequest( + action=action, + entity_type=entity_type, + order=order, + description=description, + icon=icon, + id=id, + queue_type=queue_type, + user_id=user_id, + custom=custom, + user=user, + ).to_dict() + return await self.post( + "/api/v2/moderation/action_config", UpsertActionConfigResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.bulk_upsert_action_config") - async def bulk_upsert_action_config(self, action_configs: List[UpsertActionConfigItem], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[BulkUpsertActionConfigResponse]: - json = BulkUpsertActionConfigRequest(action_configs=action_configs, user_id=user_id, user=user).to_dict() - return await self.post("/api/v2/moderation/action_config/bulk", BulkUpsertActionConfigResponse, json=json) - + async def bulk_upsert_action_config( + self, + action_configs: List[UpsertActionConfigItem], + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[BulkUpsertActionConfigResponse]: + json = BulkUpsertActionConfigRequest( + action_configs=action_configs, user_id=user_id, user=user + ).to_dict() + return await self.post( + "/api/v2/moderation/action_config/bulk", + BulkUpsertActionConfigResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.bulk_delete_action_config") - async def bulk_delete_action_config(self, ids: List[str], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[BulkDeleteActionConfigResponse]: - json = BulkDeleteActionConfigRequest(ids=ids, user_id=user_id, user=user).to_dict() - return await self.post("/api/v2/moderation/action_config/bulk_delete", BulkDeleteActionConfigResponse, json=json) - + async def bulk_delete_action_config( + self, + ids: List[str], + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[BulkDeleteActionConfigResponse]: + json = BulkDeleteActionConfigRequest( + ids=ids, user_id=user_id, user=user + ).to_dict() + return await self.post( + "/api/v2/moderation/action_config/bulk_delete", + BulkDeleteActionConfigResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.delete_action_config") - async def delete_action_config(self, id: str, user_id: Optional[str] = None) -> StreamResponse[DeleteActionConfigResponse]: + async def delete_action_config( + self, id: str, user_id: Optional[str] = None + ) -> StreamResponse[DeleteActionConfigResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "id": id, + "id": id, } - return await self.delete("/api/v2/moderation/action_config/{id}", DeleteActionConfigResponse, query_params=query_params, path_params=path_params) - + return await self.delete( + "/api/v2/moderation/action_config/{id}", + DeleteActionConfigResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.insert_action_log") - async def insert_action_log(self, action_type: str, entity_creator_id: str, entity_id: str, entity_type: str, reason: Optional[str] = None, reporter_type: Optional[str] = None, reporter_user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[InsertActionLogResponse]: - json = InsertActionLogRequest(action_type=action_type, entity_creator_id=entity_creator_id, entity_id=entity_id, entity_type=entity_type, reason=reason, reporter_type=reporter_type, reporter_user_id=reporter_user_id, custom=custom).to_dict() - return await self.post("/api/v2/moderation/action_logs", InsertActionLogResponse, json=json) - + async def insert_action_log( + self, + action_type: str, + entity_creator_id: str, + entity_id: str, + entity_type: str, + reason: Optional[str] = None, + reporter_type: Optional[str] = None, + reporter_user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + ) -> StreamResponse[InsertActionLogResponse]: + json = InsertActionLogRequest( + action_type=action_type, + entity_creator_id=entity_creator_id, + entity_id=entity_id, + entity_type=entity_type, + reason=reason, + reporter_type=reporter_type, + reporter_user_id=reporter_user_id, + custom=custom, + ).to_dict() + return await self.post( + "/api/v2/moderation/action_logs", InsertActionLogResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.analyze") - async def analyze(self, async_response: Optional[bool] = None, config_key: Optional[str] = None, content_published_at: Optional[datetime] = None, entity_creator_id: Optional[str] = None, entity_id: Optional[str] = None, entity_type: Optional[str] = None, user_id: Optional[str] = None, content_ids: Optional[Dict[str, str]] = None, custom: Optional[Dict[str, object]] = None, texts: Optional[Dict[str, str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[AnalyzeResponse]: - json = AnalyzeRequest(async_response=async_response, config_key=config_key, content_published_at=content_published_at, entity_creator_id=entity_creator_id, entity_id=entity_id, entity_type=entity_type, user_id=user_id, content_ids=content_ids, custom=custom, texts=texts, user=user).to_dict() + async def analyze( + self, + async_response: Optional[bool] = None, + config_key: Optional[str] = None, + content_published_at: Optional[datetime] = None, + entity_creator_id: Optional[str] = None, + entity_id: Optional[str] = None, + entity_type: Optional[str] = None, + user_id: Optional[str] = None, + content_ids: Optional[Dict[str, str]] = None, + custom: Optional[Dict[str, object]] = None, + texts: Optional[Dict[str, str]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[AnalyzeResponse]: + json = AnalyzeRequest( + async_response=async_response, + config_key=config_key, + content_published_at=content_published_at, + entity_creator_id=entity_creator_id, + entity_id=entity_id, + entity_type=entity_type, + user_id=user_id, + content_ids=content_ids, + custom=custom, + texts=texts, + user=user, + ).to_dict() return await self.post("/api/v2/moderation/analyze", AnalyzeResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.appeal") - async def appeal(self, appeal_reason: str, entity_id: str, entity_type: str, review_queue_item_id: Optional[str] = None, user_id: Optional[str] = None, attachments: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[AppealResponse]: - json = AppealRequest(appeal_reason=appeal_reason, entity_id=entity_id, entity_type=entity_type, review_queue_item_id=review_queue_item_id, user_id=user_id, attachments=attachments, user=user).to_dict() + async def appeal( + self, + appeal_reason: str, + entity_id: str, + entity_type: str, + review_queue_item_id: Optional[str] = None, + user_id: Optional[str] = None, + attachments: Optional[List[str]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[AppealResponse]: + json = AppealRequest( + appeal_reason=appeal_reason, + entity_id=entity_id, + entity_type=entity_type, + review_queue_item_id=review_queue_item_id, + user_id=user_id, + attachments=attachments, + user=user, + ).to_dict() return await self.post("/api/v2/moderation/appeal", AppealResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.get_appeal") async def get_appeal(self, id: str) -> StreamResponse[GetAppealResponse]: path_params = { - "id": id, + "id": id, } - return await self.get("/api/v2/moderation/appeal/{id}", GetAppealResponse, path_params=path_params) - + return await self.get( + "/api/v2/moderation/appeal/{id}", GetAppealResponse, path_params=path_params + ) + @telemetry.operation_name("getstream.api.moderation.query_appeals") - async def query_appeals(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryAppealsResponse]: - json = QueryAppealsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return await self.post("/api/v2/moderation/appeals", QueryAppealsResponse, json=json) - + async def query_appeals( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryAppealsResponse]: + json = QueryAppealsRequest( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return await self.post( + "/api/v2/moderation/appeals", QueryAppealsResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.bulk_action_appeals") - async def bulk_action_appeals(self, action_type: str, appeal_ids: List[str], user_id: Optional[str] = None, mark_reviewed: Optional[MarkReviewedRequestPayload] = None, reject_appeal: Optional[RejectAppealRequestPayload] = None, restore: Optional[RestoreActionRequestPayload] = None, unban: Optional[UnbanActionRequestPayload] = None, unblock: Optional[UnblockActionRequestPayload] = None, user: Optional[UserRequest] = None) -> StreamResponse[BulkActionAppealsResponse]: - json = BulkActionAppealsRequest(action_type=action_type, appeal_ids=appeal_ids, user_id=user_id, mark_reviewed=mark_reviewed, reject_appeal=reject_appeal, restore=restore, unban=unban, unblock=unblock, user=user).to_dict() - return await self.post("/api/v2/moderation/appeals/bulk_action", BulkActionAppealsResponse, json=json) - + async def bulk_action_appeals( + self, + action_type: str, + appeal_ids: List[str], + user_id: Optional[str] = None, + mark_reviewed: Optional[MarkReviewedRequestPayload] = None, + reject_appeal: Optional[RejectAppealRequestPayload] = None, + restore: Optional[RestoreActionRequestPayload] = None, + unban: Optional[UnbanActionRequestPayload] = None, + unblock: Optional[UnblockActionRequestPayload] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[BulkActionAppealsResponse]: + json = BulkActionAppealsRequest( + action_type=action_type, + appeal_ids=appeal_ids, + user_id=user_id, + mark_reviewed=mark_reviewed, + reject_appeal=reject_appeal, + restore=restore, + unban=unban, + unblock=unblock, + user=user, + ).to_dict() + return await self.post( + "/api/v2/moderation/appeals/bulk_action", + BulkActionAppealsResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.ban") - async def ban(self, target_user_id: str, banned_by_id: Optional[str] = None, channel_cid: Optional[str] = None, delete_messages: Optional[str] = None, ip_ban: Optional[bool] = None, reason: Optional[str] = None, shadow: Optional[bool] = None, timeout: Optional[int] = None, banned_by: Optional[UserRequest] = None) -> StreamResponse[ModerationBanResponse]: - json = BanRequest(target_user_id=target_user_id, banned_by_id=banned_by_id, channel_cid=channel_cid, delete_messages=delete_messages, ip_ban=ip_ban, reason=reason, shadow=shadow, timeout=timeout, banned_by=banned_by).to_dict() - return await self.post("/api/v2/moderation/ban", ModerationBanResponse, json=json) - + async def ban( + self, + target_user_id: str, + banned_by_id: Optional[str] = None, + channel_cid: Optional[str] = None, + delete_messages: Optional[str] = None, + ip_ban: Optional[bool] = None, + reason: Optional[str] = None, + shadow: Optional[bool] = None, + timeout: Optional[int] = None, + banned_by: Optional[UserRequest] = None, + ) -> StreamResponse[ModerationBanResponse]: + json = BanRequest( + target_user_id=target_user_id, + banned_by_id=banned_by_id, + channel_cid=channel_cid, + delete_messages=delete_messages, + ip_ban=ip_ban, + reason=reason, + shadow=shadow, + timeout=timeout, + banned_by=banned_by, + ).to_dict() + return await self.post( + "/api/v2/moderation/ban", ModerationBanResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.bulk_image_moderation") - async def bulk_image_moderation(self, csv_file: str) -> StreamResponse[BulkImageModerationResponse]: + async def bulk_image_moderation( + self, csv_file: str + ) -> StreamResponse[BulkImageModerationResponse]: json = BulkImageModerationRequest(csv_file=csv_file).to_dict() - return await self.post("/api/v2/moderation/bulk_image_moderation", BulkImageModerationResponse, json=json) - + return await self.post( + "/api/v2/moderation/bulk_image_moderation", + BulkImageModerationResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.bypass") - async def bypass(self, enabled: bool, target_user_id: str) -> StreamResponse[BypassResponse]: + async def bypass( + self, enabled: bool, target_user_id: str + ) -> StreamResponse[BypassResponse]: json = BypassRequest(enabled=enabled, target_user_id=target_user_id).to_dict() return await self.post("/api/v2/moderation/bypass", BypassResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.check") - async def check(self, entity_creator_id: str, entity_id: str, entity_type: str, config_key: Optional[str] = None, config_team: Optional[str] = None, content_published_at: Optional[datetime] = None, test_mode: Optional[bool] = None, user_id: Optional[str] = None, config: Optional[ModerationConfig] = None, moderation_payload: Optional[ModerationPayload] = None, options: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[CheckResponse]: - json = CheckRequest(entity_creator_id=entity_creator_id, entity_id=entity_id, entity_type=entity_type, config_key=config_key, config_team=config_team, content_published_at=content_published_at, test_mode=test_mode, user_id=user_id, config=config, moderation_payload=moderation_payload, options=options, user=user).to_dict() + async def check( + self, + entity_creator_id: str, + entity_id: str, + entity_type: str, + config_key: Optional[str] = None, + config_team: Optional[str] = None, + content_published_at: Optional[datetime] = None, + test_mode: Optional[bool] = None, + user_id: Optional[str] = None, + config: Optional[ModerationConfig] = None, + moderation_payload: Optional[ModerationPayload] = None, + options: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[CheckResponse]: + json = CheckRequest( + entity_creator_id=entity_creator_id, + entity_id=entity_id, + entity_type=entity_type, + config_key=config_key, + config_team=config_team, + content_published_at=content_published_at, + test_mode=test_mode, + user_id=user_id, + config=config, + moderation_payload=moderation_payload, + options=options, + user=user, + ).to_dict() return await self.post("/api/v2/moderation/check", CheckResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.check_s3_access") - async def check_s3_access(self, s3_url: Optional[str] = None) -> StreamResponse[CheckS3AccessResponse]: + async def check_s3_access( + self, s3_url: Optional[str] = None + ) -> StreamResponse[CheckS3AccessResponse]: json = CheckS3AccessRequest(s3_url=s3_url).to_dict() - return await self.post("/api/v2/moderation/check_s3_access", CheckS3AccessResponse, json=json) - + return await self.post( + "/api/v2/moderation/check_s3_access", CheckS3AccessResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.upsert_config") - async def upsert_config(self, key: str, _async: Optional[bool] = None, team: Optional[str] = None, user_id: Optional[str] = None, ai_audio_config: Optional[AIAudioConfigRequest] = None, ai_image_config: Optional[AIImageConfig] = None, ai_text_config: Optional[AITextConfig] = None, ai_video_config: Optional[AIVideoConfigRequest] = None, automod_platform_circumvention_config: Optional[AutomodPlatformCircumventionConfig] = None, automod_semantic_filters_config: Optional[AutomodSemanticFiltersConfig] = None, automod_toxicity_config: Optional[AutomodToxicityConfig] = None, aws_rekognition_config: Optional[AIImageConfig] = None, block_list_config: Optional[BlockListConfig] = None, bodyguard_config: Optional[AITextConfig] = None, flood_config: Optional[FloodConfig] = None, google_vision_config: Optional[GoogleVisionConfig] = None, llm_config: Optional[LLMConfig] = None, rule_builder_config: Optional[RuleBuilderConfig] = None, user: Optional[UserRequest] = None, velocity_filter_config: Optional[VelocityFilterConfig] = None, video_call_rule_config: Optional[VideoCallRuleConfig] = None) -> StreamResponse[UpsertConfigResponse]: - json = UpsertConfigRequest(key=key, _async=_async, team=team, user_id=user_id, ai_audio_config=ai_audio_config, ai_image_config=ai_image_config, ai_text_config=ai_text_config, ai_video_config=ai_video_config, automod_platform_circumvention_config=automod_platform_circumvention_config, automod_semantic_filters_config=automod_semantic_filters_config, automod_toxicity_config=automod_toxicity_config, aws_rekognition_config=aws_rekognition_config, block_list_config=block_list_config, bodyguard_config=bodyguard_config, flood_config=flood_config, google_vision_config=google_vision_config, llm_config=llm_config, rule_builder_config=rule_builder_config, user=user, velocity_filter_config=velocity_filter_config, video_call_rule_config=video_call_rule_config).to_dict() - return await self.post("/api/v2/moderation/config", UpsertConfigResponse, json=json) - + async def upsert_config( + self, + key: str, + _async: Optional[bool] = None, + team: Optional[str] = None, + user_id: Optional[str] = None, + ai_audio_config: Optional[AIAudioConfigRequest] = None, + ai_image_config: Optional[AIImageConfig] = None, + ai_text_config: Optional[AITextConfig] = None, + ai_video_config: Optional[AIVideoConfigRequest] = None, + automod_platform_circumvention_config: Optional[ + AutomodPlatformCircumventionConfig + ] = None, + automod_semantic_filters_config: Optional[AutomodSemanticFiltersConfig] = None, + automod_toxicity_config: Optional[AutomodToxicityConfig] = None, + aws_rekognition_config: Optional[AIImageConfig] = None, + block_list_config: Optional[BlockListConfig] = None, + bodyguard_config: Optional[AITextConfig] = None, + flood_config: Optional[FloodConfig] = None, + google_vision_config: Optional[GoogleVisionConfig] = None, + llm_config: Optional[LLMConfig] = None, + rule_builder_config: Optional[RuleBuilderConfig] = None, + user: Optional[UserRequest] = None, + velocity_filter_config: Optional[VelocityFilterConfig] = None, + video_call_rule_config: Optional[VideoCallRuleConfig] = None, + ) -> StreamResponse[UpsertConfigResponse]: + json = UpsertConfigRequest( + key=key, + _async=_async, + team=team, + user_id=user_id, + ai_audio_config=ai_audio_config, + ai_image_config=ai_image_config, + ai_text_config=ai_text_config, + ai_video_config=ai_video_config, + automod_platform_circumvention_config=automod_platform_circumvention_config, + automod_semantic_filters_config=automod_semantic_filters_config, + automod_toxicity_config=automod_toxicity_config, + aws_rekognition_config=aws_rekognition_config, + block_list_config=block_list_config, + bodyguard_config=bodyguard_config, + flood_config=flood_config, + google_vision_config=google_vision_config, + llm_config=llm_config, + rule_builder_config=rule_builder_config, + user=user, + velocity_filter_config=velocity_filter_config, + video_call_rule_config=video_call_rule_config, + ).to_dict() + return await self.post( + "/api/v2/moderation/config", UpsertConfigResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.delete_config") - async def delete_config(self, key: str, team: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[DeleteModerationConfigResponse]: + async def delete_config( + self, key: str, team: Optional[str] = None, user_id: Optional[str] = None + ) -> StreamResponse[DeleteModerationConfigResponse]: query_params = build_query_param(team=team, user_id=user_id) path_params = { - "key": key, + "key": key, } - return await self.delete("/api/v2/moderation/config/{key}", DeleteModerationConfigResponse, query_params=query_params, path_params=path_params) - + return await self.delete( + "/api/v2/moderation/config/{key}", + DeleteModerationConfigResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.get_config") - async def get_config(self, key: str, team: Optional[str] = None) -> StreamResponse[GetConfigResponse]: + async def get_config( + self, key: str, team: Optional[str] = None + ) -> StreamResponse[GetConfigResponse]: query_params = build_query_param(team=team) path_params = { - "key": key, + "key": key, } - return await self.get("/api/v2/moderation/config/{key}", GetConfigResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/moderation/config/{key}", + GetConfigResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.query_moderation_configs") - async def query_moderation_configs(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryModerationConfigsResponse]: - json = QueryModerationConfigsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return await self.post("/api/v2/moderation/configs", QueryModerationConfigsResponse, json=json) - + async def query_moderation_configs( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryModerationConfigsResponse]: + json = QueryModerationConfigsRequest( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return await self.post( + "/api/v2/moderation/configs", QueryModerationConfigsResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.custom_check") - async def custom_check(self, entity_id: str, entity_type: str, flags: List[CustomCheckFlag], entity_creator_id: Optional[str] = None, user_id: Optional[str] = None, moderation_payload: Optional[ModerationPayloadRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[CustomCheckResponse]: - json = CustomCheckRequest(entity_id=entity_id, entity_type=entity_type, flags=flags, entity_creator_id=entity_creator_id, user_id=user_id, moderation_payload=moderation_payload, user=user).to_dict() - return await self.post("/api/v2/moderation/custom_check", CustomCheckResponse, json=json) - + async def custom_check( + self, + entity_id: str, + entity_type: str, + flags: List[CustomCheckFlag], + entity_creator_id: Optional[str] = None, + user_id: Optional[str] = None, + moderation_payload: Optional[ModerationPayloadRequest] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[CustomCheckResponse]: + json = CustomCheckRequest( + entity_id=entity_id, + entity_type=entity_type, + flags=flags, + entity_creator_id=entity_creator_id, + user_id=user_id, + moderation_payload=moderation_payload, + user=user, + ).to_dict() + return await self.post( + "/api/v2/moderation/custom_check", CustomCheckResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.v2_delete_template") - async def v2_delete_template(self) -> StreamResponse[DeleteModerationTemplateResponse]: - return await self.delete("/api/v2/moderation/feeds_moderation_template", DeleteModerationTemplateResponse) - + async def v2_delete_template( + self, + ) -> StreamResponse[DeleteModerationTemplateResponse]: + return await self.delete( + "/api/v2/moderation/feeds_moderation_template", + DeleteModerationTemplateResponse, + ) + @telemetry.operation_name("getstream.api.moderation.v2_query_templates") - async def v2_query_templates(self) -> StreamResponse[QueryFeedModerationTemplatesResponse]: - return await self.get("/api/v2/moderation/feeds_moderation_template", QueryFeedModerationTemplatesResponse) - + async def v2_query_templates( + self, + ) -> StreamResponse[QueryFeedModerationTemplatesResponse]: + return await self.get( + "/api/v2/moderation/feeds_moderation_template", + QueryFeedModerationTemplatesResponse, + ) + @telemetry.operation_name("getstream.api.moderation.v2_upsert_template") - async def v2_upsert_template(self, name: str, config: FeedsModerationTemplateConfigPayload) -> StreamResponse[UpsertModerationTemplateResponse]: + async def v2_upsert_template( + self, name: str, config: FeedsModerationTemplateConfigPayload + ) -> StreamResponse[UpsertModerationTemplateResponse]: json = UpsertModerationTemplateRequest(name=name, config=config).to_dict() - return await self.post("/api/v2/moderation/feeds_moderation_template", UpsertModerationTemplateResponse, json=json) - + return await self.post( + "/api/v2/moderation/feeds_moderation_template", + UpsertModerationTemplateResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.flag") - async def flag(self, entity_id: str, entity_type: str, entity_creator_id: Optional[str] = None, reason: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, moderation_payload: Optional[ModerationPayload] = None, user: Optional[UserRequest] = None) -> StreamResponse[FlagItemResponse]: - json = FlagRequest(entity_id=entity_id, entity_type=entity_type, entity_creator_id=entity_creator_id, reason=reason, user_id=user_id, custom=custom, moderation_payload=moderation_payload, user=user).to_dict() + async def flag( + self, + entity_id: str, + entity_type: str, + entity_creator_id: Optional[str] = None, + reason: Optional[str] = None, + user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + moderation_payload: Optional[ModerationPayload] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[FlagItemResponse]: + json = FlagRequest( + entity_id=entity_id, + entity_type=entity_type, + entity_creator_id=entity_creator_id, + reason=reason, + user_id=user_id, + custom=custom, + moderation_payload=moderation_payload, + user=user, + ).to_dict() return await self.post("/api/v2/moderation/flag", FlagItemResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.get_flag_count") - async def get_flag_count(self, entity_creator_id: str, entity_type: Optional[str] = None) -> StreamResponse[GetFlagCountResponse]: - json = GetFlagCountRequest(entity_creator_id=entity_creator_id, entity_type=entity_type).to_dict() - return await self.post("/api/v2/moderation/flag_count", GetFlagCountResponse, json=json) - + async def get_flag_count( + self, entity_creator_id: str, entity_type: Optional[str] = None + ) -> StreamResponse[GetFlagCountResponse]: + json = GetFlagCountRequest( + entity_creator_id=entity_creator_id, entity_type=entity_type + ).to_dict() + return await self.post( + "/api/v2/moderation/flag_count", GetFlagCountResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.query_moderation_flags") - async def query_moderation_flags(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryModerationFlagsResponse]: - json = QueryModerationFlagsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() - return await self.post("/api/v2/moderation/flags", QueryModerationFlagsResponse, json=json) - + async def query_moderation_flags( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryModerationFlagsResponse]: + json = QueryModerationFlagsRequest( + limit=limit, next=next, prev=prev, sort=sort, filter=filter + ).to_dict() + return await self.post( + "/api/v2/moderation/flags", QueryModerationFlagsResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.labels") - async def labels(self, content: str, category: Optional[str] = None, content_id: Optional[str] = None, content_type: Optional[str] = None, dry_run: Optional[bool] = None, policy: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[LabelsResponse]: - json = LabelsRequest(content=content, category=category, content_id=content_id, content_type=content_type, dry_run=dry_run, policy=policy, user_id=user_id).to_dict() + async def labels( + self, + content: str, + category: Optional[str] = None, + content_id: Optional[str] = None, + content_type: Optional[str] = None, + dry_run: Optional[bool] = None, + policy: Optional[str] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[LabelsResponse]: + json = LabelsRequest( + content=content, + category=category, + content_id=content_id, + content_type=content_type, + dry_run=dry_run, + policy=policy, + user_id=user_id, + ).to_dict() return await self.post("/api/v2/moderation/labels", LabelsResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.query_label_results") - async def query_label_results(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryLabelResultsResponse]: - json = QueryLabelResultsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return await self.post("/api/v2/moderation/labels/results", QueryLabelResultsResponse, json=json) - + async def query_label_results( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryLabelResultsResponse]: + json = QueryLabelResultsRequest( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return await self.post( + "/api/v2/moderation/labels/results", QueryLabelResultsResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.query_moderation_logs") - async def query_moderation_logs(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryModerationLogsResponse]: - json = QueryModerationLogsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return await self.post("/api/v2/moderation/logs", QueryModerationLogsResponse, json=json) - + async def query_moderation_logs( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryModerationLogsResponse]: + json = QueryModerationLogsRequest( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return await self.post( + "/api/v2/moderation/logs", QueryModerationLogsResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.upsert_moderation_rule") - async def upsert_moderation_rule(self, name: str, rule_type: str, cooldown_period: Optional[str] = None, description: Optional[str] = None, enabled: Optional[bool] = None, logic: Optional[str] = None, team: Optional[str] = None, user_id: Optional[str] = None, action_sequences: Optional[List[CallRuleActionSequence]] = None, conditions: Optional[List[RuleBuilderCondition]] = None, config_keys: Optional[List[str]] = None, groups: Optional[List[RuleBuilderConditionGroup]] = None, action: Optional[RuleBuilderAction] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpsertModerationRuleResponse]: - json = UpsertModerationRuleRequest(name=name, rule_type=rule_type, cooldown_period=cooldown_period, description=description, enabled=enabled, logic=logic, team=team, user_id=user_id, action_sequences=action_sequences, conditions=conditions, config_keys=config_keys, groups=groups, action=action, user=user).to_dict() - return await self.post("/api/v2/moderation/moderation_rule", UpsertModerationRuleResponse, json=json) - + async def upsert_moderation_rule( + self, + name: str, + rule_type: str, + cooldown_period: Optional[str] = None, + description: Optional[str] = None, + enabled: Optional[bool] = None, + logic: Optional[str] = None, + team: Optional[str] = None, + user_id: Optional[str] = None, + action_sequences: Optional[List[CallRuleActionSequence]] = None, + conditions: Optional[List[RuleBuilderCondition]] = None, + config_keys: Optional[List[str]] = None, + groups: Optional[List[RuleBuilderConditionGroup]] = None, + action: Optional[RuleBuilderAction] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpsertModerationRuleResponse]: + json = UpsertModerationRuleRequest( + name=name, + rule_type=rule_type, + cooldown_period=cooldown_period, + description=description, + enabled=enabled, + logic=logic, + team=team, + user_id=user_id, + action_sequences=action_sequences, + conditions=conditions, + config_keys=config_keys, + groups=groups, + action=action, + user=user, + ).to_dict() + return await self.post( + "/api/v2/moderation/moderation_rule", + UpsertModerationRuleResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.delete_moderation_rule") - async def delete_moderation_rule(self, id: str, user_id: Optional[str] = None) -> StreamResponse[DeleteModerationRuleResponse]: + async def delete_moderation_rule( + self, id: str, user_id: Optional[str] = None + ) -> StreamResponse[DeleteModerationRuleResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "id": id, + "id": id, } - return await self.delete("/api/v2/moderation/moderation_rule/{id}", DeleteModerationRuleResponse, query_params=query_params, path_params=path_params) - + return await self.delete( + "/api/v2/moderation/moderation_rule/{id}", + DeleteModerationRuleResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.get_moderation_rule") - async def get_moderation_rule(self, id: str) -> StreamResponse[GetModerationRuleResponse]: + async def get_moderation_rule( + self, id: str + ) -> StreamResponse[GetModerationRuleResponse]: path_params = { - "id": id, + "id": id, } - return await self.get("/api/v2/moderation/moderation_rule/{id}", GetModerationRuleResponse, path_params=path_params) - + return await self.get( + "/api/v2/moderation/moderation_rule/{id}", + GetModerationRuleResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.query_moderation_rules") - async def query_moderation_rules(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryModerationRulesResponse]: - json = QueryModerationRulesRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return await self.post("/api/v2/moderation/moderation_rules", QueryModerationRulesResponse, json=json) - + async def query_moderation_rules( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryModerationRulesResponse]: + json = QueryModerationRulesRequest( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return await self.post( + "/api/v2/moderation/moderation_rules", + QueryModerationRulesResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.mute") - async def mute(self, target_ids: List[str], timeout: Optional[int] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[MuteResponse]: - json = MuteRequest(target_ids=target_ids, timeout=timeout, user_id=user_id, user=user).to_dict() + async def mute( + self, + target_ids: List[str], + timeout: Optional[int] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[MuteResponse]: + json = MuteRequest( + target_ids=target_ids, timeout=timeout, user_id=user_id, user=user + ).to_dict() return await self.post("/api/v2/moderation/mute", MuteResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.get_policy_test_run") - async def get_policy_test_run(self, id: str) -> StreamResponse[PolicyTestRunResponse]: + async def get_policy_test_run( + self, id: str + ) -> StreamResponse[PolicyTestRunResponse]: path_params = { - "id": id, + "id": id, } - return await self.get("/api/v2/moderation/policy_tests/runs/{id}", PolicyTestRunResponse, path_params=path_params) - + return await self.get( + "/api/v2/moderation/policy_tests/runs/{id}", + PolicyTestRunResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.list_policy_test_sets") async def list_policy_test_sets(self) -> StreamResponse[PolicyTestSetListResponse]: - return await self.get("/api/v2/moderation/policy_tests/sets", PolicyTestSetListResponse) - + return await self.get( + "/api/v2/moderation/policy_tests/sets", PolicyTestSetListResponse + ) + @telemetry.operation_name("getstream.api.moderation.create_policy_test_set") - async def create_policy_test_set(self, name: str, config_key: Optional[str] = None, mode: Optional[str] = None, team: Optional[str] = None, rows: Optional[List[PolicyTestRow]] = None, seed: Optional[PolicyTestSeedSpec] = None) -> StreamResponse[PolicyTestSetResponse]: - json = CreatePolicyTestSetRequest(name=name, config_key=config_key, mode=mode, team=team, rows=rows, seed=seed).to_dict() - return await self.post("/api/v2/moderation/policy_tests/sets", PolicyTestSetResponse, json=json) - + async def create_policy_test_set( + self, + name: str, + config_key: Optional[str] = None, + mode: Optional[str] = None, + team: Optional[str] = None, + rows: Optional[List[PolicyTestRow]] = None, + seed: Optional[PolicyTestSeedSpec] = None, + ) -> StreamResponse[PolicyTestSetResponse]: + json = CreatePolicyTestSetRequest( + name=name, config_key=config_key, mode=mode, team=team, rows=rows, seed=seed + ).to_dict() + return await self.post( + "/api/v2/moderation/policy_tests/sets", PolicyTestSetResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.delete_policy_test_set") async def delete_policy_test_set(self, id: str) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - return await self.delete("/api/v2/moderation/policy_tests/sets/{id}", Response, path_params=path_params) - + return await self.delete( + "/api/v2/moderation/policy_tests/sets/{id}", + Response, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.get_policy_test_set") - async def get_policy_test_set(self, id: str) -> StreamResponse[PolicyTestSetResponse]: + async def get_policy_test_set( + self, id: str + ) -> StreamResponse[PolicyTestSetResponse]: path_params = { - "id": id, + "id": id, } - return await self.get("/api/v2/moderation/policy_tests/sets/{id}", PolicyTestSetResponse, path_params=path_params) - + return await self.get( + "/api/v2/moderation/policy_tests/sets/{id}", + PolicyTestSetResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.start_policy_test_run") - async def start_policy_test_run(self, id: str) -> StreamResponse[PolicyTestRunResponse]: + async def start_policy_test_run( + self, id: str + ) -> StreamResponse[PolicyTestRunResponse]: path_params = { - "id": id, + "id": id, } - return await self.post("/api/v2/moderation/policy_tests/sets/{id}/runs", PolicyTestRunResponse, path_params=path_params) - + return await self.post( + "/api/v2/moderation/policy_tests/sets/{id}/runs", + PolicyTestRunResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.list_queues") - async def list_queues(self, user_id: Optional[str] = None) -> StreamResponse[ListQueuesResponse]: + async def list_queues( + self, user_id: Optional[str] = None + ) -> StreamResponse[ListQueuesResponse]: query_params = build_query_param(user_id=user_id) - return await self.get("/api/v2/moderation/queues", ListQueuesResponse, query_params=query_params) - + return await self.get( + "/api/v2/moderation/queues", ListQueuesResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.moderation.create_queue") - async def create_queue(self, name: str, type: str, description: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[Dict[str, object]]] = None, filters: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueueResponse]: - json = CreateQueueRequest(name=name, type=type, description=description, user_id=user_id, sort=sort, filters=filters, user=user).to_dict() + async def create_queue( + self, + name: str, + type: str, + description: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[Dict[str, object]]] = None, + filters: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueueResponse]: + json = CreateQueueRequest( + name=name, + type=type, + description=description, + user_id=user_id, + sort=sort, + filters=filters, + user=user, + ).to_dict() return await self.post("/api/v2/moderation/queues", QueueResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.get_queue") - async def get_queue(self, id: str, user_id: Optional[str] = None) -> StreamResponse[QueueResponse]: + async def get_queue( + self, id: str, user_id: Optional[str] = None + ) -> StreamResponse[QueueResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "id": id, + "id": id, } - return await self.get("/api/v2/moderation/queues/{id}", QueueResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/moderation/queues/{id}", + QueueResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.update_queue") - async def update_queue(self, id: str, description: Optional[str] = None, name: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[Dict[str, object]]] = None, filters: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueueResponse]: + async def update_queue( + self, + id: str, + description: Optional[str] = None, + name: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[Dict[str, object]]] = None, + filters: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueueResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateQueueRequest(description=description, name=name, user_id=user_id, sort=sort, filters=filters, user=user).to_dict() - return await self.patch("/api/v2/moderation/queues/{id}", QueueResponse, path_params=path_params, json=json) - + json = UpdateQueueRequest( + description=description, + name=name, + user_id=user_id, + sort=sort, + filters=filters, + user=user, + ).to_dict() + return await self.patch( + "/api/v2/moderation/queues/{id}", + QueueResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.delete_queue") - async def delete_queue(self, id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueueResponse]: + async def delete_queue( + self, id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None + ) -> StreamResponse[QueueResponse]: path_params = { - "id": id, + "id": id, } json = DeleteQueueRequest(user_id=user_id, user=user).to_dict() - return await self.post("/api/v2/moderation/queues/{id}/delete", QueueResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/moderation/queues/{id}/delete", + QueueResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.query_review_queue") - async def query_review_queue(self, exclude_default_action_config: Optional[bool] = None, limit: Optional[int] = None, lock_count: Optional[int] = None, lock_duration: Optional[int] = None, lock_items: Optional[bool] = None, next: Optional[str] = None, prev: Optional[str] = None, stats_only: Optional[bool] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryReviewQueueResponse]: - json = QueryReviewQueueRequest(exclude_default_action_config=exclude_default_action_config, limit=limit, lock_count=lock_count, lock_duration=lock_duration, lock_items=lock_items, next=next, prev=prev, stats_only=stats_only, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return await self.post("/api/v2/moderation/review_queue", QueryReviewQueueResponse, json=json) - + async def query_review_queue( + self, + exclude_default_action_config: Optional[bool] = None, + limit: Optional[int] = None, + lock_count: Optional[int] = None, + lock_duration: Optional[int] = None, + lock_items: Optional[bool] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + stats_only: Optional[bool] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryReviewQueueResponse]: + json = QueryReviewQueueRequest( + exclude_default_action_config=exclude_default_action_config, + limit=limit, + lock_count=lock_count, + lock_duration=lock_duration, + lock_items=lock_items, + next=next, + prev=prev, + stats_only=stats_only, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return await self.post( + "/api/v2/moderation/review_queue", QueryReviewQueueResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.get_review_queue_item") - async def get_review_queue_item(self, id: str) -> StreamResponse[GetReviewQueueItemResponse]: + async def get_review_queue_item( + self, id: str + ) -> StreamResponse[GetReviewQueueItemResponse]: path_params = { - "id": id, + "id": id, } - return await self.get("/api/v2/moderation/review_queue/{id}", GetReviewQueueItemResponse, path_params=path_params) - + return await self.get( + "/api/v2/moderation/review_queue/{id}", + GetReviewQueueItemResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.get_setup_session") async def get_setup_session(self) -> StreamResponse[GetSetupSessionResponse]: return await self.get("/api/v2/moderation/setup", GetSetupSessionResponse) - + @telemetry.operation_name("getstream.api.moderation.upsert_setup_session") - async def upsert_setup_session(self, current_step: str, status: str, setup_data: Optional[Dict[str, object]] = None) -> StreamResponse[UpsertSetupSessionResponse]: - json = UpsertSetupSessionRequest(current_step=current_step, status=status, setup_data=setup_data).to_dict() - return await self.post("/api/v2/moderation/setup", UpsertSetupSessionResponse, json=json) - + async def upsert_setup_session( + self, + current_step: str, + status: str, + setup_data: Optional[Dict[str, object]] = None, + ) -> StreamResponse[UpsertSetupSessionResponse]: + json = UpsertSetupSessionRequest( + current_step=current_step, status=status, setup_data=setup_data + ).to_dict() + return await self.post( + "/api/v2/moderation/setup", UpsertSetupSessionResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.submit_action") - async def submit_action(self, action_type: str, appeal_id: Optional[str] = None, item_id: Optional[str] = None, user_id: Optional[str] = None, ban: Optional[BanActionRequestPayload] = None, block: Optional[BlockActionRequestPayload] = None, bypass: Optional[BypassActionRequest] = None, custom: Optional[CustomActionRequestPayload] = None, delete_activity: Optional[DeleteActivityRequestPayload] = None, delete_comment: Optional[DeleteCommentRequestPayload] = None, delete_message: Optional[DeleteMessageRequestPayload] = None, delete_reaction: Optional[DeleteReactionRequestPayload] = None, delete_user: Optional[DeleteUserRequestPayload] = None, delete_user_messages: Optional[DeleteUserMessagesRequestPayload] = None, escalate: Optional[EscalatePayload] = None, flag: Optional[FlagRequest] = None, mark_reviewed: Optional[MarkReviewedRequestPayload] = None, reject_appeal: Optional[RejectAppealRequestPayload] = None, restore: Optional[RestoreActionRequestPayload] = None, shadow_block: Optional[ShadowBlockActionRequestPayload] = None, unban: Optional[UnbanActionRequestPayload] = None, unblock: Optional[UnblockActionRequestPayload] = None, user: Optional[UserRequest] = None) -> StreamResponse[SubmitActionResponse]: - json = SubmitActionRequest(action_type=action_type, appeal_id=appeal_id, item_id=item_id, user_id=user_id, ban=ban, block=block, bypass=bypass, custom=custom, delete_activity=delete_activity, delete_comment=delete_comment, delete_message=delete_message, delete_reaction=delete_reaction, delete_user=delete_user, delete_user_messages=delete_user_messages, escalate=escalate, flag=flag, mark_reviewed=mark_reviewed, reject_appeal=reject_appeal, restore=restore, shadow_block=shadow_block, unban=unban, unblock=unblock, user=user).to_dict() - return await self.post("/api/v2/moderation/submit_action", SubmitActionResponse, json=json) - + async def submit_action( + self, + action_type: str, + appeal_id: Optional[str] = None, + item_id: Optional[str] = None, + user_id: Optional[str] = None, + ban: Optional[BanActionRequestPayload] = None, + block: Optional[BlockActionRequestPayload] = None, + bypass: Optional[BypassActionRequest] = None, + custom: Optional[CustomActionRequestPayload] = None, + delete_activity: Optional[DeleteActivityRequestPayload] = None, + delete_comment: Optional[DeleteCommentRequestPayload] = None, + delete_message: Optional[DeleteMessageRequestPayload] = None, + delete_reaction: Optional[DeleteReactionRequestPayload] = None, + delete_user: Optional[DeleteUserRequestPayload] = None, + delete_user_messages: Optional[DeleteUserMessagesRequestPayload] = None, + escalate: Optional[EscalatePayload] = None, + flag: Optional[FlagRequest] = None, + mark_reviewed: Optional[MarkReviewedRequestPayload] = None, + reject_appeal: Optional[RejectAppealRequestPayload] = None, + restore: Optional[RestoreActionRequestPayload] = None, + shadow_block: Optional[ShadowBlockActionRequestPayload] = None, + unban: Optional[UnbanActionRequestPayload] = None, + unblock: Optional[UnblockActionRequestPayload] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[SubmitActionResponse]: + json = SubmitActionRequest( + action_type=action_type, + appeal_id=appeal_id, + item_id=item_id, + user_id=user_id, + ban=ban, + block=block, + bypass=bypass, + custom=custom, + delete_activity=delete_activity, + delete_comment=delete_comment, + delete_message=delete_message, + delete_reaction=delete_reaction, + delete_user=delete_user, + delete_user_messages=delete_user_messages, + escalate=escalate, + flag=flag, + mark_reviewed=mark_reviewed, + reject_appeal=reject_appeal, + restore=restore, + shadow_block=shadow_block, + unban=unban, + unblock=unblock, + user=user, + ).to_dict() + return await self.post( + "/api/v2/moderation/submit_action", SubmitActionResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.submit_moderation_feedback") - async def submit_moderation_feedback(self, message: str, published_at: str, reference: str, channel_id: Optional[str] = None, current_recommended_action: Optional[str] = None, description: Optional[str] = None, expected_recommended_action: Optional[str] = None, current_labels: Optional[List[str]] = None, expected_labels: Optional[List[str]] = None) -> StreamResponse[SubmitModerationFeedbackResponse]: - json = SubmitModerationFeedbackRequest(message=message, published_at=published_at, reference=reference, channel_id=channel_id, current_recommended_action=current_recommended_action, description=description, expected_recommended_action=expected_recommended_action, current_labels=current_labels, expected_labels=expected_labels).to_dict() - return await self.post("/api/v2/moderation/submit_moderation_feedback", SubmitModerationFeedbackResponse, json=json) - + async def submit_moderation_feedback( + self, + message: str, + published_at: str, + reference: str, + channel_id: Optional[str] = None, + current_recommended_action: Optional[str] = None, + description: Optional[str] = None, + expected_recommended_action: Optional[str] = None, + current_labels: Optional[List[str]] = None, + expected_labels: Optional[List[str]] = None, + ) -> StreamResponse[SubmitModerationFeedbackResponse]: + json = SubmitModerationFeedbackRequest( + message=message, + published_at=published_at, + reference=reference, + channel_id=channel_id, + current_recommended_action=current_recommended_action, + description=description, + expected_recommended_action=expected_recommended_action, + current_labels=current_labels, + expected_labels=expected_labels, + ).to_dict() + return await self.post( + "/api/v2/moderation/submit_moderation_feedback", + SubmitModerationFeedbackResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.unban") - async def unban(self, target_user_id: str, channel_cid: Optional[str] = None, created_by: Optional[str] = None, unbanned_by_id: Optional[str] = None, unbanned_by: Optional[UserRequest] = None) -> StreamResponse[UnbanResponse]: - query_params = build_query_param(target_user_id=target_user_id, channel_cid=channel_cid, created_by=created_by) - json = UnbanRequest(unbanned_by_id=unbanned_by_id, unbanned_by=unbanned_by).to_dict() - return await self.post("/api/v2/moderation/unban", UnbanResponse, query_params=query_params, json=json) - + async def unban( + self, + target_user_id: str, + channel_cid: Optional[str] = None, + created_by: Optional[str] = None, + unbanned_by_id: Optional[str] = None, + unbanned_by: Optional[UserRequest] = None, + ) -> StreamResponse[UnbanResponse]: + query_params = build_query_param( + target_user_id=target_user_id, + channel_cid=channel_cid, + created_by=created_by, + ) + json = UnbanRequest( + unbanned_by_id=unbanned_by_id, unbanned_by=unbanned_by + ).to_dict() + return await self.post( + "/api/v2/moderation/unban", + UnbanResponse, + query_params=query_params, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.unmute") - async def unmute(self, target_ids: List[str], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[UnmuteResponse]: - json = UnmuteRequest(target_ids=target_ids, user_id=user_id, user=user).to_dict() + async def unmute( + self, + target_ids: List[str], + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UnmuteResponse]: + json = UnmuteRequest( + target_ids=target_ids, user_id=user_id, user=user + ).to_dict() return await self.post("/api/v2/moderation/unmute", UnmuteResponse, json=json) - \ No newline at end of file diff --git a/getstream/moderation/rest_client.py b/getstream/moderation/rest_client.py index e159eeeb..3ee39076 100644 --- a/getstream/moderation/rest_client.py +++ b/getstream/moderation/rest_client.py @@ -1,4 +1,3 @@ - # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import BaseClient from getstream.common import telemetry @@ -8,8 +7,14 @@ class ModerationRestClient(BaseClient): - - def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): + def __init__( + self, + api_key: str, + base_url: str, + timeout: float, + token: str, + user_agent: str = None, + ): """ Initializes ModerationClient with BaseClient instance :param api_key: A string representing the client's API key @@ -26,306 +31,1052 @@ def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user user_agent=user_agent, ) - @telemetry.operation_name("getstream.api.moderation.get_action_config") - def get_action_config(self, queue_type: Optional[str] = None, entity_type: Optional[str] = None, exclude_defaults: Optional[bool] = None, only_defaults: Optional[bool] = None, user_id: Optional[str] = None) -> StreamResponse[GetActionConfigResponse]: - query_params = build_query_param(queue_type=queue_type, entity_type=entity_type, exclude_defaults=exclude_defaults, only_defaults=only_defaults, user_id=user_id) - return self.get("/api/v2/moderation/action_config", GetActionConfigResponse, query_params=query_params) - + def get_action_config( + self, + queue_type: Optional[str] = None, + entity_type: Optional[str] = None, + exclude_defaults: Optional[bool] = None, + only_defaults: Optional[bool] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[GetActionConfigResponse]: + query_params = build_query_param( + queue_type=queue_type, + entity_type=entity_type, + exclude_defaults=exclude_defaults, + only_defaults=only_defaults, + user_id=user_id, + ) + return self.get( + "/api/v2/moderation/action_config", + GetActionConfigResponse, + query_params=query_params, + ) + @telemetry.operation_name("getstream.api.moderation.upsert_action_config") - def upsert_action_config(self, action: str, entity_type: str, order: int, description: Optional[str] = None, icon: Optional[str] = None, id: Optional[str] = None, queue_type: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpsertActionConfigResponse]: - json = UpsertActionConfigRequest(action=action, entity_type=entity_type, order=order, description=description, icon=icon, id=id, queue_type=queue_type, user_id=user_id, custom=custom, user=user).to_dict() - return self.post("/api/v2/moderation/action_config", UpsertActionConfigResponse, json=json) - + def upsert_action_config( + self, + action: str, + entity_type: str, + order: int, + description: Optional[str] = None, + icon: Optional[str] = None, + id: Optional[str] = None, + queue_type: Optional[str] = None, + user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpsertActionConfigResponse]: + json = UpsertActionConfigRequest( + action=action, + entity_type=entity_type, + order=order, + description=description, + icon=icon, + id=id, + queue_type=queue_type, + user_id=user_id, + custom=custom, + user=user, + ).to_dict() + return self.post( + "/api/v2/moderation/action_config", UpsertActionConfigResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.bulk_upsert_action_config") - def bulk_upsert_action_config(self, action_configs: List[UpsertActionConfigItem], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[BulkUpsertActionConfigResponse]: - json = BulkUpsertActionConfigRequest(action_configs=action_configs, user_id=user_id, user=user).to_dict() - return self.post("/api/v2/moderation/action_config/bulk", BulkUpsertActionConfigResponse, json=json) - + def bulk_upsert_action_config( + self, + action_configs: List[UpsertActionConfigItem], + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[BulkUpsertActionConfigResponse]: + json = BulkUpsertActionConfigRequest( + action_configs=action_configs, user_id=user_id, user=user + ).to_dict() + return self.post( + "/api/v2/moderation/action_config/bulk", + BulkUpsertActionConfigResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.bulk_delete_action_config") - def bulk_delete_action_config(self, ids: List[str], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[BulkDeleteActionConfigResponse]: - json = BulkDeleteActionConfigRequest(ids=ids, user_id=user_id, user=user).to_dict() - return self.post("/api/v2/moderation/action_config/bulk_delete", BulkDeleteActionConfigResponse, json=json) - + def bulk_delete_action_config( + self, + ids: List[str], + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[BulkDeleteActionConfigResponse]: + json = BulkDeleteActionConfigRequest( + ids=ids, user_id=user_id, user=user + ).to_dict() + return self.post( + "/api/v2/moderation/action_config/bulk_delete", + BulkDeleteActionConfigResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.delete_action_config") - def delete_action_config(self, id: str, user_id: Optional[str] = None) -> StreamResponse[DeleteActionConfigResponse]: + def delete_action_config( + self, id: str, user_id: Optional[str] = None + ) -> StreamResponse[DeleteActionConfigResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "id": id, + "id": id, } - return self.delete("/api/v2/moderation/action_config/{id}", DeleteActionConfigResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/moderation/action_config/{id}", + DeleteActionConfigResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.insert_action_log") - def insert_action_log(self, action_type: str, entity_creator_id: str, entity_id: str, entity_type: str, reason: Optional[str] = None, reporter_type: Optional[str] = None, reporter_user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[InsertActionLogResponse]: - json = InsertActionLogRequest(action_type=action_type, entity_creator_id=entity_creator_id, entity_id=entity_id, entity_type=entity_type, reason=reason, reporter_type=reporter_type, reporter_user_id=reporter_user_id, custom=custom).to_dict() - return self.post("/api/v2/moderation/action_logs", InsertActionLogResponse, json=json) - + def insert_action_log( + self, + action_type: str, + entity_creator_id: str, + entity_id: str, + entity_type: str, + reason: Optional[str] = None, + reporter_type: Optional[str] = None, + reporter_user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + ) -> StreamResponse[InsertActionLogResponse]: + json = InsertActionLogRequest( + action_type=action_type, + entity_creator_id=entity_creator_id, + entity_id=entity_id, + entity_type=entity_type, + reason=reason, + reporter_type=reporter_type, + reporter_user_id=reporter_user_id, + custom=custom, + ).to_dict() + return self.post( + "/api/v2/moderation/action_logs", InsertActionLogResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.analyze") - def analyze(self, async_response: Optional[bool] = None, config_key: Optional[str] = None, content_published_at: Optional[datetime] = None, entity_creator_id: Optional[str] = None, entity_id: Optional[str] = None, entity_type: Optional[str] = None, user_id: Optional[str] = None, content_ids: Optional[Dict[str, str]] = None, custom: Optional[Dict[str, object]] = None, texts: Optional[Dict[str, str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[AnalyzeResponse]: - json = AnalyzeRequest(async_response=async_response, config_key=config_key, content_published_at=content_published_at, entity_creator_id=entity_creator_id, entity_id=entity_id, entity_type=entity_type, user_id=user_id, content_ids=content_ids, custom=custom, texts=texts, user=user).to_dict() + def analyze( + self, + async_response: Optional[bool] = None, + config_key: Optional[str] = None, + content_published_at: Optional[datetime] = None, + entity_creator_id: Optional[str] = None, + entity_id: Optional[str] = None, + entity_type: Optional[str] = None, + user_id: Optional[str] = None, + content_ids: Optional[Dict[str, str]] = None, + custom: Optional[Dict[str, object]] = None, + texts: Optional[Dict[str, str]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[AnalyzeResponse]: + json = AnalyzeRequest( + async_response=async_response, + config_key=config_key, + content_published_at=content_published_at, + entity_creator_id=entity_creator_id, + entity_id=entity_id, + entity_type=entity_type, + user_id=user_id, + content_ids=content_ids, + custom=custom, + texts=texts, + user=user, + ).to_dict() return self.post("/api/v2/moderation/analyze", AnalyzeResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.appeal") - def appeal(self, appeal_reason: str, entity_id: str, entity_type: str, review_queue_item_id: Optional[str] = None, user_id: Optional[str] = None, attachments: Optional[List[str]] = None, user: Optional[UserRequest] = None) -> StreamResponse[AppealResponse]: - json = AppealRequest(appeal_reason=appeal_reason, entity_id=entity_id, entity_type=entity_type, review_queue_item_id=review_queue_item_id, user_id=user_id, attachments=attachments, user=user).to_dict() + def appeal( + self, + appeal_reason: str, + entity_id: str, + entity_type: str, + review_queue_item_id: Optional[str] = None, + user_id: Optional[str] = None, + attachments: Optional[List[str]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[AppealResponse]: + json = AppealRequest( + appeal_reason=appeal_reason, + entity_id=entity_id, + entity_type=entity_type, + review_queue_item_id=review_queue_item_id, + user_id=user_id, + attachments=attachments, + user=user, + ).to_dict() return self.post("/api/v2/moderation/appeal", AppealResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.get_appeal") def get_appeal(self, id: str) -> StreamResponse[GetAppealResponse]: path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/moderation/appeal/{id}", GetAppealResponse, path_params=path_params) - + return self.get( + "/api/v2/moderation/appeal/{id}", GetAppealResponse, path_params=path_params + ) + @telemetry.operation_name("getstream.api.moderation.query_appeals") - def query_appeals(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryAppealsResponse]: - json = QueryAppealsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() + def query_appeals( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryAppealsResponse]: + json = QueryAppealsRequest( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() return self.post("/api/v2/moderation/appeals", QueryAppealsResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.bulk_action_appeals") - def bulk_action_appeals(self, action_type: str, appeal_ids: List[str], user_id: Optional[str] = None, mark_reviewed: Optional[MarkReviewedRequestPayload] = None, reject_appeal: Optional[RejectAppealRequestPayload] = None, restore: Optional[RestoreActionRequestPayload] = None, unban: Optional[UnbanActionRequestPayload] = None, unblock: Optional[UnblockActionRequestPayload] = None, user: Optional[UserRequest] = None) -> StreamResponse[BulkActionAppealsResponse]: - json = BulkActionAppealsRequest(action_type=action_type, appeal_ids=appeal_ids, user_id=user_id, mark_reviewed=mark_reviewed, reject_appeal=reject_appeal, restore=restore, unban=unban, unblock=unblock, user=user).to_dict() - return self.post("/api/v2/moderation/appeals/bulk_action", BulkActionAppealsResponse, json=json) - + def bulk_action_appeals( + self, + action_type: str, + appeal_ids: List[str], + user_id: Optional[str] = None, + mark_reviewed: Optional[MarkReviewedRequestPayload] = None, + reject_appeal: Optional[RejectAppealRequestPayload] = None, + restore: Optional[RestoreActionRequestPayload] = None, + unban: Optional[UnbanActionRequestPayload] = None, + unblock: Optional[UnblockActionRequestPayload] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[BulkActionAppealsResponse]: + json = BulkActionAppealsRequest( + action_type=action_type, + appeal_ids=appeal_ids, + user_id=user_id, + mark_reviewed=mark_reviewed, + reject_appeal=reject_appeal, + restore=restore, + unban=unban, + unblock=unblock, + user=user, + ).to_dict() + return self.post( + "/api/v2/moderation/appeals/bulk_action", + BulkActionAppealsResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.ban") - def ban(self, target_user_id: str, banned_by_id: Optional[str] = None, channel_cid: Optional[str] = None, delete_messages: Optional[str] = None, ip_ban: Optional[bool] = None, reason: Optional[str] = None, shadow: Optional[bool] = None, timeout: Optional[int] = None, banned_by: Optional[UserRequest] = None) -> StreamResponse[ModerationBanResponse]: - json = BanRequest(target_user_id=target_user_id, banned_by_id=banned_by_id, channel_cid=channel_cid, delete_messages=delete_messages, ip_ban=ip_ban, reason=reason, shadow=shadow, timeout=timeout, banned_by=banned_by).to_dict() + def ban( + self, + target_user_id: str, + banned_by_id: Optional[str] = None, + channel_cid: Optional[str] = None, + delete_messages: Optional[str] = None, + ip_ban: Optional[bool] = None, + reason: Optional[str] = None, + shadow: Optional[bool] = None, + timeout: Optional[int] = None, + banned_by: Optional[UserRequest] = None, + ) -> StreamResponse[ModerationBanResponse]: + json = BanRequest( + target_user_id=target_user_id, + banned_by_id=banned_by_id, + channel_cid=channel_cid, + delete_messages=delete_messages, + ip_ban=ip_ban, + reason=reason, + shadow=shadow, + timeout=timeout, + banned_by=banned_by, + ).to_dict() return self.post("/api/v2/moderation/ban", ModerationBanResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.bulk_image_moderation") - def bulk_image_moderation(self, csv_file: str) -> StreamResponse[BulkImageModerationResponse]: + def bulk_image_moderation( + self, csv_file: str + ) -> StreamResponse[BulkImageModerationResponse]: json = BulkImageModerationRequest(csv_file=csv_file).to_dict() - return self.post("/api/v2/moderation/bulk_image_moderation", BulkImageModerationResponse, json=json) - + return self.post( + "/api/v2/moderation/bulk_image_moderation", + BulkImageModerationResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.bypass") - def bypass(self, enabled: bool, target_user_id: str) -> StreamResponse[BypassResponse]: + def bypass( + self, enabled: bool, target_user_id: str + ) -> StreamResponse[BypassResponse]: json = BypassRequest(enabled=enabled, target_user_id=target_user_id).to_dict() return self.post("/api/v2/moderation/bypass", BypassResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.check") - def check(self, entity_creator_id: str, entity_id: str, entity_type: str, config_key: Optional[str] = None, config_team: Optional[str] = None, content_published_at: Optional[datetime] = None, test_mode: Optional[bool] = None, user_id: Optional[str] = None, config: Optional[ModerationConfig] = None, moderation_payload: Optional[ModerationPayload] = None, options: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[CheckResponse]: - json = CheckRequest(entity_creator_id=entity_creator_id, entity_id=entity_id, entity_type=entity_type, config_key=config_key, config_team=config_team, content_published_at=content_published_at, test_mode=test_mode, user_id=user_id, config=config, moderation_payload=moderation_payload, options=options, user=user).to_dict() + def check( + self, + entity_creator_id: str, + entity_id: str, + entity_type: str, + config_key: Optional[str] = None, + config_team: Optional[str] = None, + content_published_at: Optional[datetime] = None, + test_mode: Optional[bool] = None, + user_id: Optional[str] = None, + config: Optional[ModerationConfig] = None, + moderation_payload: Optional[ModerationPayload] = None, + options: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[CheckResponse]: + json = CheckRequest( + entity_creator_id=entity_creator_id, + entity_id=entity_id, + entity_type=entity_type, + config_key=config_key, + config_team=config_team, + content_published_at=content_published_at, + test_mode=test_mode, + user_id=user_id, + config=config, + moderation_payload=moderation_payload, + options=options, + user=user, + ).to_dict() return self.post("/api/v2/moderation/check", CheckResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.check_s3_access") - def check_s3_access(self, s3_url: Optional[str] = None) -> StreamResponse[CheckS3AccessResponse]: + def check_s3_access( + self, s3_url: Optional[str] = None + ) -> StreamResponse[CheckS3AccessResponse]: json = CheckS3AccessRequest(s3_url=s3_url).to_dict() - return self.post("/api/v2/moderation/check_s3_access", CheckS3AccessResponse, json=json) - + return self.post( + "/api/v2/moderation/check_s3_access", CheckS3AccessResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.upsert_config") - def upsert_config(self, key: str, _async: Optional[bool] = None, team: Optional[str] = None, user_id: Optional[str] = None, ai_audio_config: Optional[AIAudioConfigRequest] = None, ai_image_config: Optional[AIImageConfig] = None, ai_text_config: Optional[AITextConfig] = None, ai_video_config: Optional[AIVideoConfigRequest] = None, automod_platform_circumvention_config: Optional[AutomodPlatformCircumventionConfig] = None, automod_semantic_filters_config: Optional[AutomodSemanticFiltersConfig] = None, automod_toxicity_config: Optional[AutomodToxicityConfig] = None, aws_rekognition_config: Optional[AIImageConfig] = None, block_list_config: Optional[BlockListConfig] = None, bodyguard_config: Optional[AITextConfig] = None, flood_config: Optional[FloodConfig] = None, google_vision_config: Optional[GoogleVisionConfig] = None, llm_config: Optional[LLMConfig] = None, rule_builder_config: Optional[RuleBuilderConfig] = None, user: Optional[UserRequest] = None, velocity_filter_config: Optional[VelocityFilterConfig] = None, video_call_rule_config: Optional[VideoCallRuleConfig] = None) -> StreamResponse[UpsertConfigResponse]: - json = UpsertConfigRequest(key=key, _async=_async, team=team, user_id=user_id, ai_audio_config=ai_audio_config, ai_image_config=ai_image_config, ai_text_config=ai_text_config, ai_video_config=ai_video_config, automod_platform_circumvention_config=automod_platform_circumvention_config, automod_semantic_filters_config=automod_semantic_filters_config, automod_toxicity_config=automod_toxicity_config, aws_rekognition_config=aws_rekognition_config, block_list_config=block_list_config, bodyguard_config=bodyguard_config, flood_config=flood_config, google_vision_config=google_vision_config, llm_config=llm_config, rule_builder_config=rule_builder_config, user=user, velocity_filter_config=velocity_filter_config, video_call_rule_config=video_call_rule_config).to_dict() + def upsert_config( + self, + key: str, + _async: Optional[bool] = None, + team: Optional[str] = None, + user_id: Optional[str] = None, + ai_audio_config: Optional[AIAudioConfigRequest] = None, + ai_image_config: Optional[AIImageConfig] = None, + ai_text_config: Optional[AITextConfig] = None, + ai_video_config: Optional[AIVideoConfigRequest] = None, + automod_platform_circumvention_config: Optional[ + AutomodPlatformCircumventionConfig + ] = None, + automod_semantic_filters_config: Optional[AutomodSemanticFiltersConfig] = None, + automod_toxicity_config: Optional[AutomodToxicityConfig] = None, + aws_rekognition_config: Optional[AIImageConfig] = None, + block_list_config: Optional[BlockListConfig] = None, + bodyguard_config: Optional[AITextConfig] = None, + flood_config: Optional[FloodConfig] = None, + google_vision_config: Optional[GoogleVisionConfig] = None, + llm_config: Optional[LLMConfig] = None, + rule_builder_config: Optional[RuleBuilderConfig] = None, + user: Optional[UserRequest] = None, + velocity_filter_config: Optional[VelocityFilterConfig] = None, + video_call_rule_config: Optional[VideoCallRuleConfig] = None, + ) -> StreamResponse[UpsertConfigResponse]: + json = UpsertConfigRequest( + key=key, + _async=_async, + team=team, + user_id=user_id, + ai_audio_config=ai_audio_config, + ai_image_config=ai_image_config, + ai_text_config=ai_text_config, + ai_video_config=ai_video_config, + automod_platform_circumvention_config=automod_platform_circumvention_config, + automod_semantic_filters_config=automod_semantic_filters_config, + automod_toxicity_config=automod_toxicity_config, + aws_rekognition_config=aws_rekognition_config, + block_list_config=block_list_config, + bodyguard_config=bodyguard_config, + flood_config=flood_config, + google_vision_config=google_vision_config, + llm_config=llm_config, + rule_builder_config=rule_builder_config, + user=user, + velocity_filter_config=velocity_filter_config, + video_call_rule_config=video_call_rule_config, + ).to_dict() return self.post("/api/v2/moderation/config", UpsertConfigResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.delete_config") - def delete_config(self, key: str, team: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[DeleteModerationConfigResponse]: + def delete_config( + self, key: str, team: Optional[str] = None, user_id: Optional[str] = None + ) -> StreamResponse[DeleteModerationConfigResponse]: query_params = build_query_param(team=team, user_id=user_id) path_params = { - "key": key, + "key": key, } - return self.delete("/api/v2/moderation/config/{key}", DeleteModerationConfigResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/moderation/config/{key}", + DeleteModerationConfigResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.get_config") - def get_config(self, key: str, team: Optional[str] = None) -> StreamResponse[GetConfigResponse]: + def get_config( + self, key: str, team: Optional[str] = None + ) -> StreamResponse[GetConfigResponse]: query_params = build_query_param(team=team) path_params = { - "key": key, + "key": key, } - return self.get("/api/v2/moderation/config/{key}", GetConfigResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/moderation/config/{key}", + GetConfigResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.query_moderation_configs") - def query_moderation_configs(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryModerationConfigsResponse]: - json = QueryModerationConfigsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return self.post("/api/v2/moderation/configs", QueryModerationConfigsResponse, json=json) - + def query_moderation_configs( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryModerationConfigsResponse]: + json = QueryModerationConfigsRequest( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return self.post( + "/api/v2/moderation/configs", QueryModerationConfigsResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.custom_check") - def custom_check(self, entity_id: str, entity_type: str, flags: List[CustomCheckFlag], entity_creator_id: Optional[str] = None, user_id: Optional[str] = None, moderation_payload: Optional[ModerationPayloadRequest] = None, user: Optional[UserRequest] = None) -> StreamResponse[CustomCheckResponse]: - json = CustomCheckRequest(entity_id=entity_id, entity_type=entity_type, flags=flags, entity_creator_id=entity_creator_id, user_id=user_id, moderation_payload=moderation_payload, user=user).to_dict() - return self.post("/api/v2/moderation/custom_check", CustomCheckResponse, json=json) - + def custom_check( + self, + entity_id: str, + entity_type: str, + flags: List[CustomCheckFlag], + entity_creator_id: Optional[str] = None, + user_id: Optional[str] = None, + moderation_payload: Optional[ModerationPayloadRequest] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[CustomCheckResponse]: + json = CustomCheckRequest( + entity_id=entity_id, + entity_type=entity_type, + flags=flags, + entity_creator_id=entity_creator_id, + user_id=user_id, + moderation_payload=moderation_payload, + user=user, + ).to_dict() + return self.post( + "/api/v2/moderation/custom_check", CustomCheckResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.v2_delete_template") def v2_delete_template(self) -> StreamResponse[DeleteModerationTemplateResponse]: - return self.delete("/api/v2/moderation/feeds_moderation_template", DeleteModerationTemplateResponse) - + return self.delete( + "/api/v2/moderation/feeds_moderation_template", + DeleteModerationTemplateResponse, + ) + @telemetry.operation_name("getstream.api.moderation.v2_query_templates") - def v2_query_templates(self) -> StreamResponse[QueryFeedModerationTemplatesResponse]: - return self.get("/api/v2/moderation/feeds_moderation_template", QueryFeedModerationTemplatesResponse) - + def v2_query_templates( + self, + ) -> StreamResponse[QueryFeedModerationTemplatesResponse]: + return self.get( + "/api/v2/moderation/feeds_moderation_template", + QueryFeedModerationTemplatesResponse, + ) + @telemetry.operation_name("getstream.api.moderation.v2_upsert_template") - def v2_upsert_template(self, name: str, config: FeedsModerationTemplateConfigPayload) -> StreamResponse[UpsertModerationTemplateResponse]: + def v2_upsert_template( + self, name: str, config: FeedsModerationTemplateConfigPayload + ) -> StreamResponse[UpsertModerationTemplateResponse]: json = UpsertModerationTemplateRequest(name=name, config=config).to_dict() - return self.post("/api/v2/moderation/feeds_moderation_template", UpsertModerationTemplateResponse, json=json) - + return self.post( + "/api/v2/moderation/feeds_moderation_template", + UpsertModerationTemplateResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.flag") - def flag(self, entity_id: str, entity_type: str, entity_creator_id: Optional[str] = None, reason: Optional[str] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, moderation_payload: Optional[ModerationPayload] = None, user: Optional[UserRequest] = None) -> StreamResponse[FlagItemResponse]: - json = FlagRequest(entity_id=entity_id, entity_type=entity_type, entity_creator_id=entity_creator_id, reason=reason, user_id=user_id, custom=custom, moderation_payload=moderation_payload, user=user).to_dict() + def flag( + self, + entity_id: str, + entity_type: str, + entity_creator_id: Optional[str] = None, + reason: Optional[str] = None, + user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + moderation_payload: Optional[ModerationPayload] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[FlagItemResponse]: + json = FlagRequest( + entity_id=entity_id, + entity_type=entity_type, + entity_creator_id=entity_creator_id, + reason=reason, + user_id=user_id, + custom=custom, + moderation_payload=moderation_payload, + user=user, + ).to_dict() return self.post("/api/v2/moderation/flag", FlagItemResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.get_flag_count") - def get_flag_count(self, entity_creator_id: str, entity_type: Optional[str] = None) -> StreamResponse[GetFlagCountResponse]: - json = GetFlagCountRequest(entity_creator_id=entity_creator_id, entity_type=entity_type).to_dict() - return self.post("/api/v2/moderation/flag_count", GetFlagCountResponse, json=json) - + def get_flag_count( + self, entity_creator_id: str, entity_type: Optional[str] = None + ) -> StreamResponse[GetFlagCountResponse]: + json = GetFlagCountRequest( + entity_creator_id=entity_creator_id, entity_type=entity_type + ).to_dict() + return self.post( + "/api/v2/moderation/flag_count", GetFlagCountResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.query_moderation_flags") - def query_moderation_flags(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None) -> StreamResponse[QueryModerationFlagsResponse]: - json = QueryModerationFlagsRequest(limit=limit, next=next, prev=prev, sort=sort, filter=filter).to_dict() - return self.post("/api/v2/moderation/flags", QueryModerationFlagsResponse, json=json) - + def query_moderation_flags( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryModerationFlagsResponse]: + json = QueryModerationFlagsRequest( + limit=limit, next=next, prev=prev, sort=sort, filter=filter + ).to_dict() + return self.post( + "/api/v2/moderation/flags", QueryModerationFlagsResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.labels") - def labels(self, content: str, category: Optional[str] = None, content_id: Optional[str] = None, content_type: Optional[str] = None, dry_run: Optional[bool] = None, policy: Optional[str] = None, user_id: Optional[str] = None) -> StreamResponse[LabelsResponse]: - json = LabelsRequest(content=content, category=category, content_id=content_id, content_type=content_type, dry_run=dry_run, policy=policy, user_id=user_id).to_dict() + def labels( + self, + content: str, + category: Optional[str] = None, + content_id: Optional[str] = None, + content_type: Optional[str] = None, + dry_run: Optional[bool] = None, + policy: Optional[str] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[LabelsResponse]: + json = LabelsRequest( + content=content, + category=category, + content_id=content_id, + content_type=content_type, + dry_run=dry_run, + policy=policy, + user_id=user_id, + ).to_dict() return self.post("/api/v2/moderation/labels", LabelsResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.query_label_results") - def query_label_results(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryLabelResultsResponse]: - json = QueryLabelResultsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return self.post("/api/v2/moderation/labels/results", QueryLabelResultsResponse, json=json) - + def query_label_results( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryLabelResultsResponse]: + json = QueryLabelResultsRequest( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return self.post( + "/api/v2/moderation/labels/results", QueryLabelResultsResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.query_moderation_logs") - def query_moderation_logs(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryModerationLogsResponse]: - json = QueryModerationLogsRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return self.post("/api/v2/moderation/logs", QueryModerationLogsResponse, json=json) - + def query_moderation_logs( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryModerationLogsResponse]: + json = QueryModerationLogsRequest( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return self.post( + "/api/v2/moderation/logs", QueryModerationLogsResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.upsert_moderation_rule") - def upsert_moderation_rule(self, name: str, rule_type: str, cooldown_period: Optional[str] = None, description: Optional[str] = None, enabled: Optional[bool] = None, logic: Optional[str] = None, team: Optional[str] = None, user_id: Optional[str] = None, action_sequences: Optional[List[CallRuleActionSequence]] = None, conditions: Optional[List[RuleBuilderCondition]] = None, config_keys: Optional[List[str]] = None, groups: Optional[List[RuleBuilderConditionGroup]] = None, action: Optional[RuleBuilderAction] = None, user: Optional[UserRequest] = None) -> StreamResponse[UpsertModerationRuleResponse]: - json = UpsertModerationRuleRequest(name=name, rule_type=rule_type, cooldown_period=cooldown_period, description=description, enabled=enabled, logic=logic, team=team, user_id=user_id, action_sequences=action_sequences, conditions=conditions, config_keys=config_keys, groups=groups, action=action, user=user).to_dict() - return self.post("/api/v2/moderation/moderation_rule", UpsertModerationRuleResponse, json=json) - + def upsert_moderation_rule( + self, + name: str, + rule_type: str, + cooldown_period: Optional[str] = None, + description: Optional[str] = None, + enabled: Optional[bool] = None, + logic: Optional[str] = None, + team: Optional[str] = None, + user_id: Optional[str] = None, + action_sequences: Optional[List[CallRuleActionSequence]] = None, + conditions: Optional[List[RuleBuilderCondition]] = None, + config_keys: Optional[List[str]] = None, + groups: Optional[List[RuleBuilderConditionGroup]] = None, + action: Optional[RuleBuilderAction] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UpsertModerationRuleResponse]: + json = UpsertModerationRuleRequest( + name=name, + rule_type=rule_type, + cooldown_period=cooldown_period, + description=description, + enabled=enabled, + logic=logic, + team=team, + user_id=user_id, + action_sequences=action_sequences, + conditions=conditions, + config_keys=config_keys, + groups=groups, + action=action, + user=user, + ).to_dict() + return self.post( + "/api/v2/moderation/moderation_rule", + UpsertModerationRuleResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.delete_moderation_rule") - def delete_moderation_rule(self, id: str, user_id: Optional[str] = None) -> StreamResponse[DeleteModerationRuleResponse]: + def delete_moderation_rule( + self, id: str, user_id: Optional[str] = None + ) -> StreamResponse[DeleteModerationRuleResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "id": id, + "id": id, } - return self.delete("/api/v2/moderation/moderation_rule/{id}", DeleteModerationRuleResponse, query_params=query_params, path_params=path_params) - + return self.delete( + "/api/v2/moderation/moderation_rule/{id}", + DeleteModerationRuleResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.get_moderation_rule") def get_moderation_rule(self, id: str) -> StreamResponse[GetModerationRuleResponse]: path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/moderation/moderation_rule/{id}", GetModerationRuleResponse, path_params=path_params) - + return self.get( + "/api/v2/moderation/moderation_rule/{id}", + GetModerationRuleResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.query_moderation_rules") - def query_moderation_rules(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryModerationRulesResponse]: - json = QueryModerationRulesRequest(limit=limit, next=next, prev=prev, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return self.post("/api/v2/moderation/moderation_rules", QueryModerationRulesResponse, json=json) - + def query_moderation_rules( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryModerationRulesResponse]: + json = QueryModerationRulesRequest( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return self.post( + "/api/v2/moderation/moderation_rules", + QueryModerationRulesResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.mute") - def mute(self, target_ids: List[str], timeout: Optional[int] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[MuteResponse]: - json = MuteRequest(target_ids=target_ids, timeout=timeout, user_id=user_id, user=user).to_dict() + def mute( + self, + target_ids: List[str], + timeout: Optional[int] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[MuteResponse]: + json = MuteRequest( + target_ids=target_ids, timeout=timeout, user_id=user_id, user=user + ).to_dict() return self.post("/api/v2/moderation/mute", MuteResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.get_policy_test_run") def get_policy_test_run(self, id: str) -> StreamResponse[PolicyTestRunResponse]: path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/moderation/policy_tests/runs/{id}", PolicyTestRunResponse, path_params=path_params) - + return self.get( + "/api/v2/moderation/policy_tests/runs/{id}", + PolicyTestRunResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.list_policy_test_sets") def list_policy_test_sets(self) -> StreamResponse[PolicyTestSetListResponse]: - return self.get("/api/v2/moderation/policy_tests/sets", PolicyTestSetListResponse) - + return self.get( + "/api/v2/moderation/policy_tests/sets", PolicyTestSetListResponse + ) + @telemetry.operation_name("getstream.api.moderation.create_policy_test_set") - def create_policy_test_set(self, name: str, config_key: Optional[str] = None, mode: Optional[str] = None, team: Optional[str] = None, rows: Optional[List[PolicyTestRow]] = None, seed: Optional[PolicyTestSeedSpec] = None) -> StreamResponse[PolicyTestSetResponse]: - json = CreatePolicyTestSetRequest(name=name, config_key=config_key, mode=mode, team=team, rows=rows, seed=seed).to_dict() - return self.post("/api/v2/moderation/policy_tests/sets", PolicyTestSetResponse, json=json) - + def create_policy_test_set( + self, + name: str, + config_key: Optional[str] = None, + mode: Optional[str] = None, + team: Optional[str] = None, + rows: Optional[List[PolicyTestRow]] = None, + seed: Optional[PolicyTestSeedSpec] = None, + ) -> StreamResponse[PolicyTestSetResponse]: + json = CreatePolicyTestSetRequest( + name=name, config_key=config_key, mode=mode, team=team, rows=rows, seed=seed + ).to_dict() + return self.post( + "/api/v2/moderation/policy_tests/sets", PolicyTestSetResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.delete_policy_test_set") def delete_policy_test_set(self, id: str) -> StreamResponse[Response]: path_params = { - "id": id, + "id": id, } - return self.delete("/api/v2/moderation/policy_tests/sets/{id}", Response, path_params=path_params) - + return self.delete( + "/api/v2/moderation/policy_tests/sets/{id}", + Response, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.get_policy_test_set") def get_policy_test_set(self, id: str) -> StreamResponse[PolicyTestSetResponse]: path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/moderation/policy_tests/sets/{id}", PolicyTestSetResponse, path_params=path_params) - + return self.get( + "/api/v2/moderation/policy_tests/sets/{id}", + PolicyTestSetResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.start_policy_test_run") def start_policy_test_run(self, id: str) -> StreamResponse[PolicyTestRunResponse]: path_params = { - "id": id, + "id": id, } - return self.post("/api/v2/moderation/policy_tests/sets/{id}/runs", PolicyTestRunResponse, path_params=path_params) - + return self.post( + "/api/v2/moderation/policy_tests/sets/{id}/runs", + PolicyTestRunResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.list_queues") - def list_queues(self, user_id: Optional[str] = None) -> StreamResponse[ListQueuesResponse]: + def list_queues( + self, user_id: Optional[str] = None + ) -> StreamResponse[ListQueuesResponse]: query_params = build_query_param(user_id=user_id) - return self.get("/api/v2/moderation/queues", ListQueuesResponse, query_params=query_params) - + return self.get( + "/api/v2/moderation/queues", ListQueuesResponse, query_params=query_params + ) + @telemetry.operation_name("getstream.api.moderation.create_queue") - def create_queue(self, name: str, type: str, description: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[Dict[str, object]]] = None, filters: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueueResponse]: - json = CreateQueueRequest(name=name, type=type, description=description, user_id=user_id, sort=sort, filters=filters, user=user).to_dict() + def create_queue( + self, + name: str, + type: str, + description: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[Dict[str, object]]] = None, + filters: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueueResponse]: + json = CreateQueueRequest( + name=name, + type=type, + description=description, + user_id=user_id, + sort=sort, + filters=filters, + user=user, + ).to_dict() return self.post("/api/v2/moderation/queues", QueueResponse, json=json) - + @telemetry.operation_name("getstream.api.moderation.get_queue") - def get_queue(self, id: str, user_id: Optional[str] = None) -> StreamResponse[QueueResponse]: + def get_queue( + self, id: str, user_id: Optional[str] = None + ) -> StreamResponse[QueueResponse]: query_params = build_query_param(user_id=user_id) path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/moderation/queues/{id}", QueueResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/moderation/queues/{id}", + QueueResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.update_queue") - def update_queue(self, id: str, description: Optional[str] = None, name: Optional[str] = None, user_id: Optional[str] = None, sort: Optional[List[Dict[str, object]]] = None, filters: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueueResponse]: + def update_queue( + self, + id: str, + description: Optional[str] = None, + name: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[Dict[str, object]]] = None, + filters: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueueResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateQueueRequest(description=description, name=name, user_id=user_id, sort=sort, filters=filters, user=user).to_dict() - return self.patch("/api/v2/moderation/queues/{id}", QueueResponse, path_params=path_params, json=json) - + json = UpdateQueueRequest( + description=description, + name=name, + user_id=user_id, + sort=sort, + filters=filters, + user=user, + ).to_dict() + return self.patch( + "/api/v2/moderation/queues/{id}", + QueueResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.delete_queue") - def delete_queue(self, id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueueResponse]: + def delete_queue( + self, id: str, user_id: Optional[str] = None, user: Optional[UserRequest] = None + ) -> StreamResponse[QueueResponse]: path_params = { - "id": id, + "id": id, } json = DeleteQueueRequest(user_id=user_id, user=user).to_dict() - return self.post("/api/v2/moderation/queues/{id}/delete", QueueResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/moderation/queues/{id}/delete", + QueueResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.query_review_queue") - def query_review_queue(self, exclude_default_action_config: Optional[bool] = None, limit: Optional[int] = None, lock_count: Optional[int] = None, lock_duration: Optional[int] = None, lock_items: Optional[bool] = None, next: Optional[str] = None, prev: Optional[str] = None, stats_only: Optional[bool] = None, user_id: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[QueryReviewQueueResponse]: - json = QueryReviewQueueRequest(exclude_default_action_config=exclude_default_action_config, limit=limit, lock_count=lock_count, lock_duration=lock_duration, lock_items=lock_items, next=next, prev=prev, stats_only=stats_only, user_id=user_id, sort=sort, filter=filter, user=user).to_dict() - return self.post("/api/v2/moderation/review_queue", QueryReviewQueueResponse, json=json) - + def query_review_queue( + self, + exclude_default_action_config: Optional[bool] = None, + limit: Optional[int] = None, + lock_count: Optional[int] = None, + lock_duration: Optional[int] = None, + lock_items: Optional[bool] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + stats_only: Optional[bool] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryReviewQueueResponse]: + json = QueryReviewQueueRequest( + exclude_default_action_config=exclude_default_action_config, + limit=limit, + lock_count=lock_count, + lock_duration=lock_duration, + lock_items=lock_items, + next=next, + prev=prev, + stats_only=stats_only, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ).to_dict() + return self.post( + "/api/v2/moderation/review_queue", QueryReviewQueueResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.get_review_queue_item") - def get_review_queue_item(self, id: str) -> StreamResponse[GetReviewQueueItemResponse]: + def get_review_queue_item( + self, id: str + ) -> StreamResponse[GetReviewQueueItemResponse]: path_params = { - "id": id, + "id": id, } - return self.get("/api/v2/moderation/review_queue/{id}", GetReviewQueueItemResponse, path_params=path_params) - + return self.get( + "/api/v2/moderation/review_queue/{id}", + GetReviewQueueItemResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.moderation.get_setup_session") def get_setup_session(self) -> StreamResponse[GetSetupSessionResponse]: return self.get("/api/v2/moderation/setup", GetSetupSessionResponse) - + @telemetry.operation_name("getstream.api.moderation.upsert_setup_session") - def upsert_setup_session(self, current_step: str, status: str, setup_data: Optional[Dict[str, object]] = None) -> StreamResponse[UpsertSetupSessionResponse]: - json = UpsertSetupSessionRequest(current_step=current_step, status=status, setup_data=setup_data).to_dict() - return self.post("/api/v2/moderation/setup", UpsertSetupSessionResponse, json=json) - + def upsert_setup_session( + self, + current_step: str, + status: str, + setup_data: Optional[Dict[str, object]] = None, + ) -> StreamResponse[UpsertSetupSessionResponse]: + json = UpsertSetupSessionRequest( + current_step=current_step, status=status, setup_data=setup_data + ).to_dict() + return self.post( + "/api/v2/moderation/setup", UpsertSetupSessionResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.submit_action") - def submit_action(self, action_type: str, appeal_id: Optional[str] = None, item_id: Optional[str] = None, user_id: Optional[str] = None, ban: Optional[BanActionRequestPayload] = None, block: Optional[BlockActionRequestPayload] = None, bypass: Optional[BypassActionRequest] = None, custom: Optional[CustomActionRequestPayload] = None, delete_activity: Optional[DeleteActivityRequestPayload] = None, delete_comment: Optional[DeleteCommentRequestPayload] = None, delete_message: Optional[DeleteMessageRequestPayload] = None, delete_reaction: Optional[DeleteReactionRequestPayload] = None, delete_user: Optional[DeleteUserRequestPayload] = None, delete_user_messages: Optional[DeleteUserMessagesRequestPayload] = None, escalate: Optional[EscalatePayload] = None, flag: Optional[FlagRequest] = None, mark_reviewed: Optional[MarkReviewedRequestPayload] = None, reject_appeal: Optional[RejectAppealRequestPayload] = None, restore: Optional[RestoreActionRequestPayload] = None, shadow_block: Optional[ShadowBlockActionRequestPayload] = None, unban: Optional[UnbanActionRequestPayload] = None, unblock: Optional[UnblockActionRequestPayload] = None, user: Optional[UserRequest] = None) -> StreamResponse[SubmitActionResponse]: - json = SubmitActionRequest(action_type=action_type, appeal_id=appeal_id, item_id=item_id, user_id=user_id, ban=ban, block=block, bypass=bypass, custom=custom, delete_activity=delete_activity, delete_comment=delete_comment, delete_message=delete_message, delete_reaction=delete_reaction, delete_user=delete_user, delete_user_messages=delete_user_messages, escalate=escalate, flag=flag, mark_reviewed=mark_reviewed, reject_appeal=reject_appeal, restore=restore, shadow_block=shadow_block, unban=unban, unblock=unblock, user=user).to_dict() - return self.post("/api/v2/moderation/submit_action", SubmitActionResponse, json=json) - + def submit_action( + self, + action_type: str, + appeal_id: Optional[str] = None, + item_id: Optional[str] = None, + user_id: Optional[str] = None, + ban: Optional[BanActionRequestPayload] = None, + block: Optional[BlockActionRequestPayload] = None, + bypass: Optional[BypassActionRequest] = None, + custom: Optional[CustomActionRequestPayload] = None, + delete_activity: Optional[DeleteActivityRequestPayload] = None, + delete_comment: Optional[DeleteCommentRequestPayload] = None, + delete_message: Optional[DeleteMessageRequestPayload] = None, + delete_reaction: Optional[DeleteReactionRequestPayload] = None, + delete_user: Optional[DeleteUserRequestPayload] = None, + delete_user_messages: Optional[DeleteUserMessagesRequestPayload] = None, + escalate: Optional[EscalatePayload] = None, + flag: Optional[FlagRequest] = None, + mark_reviewed: Optional[MarkReviewedRequestPayload] = None, + reject_appeal: Optional[RejectAppealRequestPayload] = None, + restore: Optional[RestoreActionRequestPayload] = None, + shadow_block: Optional[ShadowBlockActionRequestPayload] = None, + unban: Optional[UnbanActionRequestPayload] = None, + unblock: Optional[UnblockActionRequestPayload] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[SubmitActionResponse]: + json = SubmitActionRequest( + action_type=action_type, + appeal_id=appeal_id, + item_id=item_id, + user_id=user_id, + ban=ban, + block=block, + bypass=bypass, + custom=custom, + delete_activity=delete_activity, + delete_comment=delete_comment, + delete_message=delete_message, + delete_reaction=delete_reaction, + delete_user=delete_user, + delete_user_messages=delete_user_messages, + escalate=escalate, + flag=flag, + mark_reviewed=mark_reviewed, + reject_appeal=reject_appeal, + restore=restore, + shadow_block=shadow_block, + unban=unban, + unblock=unblock, + user=user, + ).to_dict() + return self.post( + "/api/v2/moderation/submit_action", SubmitActionResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.submit_moderation_feedback") - def submit_moderation_feedback(self, message: str, published_at: str, reference: str, channel_id: Optional[str] = None, current_recommended_action: Optional[str] = None, description: Optional[str] = None, expected_recommended_action: Optional[str] = None, current_labels: Optional[List[str]] = None, expected_labels: Optional[List[str]] = None) -> StreamResponse[SubmitModerationFeedbackResponse]: - json = SubmitModerationFeedbackRequest(message=message, published_at=published_at, reference=reference, channel_id=channel_id, current_recommended_action=current_recommended_action, description=description, expected_recommended_action=expected_recommended_action, current_labels=current_labels, expected_labels=expected_labels).to_dict() - return self.post("/api/v2/moderation/submit_moderation_feedback", SubmitModerationFeedbackResponse, json=json) - + def submit_moderation_feedback( + self, + message: str, + published_at: str, + reference: str, + channel_id: Optional[str] = None, + current_recommended_action: Optional[str] = None, + description: Optional[str] = None, + expected_recommended_action: Optional[str] = None, + current_labels: Optional[List[str]] = None, + expected_labels: Optional[List[str]] = None, + ) -> StreamResponse[SubmitModerationFeedbackResponse]: + json = SubmitModerationFeedbackRequest( + message=message, + published_at=published_at, + reference=reference, + channel_id=channel_id, + current_recommended_action=current_recommended_action, + description=description, + expected_recommended_action=expected_recommended_action, + current_labels=current_labels, + expected_labels=expected_labels, + ).to_dict() + return self.post( + "/api/v2/moderation/submit_moderation_feedback", + SubmitModerationFeedbackResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.unban") - def unban(self, target_user_id: str, channel_cid: Optional[str] = None, created_by: Optional[str] = None, unbanned_by_id: Optional[str] = None, unbanned_by: Optional[UserRequest] = None) -> StreamResponse[UnbanResponse]: - query_params = build_query_param(target_user_id=target_user_id, channel_cid=channel_cid, created_by=created_by) - json = UnbanRequest(unbanned_by_id=unbanned_by_id, unbanned_by=unbanned_by).to_dict() - return self.post("/api/v2/moderation/unban", UnbanResponse, query_params=query_params, json=json) - + def unban( + self, + target_user_id: str, + channel_cid: Optional[str] = None, + created_by: Optional[str] = None, + unbanned_by_id: Optional[str] = None, + unbanned_by: Optional[UserRequest] = None, + ) -> StreamResponse[UnbanResponse]: + query_params = build_query_param( + target_user_id=target_user_id, + channel_cid=channel_cid, + created_by=created_by, + ) + json = UnbanRequest( + unbanned_by_id=unbanned_by_id, unbanned_by=unbanned_by + ).to_dict() + return self.post( + "/api/v2/moderation/unban", + UnbanResponse, + query_params=query_params, + json=json, + ) + @telemetry.operation_name("getstream.api.moderation.unmute") - def unmute(self, target_ids: List[str], user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[UnmuteResponse]: - json = UnmuteRequest(target_ids=target_ids, user_id=user_id, user=user).to_dict() + def unmute( + self, + target_ids: List[str], + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[UnmuteResponse]: + json = UnmuteRequest( + target_ids=target_ids, user_id=user_id, user=user + ).to_dict() return self.post("/api/v2/moderation/unmute", UnmuteResponse, json=json) - \ No newline at end of file diff --git a/getstream/tests/test_webhook.py b/getstream/tests/test_webhook.py index 36407252..1f5c9f03 100644 --- a/getstream/tests/test_webhook.py +++ b/getstream/tests/test_webhook.py @@ -30,20 +30,36 @@ def setup_method(self): ).hexdigest() def test_valid_signature(self): - assert verify_webhook_signature(self.body, self.valid_signature, self.secret) is True + assert ( + verify_webhook_signature(self.body, self.valid_signature, self.secret) + is True + ) def test_wrong_signature(self): - assert verify_webhook_signature(self.body, "invalidsignature", self.secret) is False + assert ( + verify_webhook_signature(self.body, "invalidsignature", self.secret) + is False + ) def test_tampered_body(self): - assert verify_webhook_signature(b'{"type":"tampered"}', self.valid_signature, self.secret) is False + assert ( + verify_webhook_signature( + b'{"type":"tampered"}', self.valid_signature, self.secret + ) + is False + ) def test_wrong_secret(self): - assert verify_webhook_signature(self.body, self.valid_signature, "wrong-secret") is False + assert ( + verify_webhook_signature(self.body, self.valid_signature, "wrong-secret") + is False + ) def test_string_body(self): body_str = '{"type":"test.event"}' - sig = hmac.new(self.secret.encode("utf-8"), body_str.encode("utf-8"), hashlib.sha256).hexdigest() + sig = hmac.new( + self.secret.encode("utf-8"), body_str.encode("utf-8"), hashlib.sha256 + ).hexdigest() assert verify_webhook_signature(body_str, sig, self.secret) is True @@ -335,7 +351,9 @@ def test_parse_call_session_ended(self): def test_parse_call_session_participant_count_updated(self): with warnings.catch_warnings(): warnings.simplefilter("ignore", RuntimeWarning) - event = parse_webhook_event({"type": "call.session_participant_count_updated"}) + event = parse_webhook_event( + {"type": "call.session_participant_count_updated"} + ) assert type(event).__name__ == "CallSessionParticipantCountsUpdatedEvent" def test_parse_call_session_participant_joined(self): @@ -515,7 +533,9 @@ def test_parse_export_bulk_image_moderation_error(self): def test_parse_export_bulk_image_moderation_success(self): with warnings.catch_warnings(): warnings.simplefilter("ignore", RuntimeWarning) - event = parse_webhook_event({"type": "export.bulk_image_moderation.success"}) + event = parse_webhook_event( + {"type": "export.bulk_image_moderation.success"} + ) assert type(event).__name__ == "AsyncBulkImageModerationEvent" def test_parse_export_channels_error(self): @@ -1127,7 +1147,9 @@ def test_invalid_json(self): def _fixture_event_dirs(): if not FIXTURE_ROOT.exists(): return [] - return sorted(d for d in FIXTURE_ROOT.iterdir() if d.is_dir() and d.name != "_invalid") + return sorted( + d for d in FIXTURE_ROOT.iterdir() if d.is_dir() and d.name != "_invalid" + ) def _read_bytes(p: Path) -> bytes: @@ -1143,7 +1165,9 @@ class TestWebhookConformanceHappy: @pytest.fixture(autouse=True) def _skip_if_no_fixtures(self): if not FIXTURE_ROOT.exists(): - pytest.skip("conformance fixtures not present (run generate.sh to populate)") + pytest.skip( + "conformance fixtures not present (run generate.sh to populate)" + ) def test_parse_event(self, fixture_dir): body = _read_bytes(fixture_dir / "body.json") @@ -1195,13 +1219,17 @@ def _neg(self, name): @pytest.fixture(autouse=True) def _skip_if_no_fixtures(self): if not FIXTURE_ROOT.exists(): - pytest.skip("conformance fixtures not present (run generate.sh to populate)") + pytest.skip( + "conformance fixtures not present (run generate.sh to populate)" + ) def test_tampered_body(self): body = _read_bytes(self._neg("tampered_body") / "body.json") sig = _read_str(self._neg("tampered_body") / "signature.txt") # Single-arm catch on the unified InvalidWebhookError; message identifies the mode. - with pytest.raises(InvalidWebhookError, match=InvalidWebhookError.SIGNATURE_MISMATCH): + with pytest.raises( + InvalidWebhookError, match=InvalidWebhookError.SIGNATURE_MISMATCH + ): verify_and_parse_webhook(body, sig, CANONICAL_TEST_SECRET) def test_unknown_type_returns_unknown_event(self): @@ -1217,7 +1245,9 @@ def test_missing_type(self): def test_malformed_json(self): body = _read_bytes(self._neg("malformed_json") / "body.json") - with pytest.raises(InvalidWebhookError, match="failed to parse webhook payload"): + with pytest.raises( + InvalidWebhookError, match="failed to parse webhook payload" + ): parse_event(body) def test_empty_body(self): diff --git a/getstream/video/async_call.py b/getstream/video/async_call.py index ded03b04..ec7fd972 100644 --- a/getstream/video/async_call.py +++ b/getstream/video/async_call.py @@ -6,65 +6,191 @@ class Call(BaseCall): - - - @attach_call_cid_async - async def get(self, members_limit: Optional[int] = None, ring: Optional[bool] = None, notify: Optional[bool] = None, video: Optional[bool] = None) -> StreamResponse[GetCallResponse]: - response = await self.client.get_call(type=self.call_type, id=self.id, members_limit=members_limit, ring=ring, notify=notify, video=video) - self._sync_from_response(response.data) - return response - - @attach_call_cid_async - async def update(self, starts_at: Optional[datetime] = None, custom: Optional[Dict[str, object]] = None, settings_override: Optional[CallSettingsRequest] = None) -> StreamResponse[UpdateCallResponse]: - response = await self.client.update_call(type=self.call_type, id=self.id, starts_at=starts_at, custom=custom, settings_override=settings_override) - self._sync_from_response(response.data) - return response - @attach_call_cid_async - async def get_or_create(self, members_limit: Optional[int] = None, notify: Optional[bool] = None, ring: Optional[bool] = None, video: Optional[bool] = None, data: Optional[CallRequest] = None) -> StreamResponse[GetOrCreateCallResponse]: - response = await self.client.get_or_create_call(type=self.call_type, id=self.id, members_limit=members_limit, notify=notify, ring=ring, video=video, data=data) + async def get( + self, + members_limit: Optional[int] = None, + ring: Optional[bool] = None, + notify: Optional[bool] = None, + video: Optional[bool] = None, + ) -> StreamResponse[GetCallResponse]: + response = await self.client.get_call( + type=self.call_type, + id=self.id, + members_limit=members_limit, + ring=ring, + notify=notify, + video=video, + ) + self._sync_from_response(response.data) + return response + + @attach_call_cid_async + async def update( + self, + starts_at: Optional[datetime] = None, + custom: Optional[Dict[str, object]] = None, + settings_override: Optional[CallSettingsRequest] = None, + ) -> StreamResponse[UpdateCallResponse]: + response = await self.client.update_call( + type=self.call_type, + id=self.id, + starts_at=starts_at, + custom=custom, + settings_override=settings_override, + ) + self._sync_from_response(response.data) + return response + + @attach_call_cid_async + async def get_or_create( + self, + members_limit: Optional[int] = None, + notify: Optional[bool] = None, + ring: Optional[bool] = None, + video: Optional[bool] = None, + data: Optional[CallRequest] = None, + ) -> StreamResponse[GetOrCreateCallResponse]: + response = await self.client.get_or_create_call( + type=self.call_type, + id=self.id, + members_limit=members_limit, + notify=notify, + ring=ring, + video=video, + data=data, + ) self._sync_from_response(response.data) return response @attach_call_cid_async async def block_user(self, user_id: str) -> StreamResponse[BlockUserResponse]: - response = await self.client.block_user(type=self.call_type, id=self.id, user_id=user_id) - self._sync_from_response(response.data) - return response - - @attach_call_cid_async - async def send_closed_caption(self, speaker_id: str, text: str, end_time: Optional[datetime] = None, language: Optional[str] = None, service: Optional[str] = None, start_time: Optional[datetime] = None, translated: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[SendClosedCaptionResponse]: - response = await self.client.send_closed_caption(type=self.call_type, id=self.id, speaker_id=speaker_id, text=text, end_time=end_time, language=language, service=service, start_time=start_time, translated=translated, user_id=user_id, user=user) - self._sync_from_response(response.data) - return response - - @attach_call_cid_async - async def delete(self, hard: Optional[bool] = None) -> StreamResponse[DeleteCallResponse]: - response = await self.client.delete_call(type=self.call_type, id=self.id, hard=hard) - self._sync_from_response(response.data) - return response - - @attach_call_cid_async - async def send_call_event(self, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[SendCallEventResponse]: - response = await self.client.send_call_event(type=self.call_type, id=self.id, user_id=user_id, custom=custom, user=user) - self._sync_from_response(response.data) - return response - - @attach_call_cid_async - async def collect_user_feedback(self, rating: int, sdk: str, sdk_version: str, reason: Optional[str] = None, user_session_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[CollectUserFeedbackResponse]: - response = await self.client.collect_user_feedback(type=self.call_type, id=self.id, rating=rating, sdk=sdk, sdk_version=sdk_version, reason=reason, user_session_id=user_session_id, custom=custom) - self._sync_from_response(response.data) - return response - - @attach_call_cid_async - async def go_live(self, recording_storage_name: Optional[str] = None, start_closed_caption: Optional[bool] = None, start_composite_recording: Optional[bool] = None, start_hls: Optional[bool] = None, start_individual_recording: Optional[bool] = None, start_raw_recording: Optional[bool] = None, start_recording: Optional[bool] = None, start_transcription: Optional[bool] = None, transcription_storage_name: Optional[str] = None) -> StreamResponse[GoLiveResponse]: - response = await self.client.go_live(type=self.call_type, id=self.id, recording_storage_name=recording_storage_name, start_closed_caption=start_closed_caption, start_composite_recording=start_composite_recording, start_hls=start_hls, start_individual_recording=start_individual_recording, start_raw_recording=start_raw_recording, start_recording=start_recording, start_transcription=start_transcription, transcription_storage_name=transcription_storage_name) - self._sync_from_response(response.data) - return response - - @attach_call_cid_async - async def kick_user(self, user_id: str, block: Optional[bool] = None, kicked_by_id: Optional[str] = None, kicked_by: Optional[UserRequest] = None) -> StreamResponse[KickUserResponse]: - response = await self.client.kick_user(type=self.call_type, id=self.id, user_id=user_id, block=block, kicked_by_id=kicked_by_id, kicked_by=kicked_by) + response = await self.client.block_user( + type=self.call_type, id=self.id, user_id=user_id + ) + self._sync_from_response(response.data) + return response + + @attach_call_cid_async + async def send_closed_caption( + self, + speaker_id: str, + text: str, + end_time: Optional[datetime] = None, + language: Optional[str] = None, + service: Optional[str] = None, + start_time: Optional[datetime] = None, + translated: Optional[bool] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[SendClosedCaptionResponse]: + response = await self.client.send_closed_caption( + type=self.call_type, + id=self.id, + speaker_id=speaker_id, + text=text, + end_time=end_time, + language=language, + service=service, + start_time=start_time, + translated=translated, + user_id=user_id, + user=user, + ) + self._sync_from_response(response.data) + return response + + @attach_call_cid_async + async def delete( + self, hard: Optional[bool] = None + ) -> StreamResponse[DeleteCallResponse]: + response = await self.client.delete_call( + type=self.call_type, id=self.id, hard=hard + ) + self._sync_from_response(response.data) + return response + + @attach_call_cid_async + async def send_call_event( + self, + user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[SendCallEventResponse]: + response = await self.client.send_call_event( + type=self.call_type, id=self.id, user_id=user_id, custom=custom, user=user + ) + self._sync_from_response(response.data) + return response + + @attach_call_cid_async + async def collect_user_feedback( + self, + rating: int, + sdk: str, + sdk_version: str, + reason: Optional[str] = None, + user_session_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + ) -> StreamResponse[CollectUserFeedbackResponse]: + response = await self.client.collect_user_feedback( + type=self.call_type, + id=self.id, + rating=rating, + sdk=sdk, + sdk_version=sdk_version, + reason=reason, + user_session_id=user_session_id, + custom=custom, + ) + self._sync_from_response(response.data) + return response + + @attach_call_cid_async + async def go_live( + self, + recording_storage_name: Optional[str] = None, + start_closed_caption: Optional[bool] = None, + start_composite_recording: Optional[bool] = None, + start_hls: Optional[bool] = None, + start_individual_recording: Optional[bool] = None, + start_raw_recording: Optional[bool] = None, + start_recording: Optional[bool] = None, + start_transcription: Optional[bool] = None, + transcription_storage_name: Optional[str] = None, + ) -> StreamResponse[GoLiveResponse]: + response = await self.client.go_live( + type=self.call_type, + id=self.id, + recording_storage_name=recording_storage_name, + start_closed_caption=start_closed_caption, + start_composite_recording=start_composite_recording, + start_hls=start_hls, + start_individual_recording=start_individual_recording, + start_raw_recording=start_raw_recording, + start_recording=start_recording, + start_transcription=start_transcription, + transcription_storage_name=transcription_storage_name, + ) + self._sync_from_response(response.data) + return response + + @attach_call_cid_async + async def kick_user( + self, + user_id: str, + block: Optional[bool] = None, + kicked_by_id: Optional[str] = None, + kicked_by: Optional[UserRequest] = None, + ) -> StreamResponse[KickUserResponse]: + response = await self.client.kick_user( + type=self.call_type, + id=self.id, + user_id=user_id, + block=block, + kicked_by_id=kicked_by_id, + kicked_by=kicked_by, + ) self._sync_from_response(response.data) return response @@ -75,26 +201,69 @@ async def end(self) -> StreamResponse[EndCallResponse]: return response @attach_call_cid_async - async def update_call_members(self, remove_members: Optional[List[str]] = None, update_members: Optional[List[MemberRequest]] = None) -> StreamResponse[UpdateCallMembersResponse]: - response = await self.client.update_call_members(type=self.call_type, id=self.id, remove_members=remove_members, update_members=update_members) + async def update_call_members( + self, + remove_members: Optional[List[str]] = None, + update_members: Optional[List[MemberRequest]] = None, + ) -> StreamResponse[UpdateCallMembersResponse]: + response = await self.client.update_call_members( + type=self.call_type, + id=self.id, + remove_members=remove_members, + update_members=update_members, + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def mute_users(self, audio: Optional[bool] = None, mute_all_users: Optional[bool] = None, muted_by_id: Optional[str] = None, screenshare: Optional[bool] = None, screenshare_audio: Optional[bool] = None, video: Optional[bool] = None, user_ids: Optional[List[str]] = None, muted_by: Optional[UserRequest] = None) -> StreamResponse[MuteUsersResponse]: - response = await self.client.mute_users(type=self.call_type, id=self.id, audio=audio, mute_all_users=mute_all_users, muted_by_id=muted_by_id, screenshare=screenshare, screenshare_audio=screenshare_audio, video=video, user_ids=user_ids, muted_by=muted_by) + async def mute_users( + self, + audio: Optional[bool] = None, + mute_all_users: Optional[bool] = None, + muted_by_id: Optional[str] = None, + screenshare: Optional[bool] = None, + screenshare_audio: Optional[bool] = None, + video: Optional[bool] = None, + user_ids: Optional[List[str]] = None, + muted_by: Optional[UserRequest] = None, + ) -> StreamResponse[MuteUsersResponse]: + response = await self.client.mute_users( + type=self.call_type, + id=self.id, + audio=audio, + mute_all_users=mute_all_users, + muted_by_id=muted_by_id, + screenshare=screenshare, + screenshare_audio=screenshare_audio, + video=video, + user_ids=user_ids, + muted_by=muted_by, + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def query_call_participants(self, limit: Optional[int] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallParticipantsResponse]: - response = await self.client.query_call_participants(type=self.call_type, id=self.id, limit=limit, filter_conditions=filter_conditions) + async def query_call_participants( + self, + limit: Optional[int] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallParticipantsResponse]: + response = await self.client.query_call_participants( + type=self.call_type, + id=self.id, + limit=limit, + filter_conditions=filter_conditions, + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def video_pin(self, session_id: str, user_id: str) -> StreamResponse[PinResponse]: - response = await self.client.video_pin(type=self.call_type, id=self.id, session_id=session_id, user_id=user_id) + async def video_pin( + self, session_id: str, user_id: str + ) -> StreamResponse[PinResponse]: + response = await self.client.video_pin( + type=self.call_type, id=self.id, session_id=session_id, user_id=user_id + ) self._sync_from_response(response.data) return response @@ -105,148 +274,310 @@ async def list_recordings(self) -> StreamResponse[ListRecordingsResponse]: return response @attach_call_cid_async - async def start_recording(self, recording_type: str, recording_external_storage: Optional[str] = None) -> StreamResponse[StartRecordingResponse]: - response = await self.client.start_recording(type=self.call_type, id=self.id, recording_type=recording_type, recording_external_storage=recording_external_storage) + async def start_recording( + self, recording_type: str, recording_external_storage: Optional[str] = None + ) -> StreamResponse[StartRecordingResponse]: + response = await self.client.start_recording( + type=self.call_type, + id=self.id, + recording_type=recording_type, + recording_external_storage=recording_external_storage, + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def stop_recording(self, recording_type: str, ) -> StreamResponse[StopRecordingResponse]: - response = await self.client.stop_recording(type=self.call_type, id=self.id, recording_type=recording_type, ) + async def stop_recording( + self, + recording_type: str, + ) -> StreamResponse[StopRecordingResponse]: + response = await self.client.stop_recording( + type=self.call_type, + id=self.id, + recording_type=recording_type, + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def get_call_report(self, session_id: Optional[str] = None) -> StreamResponse[GetCallReportResponse]: - response = await self.client.get_call_report(type=self.call_type, id=self.id, session_id=session_id) + async def get_call_report( + self, session_id: Optional[str] = None + ) -> StreamResponse[GetCallReportResponse]: + response = await self.client.get_call_report( + type=self.call_type, id=self.id, session_id=session_id + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def ring(self, video: Optional[bool] = None, members_ids: Optional[List[str]] = None) -> StreamResponse[RingCallResponse]: - response = await self.client.ring_call(type=self.call_type, id=self.id, video=video, members_ids=members_ids) + async def ring( + self, video: Optional[bool] = None, members_ids: Optional[List[str]] = None + ) -> StreamResponse[RingCallResponse]: + response = await self.client.ring_call( + type=self.call_type, id=self.id, video=video, members_ids=members_ids + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def start_rtmp_broadcasts(self, broadcasts: List[RTMPBroadcastRequest]) -> StreamResponse[StartRTMPBroadcastsResponse]: - response = await self.client.start_rtmp_broadcasts(type=self.call_type, id=self.id, broadcasts=broadcasts) + async def start_rtmp_broadcasts( + self, broadcasts: List[RTMPBroadcastRequest] + ) -> StreamResponse[StartRTMPBroadcastsResponse]: + response = await self.client.start_rtmp_broadcasts( + type=self.call_type, id=self.id, broadcasts=broadcasts + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def stop_all_rtmp_broadcasts(self) -> StreamResponse[StopAllRTMPBroadcastsResponse]: - response = await self.client.stop_all_rtmp_broadcasts(type=self.call_type, id=self.id) + async def stop_all_rtmp_broadcasts( + self, + ) -> StreamResponse[StopAllRTMPBroadcastsResponse]: + response = await self.client.stop_all_rtmp_broadcasts( + type=self.call_type, id=self.id + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def stop_rtmp_broadcast(self, name: str, ) -> StreamResponse[StopRTMPBroadcastsResponse]: - response = await self.client.stop_rtmp_broadcast(type=self.call_type, id=self.id, name=name, ) + async def stop_rtmp_broadcast( + self, + name: str, + ) -> StreamResponse[StopRTMPBroadcastsResponse]: + response = await self.client.stop_rtmp_broadcast( + type=self.call_type, + id=self.id, + name=name, + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def get_call_participant_session_metrics(self, session: str, user: str, user_session: str, since: Optional[datetime] = None, until: Optional[datetime] = None) -> StreamResponse[GetCallParticipantSessionMetricsResponse]: - response = await self.client.get_call_participant_session_metrics(type=self.call_type, id=self.id, session=session, user=user, user_session=user_session, since=since, until=until) + async def get_call_participant_session_metrics( + self, + session: str, + user: str, + user_session: str, + since: Optional[datetime] = None, + until: Optional[datetime] = None, + ) -> StreamResponse[GetCallParticipantSessionMetricsResponse]: + response = await self.client.get_call_participant_session_metrics( + type=self.call_type, + id=self.id, + session=session, + user=user, + user_session=user_session, + since=since, + until=until, + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def query_call_participant_sessions(self, session: str, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallParticipantSessionsResponse]: - response = await self.client.query_call_participant_sessions(type=self.call_type, id=self.id, session=session, limit=limit, prev=prev, next=next, filter_conditions=filter_conditions) + async def query_call_participant_sessions( + self, + session: str, + limit: Optional[int] = None, + prev: Optional[str] = None, + next: Optional[str] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallParticipantSessionsResponse]: + response = await self.client.query_call_participant_sessions( + type=self.call_type, + id=self.id, + session=session, + limit=limit, + prev=prev, + next=next, + filter_conditions=filter_conditions, + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def start_hls_broadcasting(self) -> StreamResponse[StartHLSBroadcastingResponse]: - response = await self.client.start_hls_broadcasting(type=self.call_type, id=self.id) + async def start_hls_broadcasting( + self, + ) -> StreamResponse[StartHLSBroadcastingResponse]: + response = await self.client.start_hls_broadcasting( + type=self.call_type, id=self.id + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def start_closed_captions(self, enable_transcription: Optional[bool] = None, external_storage: Optional[str] = None, language: Optional[str] = None, speech_segment_config: Optional[SpeechSegmentConfig] = None) -> StreamResponse[StartClosedCaptionsResponse]: - response = await self.client.start_closed_captions(type=self.call_type, id=self.id, enable_transcription=enable_transcription, external_storage=external_storage, language=language, speech_segment_config=speech_segment_config) + async def start_closed_captions( + self, + enable_transcription: Optional[bool] = None, + external_storage: Optional[str] = None, + language: Optional[str] = None, + speech_segment_config: Optional[SpeechSegmentConfig] = None, + ) -> StreamResponse[StartClosedCaptionsResponse]: + response = await self.client.start_closed_captions( + type=self.call_type, + id=self.id, + enable_transcription=enable_transcription, + external_storage=external_storage, + language=language, + speech_segment_config=speech_segment_config, + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def start_frame_recording(self, recording_external_storage: Optional[str] = None) -> StreamResponse[StartFrameRecordingResponse]: - response = await self.client.start_frame_recording(type=self.call_type, id=self.id, recording_external_storage=recording_external_storage) + async def start_frame_recording( + self, recording_external_storage: Optional[str] = None + ) -> StreamResponse[StartFrameRecordingResponse]: + response = await self.client.start_frame_recording( + type=self.call_type, + id=self.id, + recording_external_storage=recording_external_storage, + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def start_transcription(self, enable_closed_captions: Optional[bool] = None, language: Optional[str] = None, transcription_external_storage: Optional[str] = None) -> StreamResponse[StartTranscriptionResponse]: - response = await self.client.start_transcription(type=self.call_type, id=self.id, enable_closed_captions=enable_closed_captions, language=language, transcription_external_storage=transcription_external_storage) + async def start_transcription( + self, + enable_closed_captions: Optional[bool] = None, + language: Optional[str] = None, + transcription_external_storage: Optional[str] = None, + ) -> StreamResponse[StartTranscriptionResponse]: + response = await self.client.start_transcription( + type=self.call_type, + id=self.id, + enable_closed_captions=enable_closed_captions, + language=language, + transcription_external_storage=transcription_external_storage, + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def stop_hls_broadcasting(self) -> StreamResponse[StopHLSBroadcastingResponse]: - response = await self.client.stop_hls_broadcasting(type=self.call_type, id=self.id) + async def stop_hls_broadcasting( + self, + ) -> StreamResponse[StopHLSBroadcastingResponse]: + response = await self.client.stop_hls_broadcasting( + type=self.call_type, id=self.id + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def stop_closed_captions(self, stop_transcription: Optional[bool] = None) -> StreamResponse[StopClosedCaptionsResponse]: - response = await self.client.stop_closed_captions(type=self.call_type, id=self.id, stop_transcription=stop_transcription) + async def stop_closed_captions( + self, stop_transcription: Optional[bool] = None + ) -> StreamResponse[StopClosedCaptionsResponse]: + response = await self.client.stop_closed_captions( + type=self.call_type, id=self.id, stop_transcription=stop_transcription + ) self._sync_from_response(response.data) return response @attach_call_cid_async async def stop_frame_recording(self) -> StreamResponse[StopFrameRecordingResponse]: - response = await self.client.stop_frame_recording(type=self.call_type, id=self.id) + response = await self.client.stop_frame_recording( + type=self.call_type, id=self.id + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def stop_live(self, continue_closed_caption: Optional[bool] = None, continue_composite_recording: Optional[bool] = None, continue_hls: Optional[bool] = None, continue_individual_recording: Optional[bool] = None, continue_raw_recording: Optional[bool] = None, continue_recording: Optional[bool] = None, continue_rtmp_broadcasts: Optional[bool] = None, continue_transcription: Optional[bool] = None) -> StreamResponse[StopLiveResponse]: - response = await self.client.stop_live(type=self.call_type, id=self.id, continue_closed_caption=continue_closed_caption, continue_composite_recording=continue_composite_recording, continue_hls=continue_hls, continue_individual_recording=continue_individual_recording, continue_raw_recording=continue_raw_recording, continue_recording=continue_recording, continue_rtmp_broadcasts=continue_rtmp_broadcasts, continue_transcription=continue_transcription) + async def stop_live( + self, + continue_closed_caption: Optional[bool] = None, + continue_composite_recording: Optional[bool] = None, + continue_hls: Optional[bool] = None, + continue_individual_recording: Optional[bool] = None, + continue_raw_recording: Optional[bool] = None, + continue_recording: Optional[bool] = None, + continue_rtmp_broadcasts: Optional[bool] = None, + continue_transcription: Optional[bool] = None, + ) -> StreamResponse[StopLiveResponse]: + response = await self.client.stop_live( + type=self.call_type, + id=self.id, + continue_closed_caption=continue_closed_caption, + continue_composite_recording=continue_composite_recording, + continue_hls=continue_hls, + continue_individual_recording=continue_individual_recording, + continue_raw_recording=continue_raw_recording, + continue_recording=continue_recording, + continue_rtmp_broadcasts=continue_rtmp_broadcasts, + continue_transcription=continue_transcription, + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def stop_transcription(self, stop_closed_captions: Optional[bool] = None) -> StreamResponse[StopTranscriptionResponse]: - response = await self.client.stop_transcription(type=self.call_type, id=self.id, stop_closed_captions=stop_closed_captions) + async def stop_transcription( + self, stop_closed_captions: Optional[bool] = None + ) -> StreamResponse[StopTranscriptionResponse]: + response = await self.client.stop_transcription( + type=self.call_type, id=self.id, stop_closed_captions=stop_closed_captions + ) self._sync_from_response(response.data) return response @attach_call_cid_async async def list_transcriptions(self) -> StreamResponse[ListTranscriptionsResponse]: - response = await self.client.list_transcriptions(type=self.call_type, id=self.id) + response = await self.client.list_transcriptions( + type=self.call_type, id=self.id + ) self._sync_from_response(response.data) return response @attach_call_cid_async async def unblock_user(self, user_id: str) -> StreamResponse[UnblockUserResponse]: - response = await self.client.unblock_user(type=self.call_type, id=self.id, user_id=user_id) + response = await self.client.unblock_user( + type=self.call_type, id=self.id, user_id=user_id + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def video_unpin(self, session_id: str, user_id: str) -> StreamResponse[UnpinResponse]: - response = await self.client.video_unpin(type=self.call_type, id=self.id, session_id=session_id, user_id=user_id) + async def video_unpin( + self, session_id: str, user_id: str + ) -> StreamResponse[UnpinResponse]: + response = await self.client.video_unpin( + type=self.call_type, id=self.id, session_id=session_id, user_id=user_id + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def update_user_permissions(self, user_id: str, grant_permissions: Optional[List[str]] = None, revoke_permissions: Optional[List[str]] = None) -> StreamResponse[UpdateUserPermissionsResponse]: - response = await self.client.update_user_permissions(type=self.call_type, id=self.id, user_id=user_id, grant_permissions=grant_permissions, revoke_permissions=revoke_permissions) + async def update_user_permissions( + self, + user_id: str, + grant_permissions: Optional[List[str]] = None, + revoke_permissions: Optional[List[str]] = None, + ) -> StreamResponse[UpdateUserPermissionsResponse]: + response = await self.client.update_user_permissions( + type=self.call_type, + id=self.id, + user_id=user_id, + grant_permissions=grant_permissions, + revoke_permissions=revoke_permissions, + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def delete_recording(self, session: str, filename: str) -> StreamResponse[DeleteRecordingResponse]: - response = await self.client.delete_recording(type=self.call_type, id=self.id, session=session, filename=filename) + async def delete_recording( + self, session: str, filename: str + ) -> StreamResponse[DeleteRecordingResponse]: + response = await self.client.delete_recording( + type=self.call_type, id=self.id, session=session, filename=filename + ) self._sync_from_response(response.data) return response @attach_call_cid_async - async def delete_transcription(self, session: str, filename: str) -> StreamResponse[DeleteTranscriptionResponse]: - response = await self.client.delete_transcription(type=self.call_type, id=self.id, session=session, filename=filename) + async def delete_transcription( + self, session: str, filename: str + ) -> StreamResponse[DeleteTranscriptionResponse]: + response = await self.client.delete_transcription( + type=self.call_type, id=self.id, session=session, filename=filename + ) self._sync_from_response(response.data) return response - - create = get_or_create \ No newline at end of file + create = get_or_create diff --git a/getstream/video/async_rest_client.py b/getstream/video/async_rest_client.py index 50c30ed8..993e7317 100644 --- a/getstream/video/async_rest_client.py +++ b/getstream/video/async_rest_client.py @@ -1,4 +1,3 @@ - # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import AsyncBaseClient from getstream.common import telemetry @@ -8,8 +7,14 @@ class VideoRestClient(AsyncBaseClient): - - def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): + def __init__( + self, + api_key: str, + base_url: str, + timeout: float, + token: str, + user_agent: str = None, + ): """ Initializes VideoClient with BaseClient instance :param api_key: A string representing the client's API key @@ -26,486 +31,1378 @@ def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user user_agent=user_agent, ) - @telemetry.operation_name("getstream.api.video.get_active_calls_status") - async def get_active_calls_status(self) -> StreamResponse[GetActiveCallsStatusResponse]: - return await self.get("/api/v2/video/active_calls_status", GetActiveCallsStatusResponse) - + async def get_active_calls_status( + self, + ) -> StreamResponse[GetActiveCallsStatusResponse]: + return await self.get( + "/api/v2/video/active_calls_status", GetActiveCallsStatusResponse + ) + @telemetry.operation_name("getstream.api.video.query_user_feedback") - async def query_user_feedback(self, full: Optional[bool] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryUserFeedbackResponse]: + async def query_user_feedback( + self, + full: Optional[bool] = None, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryUserFeedbackResponse]: query_params = build_query_param(full=full) - json = QueryUserFeedbackRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() - return await self.post("/api/v2/video/call/feedback", QueryUserFeedbackResponse, query_params=query_params, json=json) - + json = QueryUserFeedbackRequest( + limit=limit, + next=next, + prev=prev, + sort=sort, + filter_conditions=filter_conditions, + ).to_dict() + return await self.post( + "/api/v2/video/call/feedback", + QueryUserFeedbackResponse, + query_params=query_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.query_call_members") - async def query_call_members(self, id: str, type: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallMembersResponse]: - json = QueryCallMembersRequest(id=id, type=type, limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() - return await self.post("/api/v2/video/call/members", QueryCallMembersResponse, json=json) - + async def query_call_members( + self, + id: str, + type: str, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallMembersResponse]: + json = QueryCallMembersRequest( + id=id, + type=type, + limit=limit, + next=next, + prev=prev, + sort=sort, + filter_conditions=filter_conditions, + ).to_dict() + return await self.post( + "/api/v2/video/call/members", QueryCallMembersResponse, json=json + ) + @telemetry.operation_name("getstream.api.video.query_call_stats") - async def query_call_stats(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallStatsResponse]: - json = QueryCallStatsRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() - return await self.post("/api/v2/video/call/stats", QueryCallStatsResponse, json=json) - + async def query_call_stats( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallStatsResponse]: + json = QueryCallStatsRequest( + limit=limit, + next=next, + prev=prev, + sort=sort, + filter_conditions=filter_conditions, + ).to_dict() + return await self.post( + "/api/v2/video/call/stats", QueryCallStatsResponse, json=json + ) + @telemetry.operation_name("getstream.api.video.get_call") - async def get_call(self, type: str, id: str, members_limit: Optional[int] = None, ring: Optional[bool] = None, notify: Optional[bool] = None, video: Optional[bool] = None) -> StreamResponse[GetCallResponse]: - query_params = build_query_param(members_limit=members_limit, ring=ring, notify=notify, video=video) + async def get_call( + self, + type: str, + id: str, + members_limit: Optional[int] = None, + ring: Optional[bool] = None, + notify: Optional[bool] = None, + video: Optional[bool] = None, + ) -> StreamResponse[GetCallResponse]: + query_params = build_query_param( + members_limit=members_limit, ring=ring, notify=notify, video=video + ) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return await self.get("/api/v2/video/call/{type}/{id}", GetCallResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/video/call/{type}/{id}", + GetCallResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.update_call") - async def update_call(self, type: str, id: str, starts_at: Optional[datetime] = None, custom: Optional[Dict[str, object]] = None, settings_override: Optional[CallSettingsRequest] = None) -> StreamResponse[UpdateCallResponse]: + async def update_call( + self, + type: str, + id: str, + starts_at: Optional[datetime] = None, + custom: Optional[Dict[str, object]] = None, + settings_override: Optional[CallSettingsRequest] = None, + ) -> StreamResponse[UpdateCallResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = UpdateCallRequest(starts_at=starts_at, custom=custom, settings_override=settings_override).to_dict() - return await self.patch("/api/v2/video/call/{type}/{id}", UpdateCallResponse, path_params=path_params, json=json) - + json = UpdateCallRequest( + starts_at=starts_at, custom=custom, settings_override=settings_override + ).to_dict() + return await self.patch( + "/api/v2/video/call/{type}/{id}", + UpdateCallResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.get_or_create_call") - async def get_or_create_call(self, type: str, id: str, members_limit: Optional[int] = None, notify: Optional[bool] = None, ring: Optional[bool] = None, video: Optional[bool] = None, data: Optional[CallRequest] = None) -> StreamResponse[GetOrCreateCallResponse]: + async def get_or_create_call( + self, + type: str, + id: str, + members_limit: Optional[int] = None, + notify: Optional[bool] = None, + ring: Optional[bool] = None, + video: Optional[bool] = None, + data: Optional[CallRequest] = None, + ) -> StreamResponse[GetOrCreateCallResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = GetOrCreateCallRequest(members_limit=members_limit, notify=notify, ring=ring, video=video, data=data).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}", GetOrCreateCallResponse, path_params=path_params, json=json) - + json = GetOrCreateCallRequest( + members_limit=members_limit, + notify=notify, + ring=ring, + video=video, + data=data, + ).to_dict() + return await self.post( + "/api/v2/video/call/{type}/{id}", + GetOrCreateCallResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.block_user") - async def block_user(self, type: str, id: str, user_id: str) -> StreamResponse[BlockUserResponse]: + async def block_user( + self, type: str, id: str, user_id: str + ) -> StreamResponse[BlockUserResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = BlockUserRequest(user_id=user_id).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/block", BlockUserResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/video/call/{type}/{id}/block", + BlockUserResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.send_closed_caption") - async def send_closed_caption(self, type: str, id: str, speaker_id: str, text: str, end_time: Optional[datetime] = None, language: Optional[str] = None, service: Optional[str] = None, start_time: Optional[datetime] = None, translated: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[SendClosedCaptionResponse]: + async def send_closed_caption( + self, + type: str, + id: str, + speaker_id: str, + text: str, + end_time: Optional[datetime] = None, + language: Optional[str] = None, + service: Optional[str] = None, + start_time: Optional[datetime] = None, + translated: Optional[bool] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[SendClosedCaptionResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = SendClosedCaptionRequest(speaker_id=speaker_id, text=text, end_time=end_time, language=language, service=service, start_time=start_time, translated=translated, user_id=user_id, user=user).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/closed_captions", SendClosedCaptionResponse, path_params=path_params, json=json) - + json = SendClosedCaptionRequest( + speaker_id=speaker_id, + text=text, + end_time=end_time, + language=language, + service=service, + start_time=start_time, + translated=translated, + user_id=user_id, + user=user, + ).to_dict() + return await self.post( + "/api/v2/video/call/{type}/{id}/closed_captions", + SendClosedCaptionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.delete_call") - async def delete_call(self, type: str, id: str, hard: Optional[bool] = None) -> StreamResponse[DeleteCallResponse]: + async def delete_call( + self, type: str, id: str, hard: Optional[bool] = None + ) -> StreamResponse[DeleteCallResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = DeleteCallRequest(hard=hard).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/delete", DeleteCallResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/video/call/{type}/{id}/delete", + DeleteCallResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.send_call_event") - async def send_call_event(self, type: str, id: str, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[SendCallEventResponse]: + async def send_call_event( + self, + type: str, + id: str, + user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[SendCallEventResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = SendCallEventRequest(user_id=user_id, custom=custom, user=user).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/event", SendCallEventResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/video/call/{type}/{id}/event", + SendCallEventResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.collect_user_feedback") - async def collect_user_feedback(self, type: str, id: str, rating: int, sdk: str, sdk_version: str, reason: Optional[str] = None, user_session_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[CollectUserFeedbackResponse]: + async def collect_user_feedback( + self, + type: str, + id: str, + rating: int, + sdk: str, + sdk_version: str, + reason: Optional[str] = None, + user_session_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + ) -> StreamResponse[CollectUserFeedbackResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = CollectUserFeedbackRequest(rating=rating, sdk=sdk, sdk_version=sdk_version, reason=reason, user_session_id=user_session_id, custom=custom).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/feedback", CollectUserFeedbackResponse, path_params=path_params, json=json) - + json = CollectUserFeedbackRequest( + rating=rating, + sdk=sdk, + sdk_version=sdk_version, + reason=reason, + user_session_id=user_session_id, + custom=custom, + ).to_dict() + return await self.post( + "/api/v2/video/call/{type}/{id}/feedback", + CollectUserFeedbackResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.go_live") - async def go_live(self, type: str, id: str, recording_storage_name: Optional[str] = None, start_closed_caption: Optional[bool] = None, start_composite_recording: Optional[bool] = None, start_hls: Optional[bool] = None, start_individual_recording: Optional[bool] = None, start_raw_recording: Optional[bool] = None, start_recording: Optional[bool] = None, start_transcription: Optional[bool] = None, transcription_storage_name: Optional[str] = None) -> StreamResponse[GoLiveResponse]: + async def go_live( + self, + type: str, + id: str, + recording_storage_name: Optional[str] = None, + start_closed_caption: Optional[bool] = None, + start_composite_recording: Optional[bool] = None, + start_hls: Optional[bool] = None, + start_individual_recording: Optional[bool] = None, + start_raw_recording: Optional[bool] = None, + start_recording: Optional[bool] = None, + start_transcription: Optional[bool] = None, + transcription_storage_name: Optional[str] = None, + ) -> StreamResponse[GoLiveResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = GoLiveRequest(recording_storage_name=recording_storage_name, start_closed_caption=start_closed_caption, start_composite_recording=start_composite_recording, start_hls=start_hls, start_individual_recording=start_individual_recording, start_raw_recording=start_raw_recording, start_recording=start_recording, start_transcription=start_transcription, transcription_storage_name=transcription_storage_name).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/go_live", GoLiveResponse, path_params=path_params, json=json) - + json = GoLiveRequest( + recording_storage_name=recording_storage_name, + start_closed_caption=start_closed_caption, + start_composite_recording=start_composite_recording, + start_hls=start_hls, + start_individual_recording=start_individual_recording, + start_raw_recording=start_raw_recording, + start_recording=start_recording, + start_transcription=start_transcription, + transcription_storage_name=transcription_storage_name, + ).to_dict() + return await self.post( + "/api/v2/video/call/{type}/{id}/go_live", + GoLiveResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.kick_user") - async def kick_user(self, type: str, id: str, user_id: str, block: Optional[bool] = None, kicked_by_id: Optional[str] = None, kicked_by: Optional[UserRequest] = None) -> StreamResponse[KickUserResponse]: + async def kick_user( + self, + type: str, + id: str, + user_id: str, + block: Optional[bool] = None, + kicked_by_id: Optional[str] = None, + kicked_by: Optional[UserRequest] = None, + ) -> StreamResponse[KickUserResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = KickUserRequest(user_id=user_id, block=block, kicked_by_id=kicked_by_id, kicked_by=kicked_by).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/kick", KickUserResponse, path_params=path_params, json=json) - + json = KickUserRequest( + user_id=user_id, block=block, kicked_by_id=kicked_by_id, kicked_by=kicked_by + ).to_dict() + return await self.post( + "/api/v2/video/call/{type}/{id}/kick", + KickUserResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.end_call") async def end_call(self, type: str, id: str) -> StreamResponse[EndCallResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return await self.post("/api/v2/video/call/{type}/{id}/mark_ended", EndCallResponse, path_params=path_params) - + return await self.post( + "/api/v2/video/call/{type}/{id}/mark_ended", + EndCallResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.update_call_members") - async def update_call_members(self, type: str, id: str, remove_members: Optional[List[str]] = None, update_members: Optional[List[MemberRequest]] = None) -> StreamResponse[UpdateCallMembersResponse]: + async def update_call_members( + self, + type: str, + id: str, + remove_members: Optional[List[str]] = None, + update_members: Optional[List[MemberRequest]] = None, + ) -> StreamResponse[UpdateCallMembersResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = UpdateCallMembersRequest(remove_members=remove_members, update_members=update_members).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/members", UpdateCallMembersResponse, path_params=path_params, json=json) - + json = UpdateCallMembersRequest( + remove_members=remove_members, update_members=update_members + ).to_dict() + return await self.post( + "/api/v2/video/call/{type}/{id}/members", + UpdateCallMembersResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.mute_users") - async def mute_users(self, type: str, id: str, audio: Optional[bool] = None, mute_all_users: Optional[bool] = None, muted_by_id: Optional[str] = None, screenshare: Optional[bool] = None, screenshare_audio: Optional[bool] = None, video: Optional[bool] = None, user_ids: Optional[List[str]] = None, muted_by: Optional[UserRequest] = None) -> StreamResponse[MuteUsersResponse]: + async def mute_users( + self, + type: str, + id: str, + audio: Optional[bool] = None, + mute_all_users: Optional[bool] = None, + muted_by_id: Optional[str] = None, + screenshare: Optional[bool] = None, + screenshare_audio: Optional[bool] = None, + video: Optional[bool] = None, + user_ids: Optional[List[str]] = None, + muted_by: Optional[UserRequest] = None, + ) -> StreamResponse[MuteUsersResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = MuteUsersRequest(audio=audio, mute_all_users=mute_all_users, muted_by_id=muted_by_id, screenshare=screenshare, screenshare_audio=screenshare_audio, video=video, user_ids=user_ids, muted_by=muted_by).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/mute_users", MuteUsersResponse, path_params=path_params, json=json) - + json = MuteUsersRequest( + audio=audio, + mute_all_users=mute_all_users, + muted_by_id=muted_by_id, + screenshare=screenshare, + screenshare_audio=screenshare_audio, + video=video, + user_ids=user_ids, + muted_by=muted_by, + ).to_dict() + return await self.post( + "/api/v2/video/call/{type}/{id}/mute_users", + MuteUsersResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.query_call_participants") - async def query_call_participants(self, id: str, type: str, limit: Optional[int] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallParticipantsResponse]: + async def query_call_participants( + self, + id: str, + type: str, + limit: Optional[int] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallParticipantsResponse]: query_params = build_query_param(limit=limit) path_params = { - "id": id, "type": type, + "id": id, + "type": type, } - json = QueryCallParticipantsRequest(filter_conditions=filter_conditions).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/participants", QueryCallParticipantsResponse, query_params=query_params, path_params=path_params, json=json) - + json = QueryCallParticipantsRequest( + filter_conditions=filter_conditions + ).to_dict() + return await self.post( + "/api/v2/video/call/{type}/{id}/participants", + QueryCallParticipantsResponse, + query_params=query_params, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.video_pin") - async def video_pin(self, type: str, id: str, session_id: str, user_id: str) -> StreamResponse[PinResponse]: + async def video_pin( + self, type: str, id: str, session_id: str, user_id: str + ) -> StreamResponse[PinResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = PinRequest(session_id=session_id, user_id=user_id).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/pin", PinResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/video/call/{type}/{id}/pin", + PinResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.list_recordings") - async def list_recordings(self, type: str, id: str) -> StreamResponse[ListRecordingsResponse]: + async def list_recordings( + self, type: str, id: str + ) -> StreamResponse[ListRecordingsResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return await self.get("/api/v2/video/call/{type}/{id}/recordings", ListRecordingsResponse, path_params=path_params) - + return await self.get( + "/api/v2/video/call/{type}/{id}/recordings", + ListRecordingsResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.start_recording") - async def start_recording(self, type: str, id: str, recording_type: str, recording_external_storage: Optional[str] = None) -> StreamResponse[StartRecordingResponse]: + async def start_recording( + self, + type: str, + id: str, + recording_type: str, + recording_external_storage: Optional[str] = None, + ) -> StreamResponse[StartRecordingResponse]: path_params = { - "type": type, "id": id, "recording_type": recording_type, + "type": type, + "id": id, + "recording_type": recording_type, } - json = StartRecordingRequest(recording_external_storage=recording_external_storage).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/recordings/{recording_type}/start", StartRecordingResponse, path_params=path_params, json=json) - + json = StartRecordingRequest( + recording_external_storage=recording_external_storage + ).to_dict() + return await self.post( + "/api/v2/video/call/{type}/{id}/recordings/{recording_type}/start", + StartRecordingResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.stop_recording") - async def stop_recording(self, type: str, id: str, recording_type: str, ) -> StreamResponse[StopRecordingResponse]: + async def stop_recording( + self, + type: str, + id: str, + recording_type: str, + ) -> StreamResponse[StopRecordingResponse]: path_params = { - "type": type, "id": id, "recording_type": recording_type, + "type": type, + "id": id, + "recording_type": recording_type, } json = StopRecordingRequest().to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/recordings/{recording_type}/stop", StopRecordingResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/video/call/{type}/{id}/recordings/{recording_type}/stop", + StopRecordingResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.get_call_report") - async def get_call_report(self, type: str, id: str, session_id: Optional[str] = None) -> StreamResponse[GetCallReportResponse]: + async def get_call_report( + self, type: str, id: str, session_id: Optional[str] = None + ) -> StreamResponse[GetCallReportResponse]: query_params = build_query_param(session_id=session_id) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return await self.get("/api/v2/video/call/{type}/{id}/report", GetCallReportResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/video/call/{type}/{id}/report", + GetCallReportResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.ring_call") - async def ring_call(self, type: str, id: str, video: Optional[bool] = None, members_ids: Optional[List[str]] = None) -> StreamResponse[RingCallResponse]: + async def ring_call( + self, + type: str, + id: str, + video: Optional[bool] = None, + members_ids: Optional[List[str]] = None, + ) -> StreamResponse[RingCallResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = RingCallRequest(video=video, members_ids=members_ids).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/ring", RingCallResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/video/call/{type}/{id}/ring", + RingCallResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.start_rtmp_broadcasts") - async def start_rtmp_broadcasts(self, type: str, id: str, broadcasts: List[RTMPBroadcastRequest]) -> StreamResponse[StartRTMPBroadcastsResponse]: + async def start_rtmp_broadcasts( + self, type: str, id: str, broadcasts: List[RTMPBroadcastRequest] + ) -> StreamResponse[StartRTMPBroadcastsResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = StartRTMPBroadcastsRequest(broadcasts=broadcasts).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/rtmp_broadcasts", StartRTMPBroadcastsResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/video/call/{type}/{id}/rtmp_broadcasts", + StartRTMPBroadcastsResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.stop_all_rtmp_broadcasts") - async def stop_all_rtmp_broadcasts(self, type: str, id: str) -> StreamResponse[StopAllRTMPBroadcastsResponse]: + async def stop_all_rtmp_broadcasts( + self, type: str, id: str + ) -> StreamResponse[StopAllRTMPBroadcastsResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return await self.post("/api/v2/video/call/{type}/{id}/rtmp_broadcasts/stop", StopAllRTMPBroadcastsResponse, path_params=path_params) - + return await self.post( + "/api/v2/video/call/{type}/{id}/rtmp_broadcasts/stop", + StopAllRTMPBroadcastsResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.stop_rtmp_broadcast") - async def stop_rtmp_broadcast(self, type: str, id: str, name: str, ) -> StreamResponse[StopRTMPBroadcastsResponse]: + async def stop_rtmp_broadcast( + self, + type: str, + id: str, + name: str, + ) -> StreamResponse[StopRTMPBroadcastsResponse]: path_params = { - "type": type, "id": id, "name": name, + "type": type, + "id": id, + "name": name, } json = StopRTMPBroadcastsRequest().to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/rtmp_broadcasts/{name}/stop", StopRTMPBroadcastsResponse, path_params=path_params, json=json) - - @telemetry.operation_name("getstream.api.video.get_call_participant_session_metrics") - async def get_call_participant_session_metrics(self, type: str, id: str, session: str, user: str, user_session: str, since: Optional[datetime] = None, until: Optional[datetime] = None) -> StreamResponse[GetCallParticipantSessionMetricsResponse]: + return await self.post( + "/api/v2/video/call/{type}/{id}/rtmp_broadcasts/{name}/stop", + StopRTMPBroadcastsResponse, + path_params=path_params, + json=json, + ) + + @telemetry.operation_name( + "getstream.api.video.get_call_participant_session_metrics" + ) + async def get_call_participant_session_metrics( + self, + type: str, + id: str, + session: str, + user: str, + user_session: str, + since: Optional[datetime] = None, + until: Optional[datetime] = None, + ) -> StreamResponse[GetCallParticipantSessionMetricsResponse]: query_params = build_query_param(since=since, until=until) path_params = { - "type": type, "id": id, "session": session, "user": user, "user_session": user_session, + "type": type, + "id": id, + "session": session, + "user": user, + "user_session": user_session, } - return await self.get("/api/v2/video/call/{type}/{id}/session/{session}/participant/{user}/{user_session}/details/track", GetCallParticipantSessionMetricsResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/video/call/{type}/{id}/session/{session}/participant/{user}/{user_session}/details/track", + GetCallParticipantSessionMetricsResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.query_call_participant_sessions") - async def query_call_participant_sessions(self, type: str, id: str, session: str, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallParticipantSessionsResponse]: - query_params = build_query_param(limit=limit, prev=prev, next=next, filter_conditions=filter_conditions) + async def query_call_participant_sessions( + self, + type: str, + id: str, + session: str, + limit: Optional[int] = None, + prev: Optional[str] = None, + next: Optional[str] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallParticipantSessionsResponse]: + query_params = build_query_param( + limit=limit, prev=prev, next=next, filter_conditions=filter_conditions + ) path_params = { - "type": type, "id": id, "session": session, + "type": type, + "id": id, + "session": session, } - return await self.get("/api/v2/video/call/{type}/{id}/session/{session}/participant_sessions", QueryCallParticipantSessionsResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/video/call/{type}/{id}/session/{session}/participant_sessions", + QueryCallParticipantSessionsResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.start_hls_broadcasting") - async def start_hls_broadcasting(self, type: str, id: str) -> StreamResponse[StartHLSBroadcastingResponse]: + async def start_hls_broadcasting( + self, type: str, id: str + ) -> StreamResponse[StartHLSBroadcastingResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return await self.post("/api/v2/video/call/{type}/{id}/start_broadcasting", StartHLSBroadcastingResponse, path_params=path_params) - + return await self.post( + "/api/v2/video/call/{type}/{id}/start_broadcasting", + StartHLSBroadcastingResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.start_closed_captions") - async def start_closed_captions(self, type: str, id: str, enable_transcription: Optional[bool] = None, external_storage: Optional[str] = None, language: Optional[str] = None, speech_segment_config: Optional[SpeechSegmentConfig] = None) -> StreamResponse[StartClosedCaptionsResponse]: + async def start_closed_captions( + self, + type: str, + id: str, + enable_transcription: Optional[bool] = None, + external_storage: Optional[str] = None, + language: Optional[str] = None, + speech_segment_config: Optional[SpeechSegmentConfig] = None, + ) -> StreamResponse[StartClosedCaptionsResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = StartClosedCaptionsRequest(enable_transcription=enable_transcription, external_storage=external_storage, language=language, speech_segment_config=speech_segment_config).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/start_closed_captions", StartClosedCaptionsResponse, path_params=path_params, json=json) - + json = StartClosedCaptionsRequest( + enable_transcription=enable_transcription, + external_storage=external_storage, + language=language, + speech_segment_config=speech_segment_config, + ).to_dict() + return await self.post( + "/api/v2/video/call/{type}/{id}/start_closed_captions", + StartClosedCaptionsResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.start_frame_recording") - async def start_frame_recording(self, type: str, id: str, recording_external_storage: Optional[str] = None) -> StreamResponse[StartFrameRecordingResponse]: + async def start_frame_recording( + self, type: str, id: str, recording_external_storage: Optional[str] = None + ) -> StreamResponse[StartFrameRecordingResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = StartFrameRecordingRequest(recording_external_storage=recording_external_storage).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/start_frame_recording", StartFrameRecordingResponse, path_params=path_params, json=json) - + json = StartFrameRecordingRequest( + recording_external_storage=recording_external_storage + ).to_dict() + return await self.post( + "/api/v2/video/call/{type}/{id}/start_frame_recording", + StartFrameRecordingResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.start_transcription") - async def start_transcription(self, type: str, id: str, enable_closed_captions: Optional[bool] = None, language: Optional[str] = None, transcription_external_storage: Optional[str] = None) -> StreamResponse[StartTranscriptionResponse]: + async def start_transcription( + self, + type: str, + id: str, + enable_closed_captions: Optional[bool] = None, + language: Optional[str] = None, + transcription_external_storage: Optional[str] = None, + ) -> StreamResponse[StartTranscriptionResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = StartTranscriptionRequest(enable_closed_captions=enable_closed_captions, language=language, transcription_external_storage=transcription_external_storage).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/start_transcription", StartTranscriptionResponse, path_params=path_params, json=json) - + json = StartTranscriptionRequest( + enable_closed_captions=enable_closed_captions, + language=language, + transcription_external_storage=transcription_external_storage, + ).to_dict() + return await self.post( + "/api/v2/video/call/{type}/{id}/start_transcription", + StartTranscriptionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.stop_hls_broadcasting") - async def stop_hls_broadcasting(self, type: str, id: str) -> StreamResponse[StopHLSBroadcastingResponse]: + async def stop_hls_broadcasting( + self, type: str, id: str + ) -> StreamResponse[StopHLSBroadcastingResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return await self.post("/api/v2/video/call/{type}/{id}/stop_broadcasting", StopHLSBroadcastingResponse, path_params=path_params) - + return await self.post( + "/api/v2/video/call/{type}/{id}/stop_broadcasting", + StopHLSBroadcastingResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.stop_closed_captions") - async def stop_closed_captions(self, type: str, id: str, stop_transcription: Optional[bool] = None) -> StreamResponse[StopClosedCaptionsResponse]: + async def stop_closed_captions( + self, type: str, id: str, stop_transcription: Optional[bool] = None + ) -> StreamResponse[StopClosedCaptionsResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = StopClosedCaptionsRequest(stop_transcription=stop_transcription).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/stop_closed_captions", StopClosedCaptionsResponse, path_params=path_params, json=json) - + json = StopClosedCaptionsRequest( + stop_transcription=stop_transcription + ).to_dict() + return await self.post( + "/api/v2/video/call/{type}/{id}/stop_closed_captions", + StopClosedCaptionsResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.stop_frame_recording") - async def stop_frame_recording(self, type: str, id: str) -> StreamResponse[StopFrameRecordingResponse]: + async def stop_frame_recording( + self, type: str, id: str + ) -> StreamResponse[StopFrameRecordingResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return await self.post("/api/v2/video/call/{type}/{id}/stop_frame_recording", StopFrameRecordingResponse, path_params=path_params) - + return await self.post( + "/api/v2/video/call/{type}/{id}/stop_frame_recording", + StopFrameRecordingResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.stop_live") - async def stop_live(self, type: str, id: str, continue_closed_caption: Optional[bool] = None, continue_composite_recording: Optional[bool] = None, continue_hls: Optional[bool] = None, continue_individual_recording: Optional[bool] = None, continue_raw_recording: Optional[bool] = None, continue_recording: Optional[bool] = None, continue_rtmp_broadcasts: Optional[bool] = None, continue_transcription: Optional[bool] = None) -> StreamResponse[StopLiveResponse]: + async def stop_live( + self, + type: str, + id: str, + continue_closed_caption: Optional[bool] = None, + continue_composite_recording: Optional[bool] = None, + continue_hls: Optional[bool] = None, + continue_individual_recording: Optional[bool] = None, + continue_raw_recording: Optional[bool] = None, + continue_recording: Optional[bool] = None, + continue_rtmp_broadcasts: Optional[bool] = None, + continue_transcription: Optional[bool] = None, + ) -> StreamResponse[StopLiveResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = StopLiveRequest(continue_closed_caption=continue_closed_caption, continue_composite_recording=continue_composite_recording, continue_hls=continue_hls, continue_individual_recording=continue_individual_recording, continue_raw_recording=continue_raw_recording, continue_recording=continue_recording, continue_rtmp_broadcasts=continue_rtmp_broadcasts, continue_transcription=continue_transcription).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/stop_live", StopLiveResponse, path_params=path_params, json=json) - + json = StopLiveRequest( + continue_closed_caption=continue_closed_caption, + continue_composite_recording=continue_composite_recording, + continue_hls=continue_hls, + continue_individual_recording=continue_individual_recording, + continue_raw_recording=continue_raw_recording, + continue_recording=continue_recording, + continue_rtmp_broadcasts=continue_rtmp_broadcasts, + continue_transcription=continue_transcription, + ).to_dict() + return await self.post( + "/api/v2/video/call/{type}/{id}/stop_live", + StopLiveResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.stop_transcription") - async def stop_transcription(self, type: str, id: str, stop_closed_captions: Optional[bool] = None) -> StreamResponse[StopTranscriptionResponse]: + async def stop_transcription( + self, type: str, id: str, stop_closed_captions: Optional[bool] = None + ) -> StreamResponse[StopTranscriptionResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = StopTranscriptionRequest(stop_closed_captions=stop_closed_captions).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/stop_transcription", StopTranscriptionResponse, path_params=path_params, json=json) - + json = StopTranscriptionRequest( + stop_closed_captions=stop_closed_captions + ).to_dict() + return await self.post( + "/api/v2/video/call/{type}/{id}/stop_transcription", + StopTranscriptionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.list_transcriptions") - async def list_transcriptions(self, type: str, id: str) -> StreamResponse[ListTranscriptionsResponse]: + async def list_transcriptions( + self, type: str, id: str + ) -> StreamResponse[ListTranscriptionsResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return await self.get("/api/v2/video/call/{type}/{id}/transcriptions", ListTranscriptionsResponse, path_params=path_params) - + return await self.get( + "/api/v2/video/call/{type}/{id}/transcriptions", + ListTranscriptionsResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.unblock_user") - async def unblock_user(self, type: str, id: str, user_id: str) -> StreamResponse[UnblockUserResponse]: + async def unblock_user( + self, type: str, id: str, user_id: str + ) -> StreamResponse[UnblockUserResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = UnblockUserRequest(user_id=user_id).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/unblock", UnblockUserResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/video/call/{type}/{id}/unblock", + UnblockUserResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.video_unpin") - async def video_unpin(self, type: str, id: str, session_id: str, user_id: str) -> StreamResponse[UnpinResponse]: + async def video_unpin( + self, type: str, id: str, session_id: str, user_id: str + ) -> StreamResponse[UnpinResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = UnpinRequest(session_id=session_id, user_id=user_id).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/unpin", UnpinResponse, path_params=path_params, json=json) - + return await self.post( + "/api/v2/video/call/{type}/{id}/unpin", + UnpinResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.update_user_permissions") - async def update_user_permissions(self, type: str, id: str, user_id: str, grant_permissions: Optional[List[str]] = None, revoke_permissions: Optional[List[str]] = None) -> StreamResponse[UpdateUserPermissionsResponse]: + async def update_user_permissions( + self, + type: str, + id: str, + user_id: str, + grant_permissions: Optional[List[str]] = None, + revoke_permissions: Optional[List[str]] = None, + ) -> StreamResponse[UpdateUserPermissionsResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = UpdateUserPermissionsRequest(user_id=user_id, grant_permissions=grant_permissions, revoke_permissions=revoke_permissions).to_dict() - return await self.post("/api/v2/video/call/{type}/{id}/user_permissions", UpdateUserPermissionsResponse, path_params=path_params, json=json) - + json = UpdateUserPermissionsRequest( + user_id=user_id, + grant_permissions=grant_permissions, + revoke_permissions=revoke_permissions, + ).to_dict() + return await self.post( + "/api/v2/video/call/{type}/{id}/user_permissions", + UpdateUserPermissionsResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.delete_recording") - async def delete_recording(self, type: str, id: str, session: str, filename: str) -> StreamResponse[DeleteRecordingResponse]: + async def delete_recording( + self, type: str, id: str, session: str, filename: str + ) -> StreamResponse[DeleteRecordingResponse]: path_params = { - "type": type, "id": id, "session": session, "filename": filename, + "type": type, + "id": id, + "session": session, + "filename": filename, } - return await self.delete("/api/v2/video/call/{type}/{id}/{session}/recordings/{filename}", DeleteRecordingResponse, path_params=path_params) - + return await self.delete( + "/api/v2/video/call/{type}/{id}/{session}/recordings/{filename}", + DeleteRecordingResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.delete_transcription") - async def delete_transcription(self, type: str, id: str, session: str, filename: str) -> StreamResponse[DeleteTranscriptionResponse]: + async def delete_transcription( + self, type: str, id: str, session: str, filename: str + ) -> StreamResponse[DeleteTranscriptionResponse]: path_params = { - "type": type, "id": id, "session": session, "filename": filename, + "type": type, + "id": id, + "session": session, + "filename": filename, } - return await self.delete("/api/v2/video/call/{type}/{id}/{session}/transcriptions/{filename}", DeleteTranscriptionResponse, path_params=path_params) - + return await self.delete( + "/api/v2/video/call/{type}/{id}/{session}/transcriptions/{filename}", + DeleteTranscriptionResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.report_client_call_event") - async def report_client_call_event(self, events: List[ClientEvent]) -> StreamResponse[ReportClientEventResponse]: + async def report_client_call_event( + self, events: List[ClientEvent] + ) -> StreamResponse[ReportClientEventResponse]: json = ReportClientEventRequest(events=events).to_dict() - return await self.post("/api/v2/video/call_client_event", ReportClientEventResponse, json=json) - + return await self.post( + "/api/v2/video/call_client_event", ReportClientEventResponse, json=json + ) + @telemetry.operation_name("getstream.api.video.query_call_session_stats") - async def query_call_session_stats(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallSessionStatsResponse]: - json = QueryCallSessionStatsRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() - return await self.post("/api/v2/video/call_stats", QueryCallSessionStatsResponse, json=json) - + async def query_call_session_stats( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallSessionStatsResponse]: + json = QueryCallSessionStatsRequest( + limit=limit, + next=next, + prev=prev, + sort=sort, + filter_conditions=filter_conditions, + ).to_dict() + return await self.post( + "/api/v2/video/call_stats", QueryCallSessionStatsResponse, json=json + ) + @telemetry.operation_name("getstream.api.video.get_call_stats_map") - async def get_call_stats_map(self, call_type: str, call_id: str, session: str, start_time: Optional[datetime] = None, end_time: Optional[datetime] = None, exclude_publishers: Optional[bool] = None, exclude_subscribers: Optional[bool] = None, exclude_sfus: Optional[bool] = None) -> StreamResponse[QueryCallStatsMapResponse]: - query_params = build_query_param(start_time=start_time, end_time=end_time, exclude_publishers=exclude_publishers, exclude_subscribers=exclude_subscribers, exclude_sfus=exclude_sfus) + async def get_call_stats_map( + self, + call_type: str, + call_id: str, + session: str, + start_time: Optional[datetime] = None, + end_time: Optional[datetime] = None, + exclude_publishers: Optional[bool] = None, + exclude_subscribers: Optional[bool] = None, + exclude_sfus: Optional[bool] = None, + ) -> StreamResponse[QueryCallStatsMapResponse]: + query_params = build_query_param( + start_time=start_time, + end_time=end_time, + exclude_publishers=exclude_publishers, + exclude_subscribers=exclude_subscribers, + exclude_sfus=exclude_sfus, + ) path_params = { - "call_type": call_type, "call_id": call_id, "session": session, + "call_type": call_type, + "call_id": call_id, + "session": session, } - return await self.get("/api/v2/video/call_stats/{call_type}/{call_id}/{session}/map", QueryCallStatsMapResponse, query_params=query_params, path_params=path_params) - - @telemetry.operation_name("getstream.api.video.get_call_session_participant_stats_details") - async def get_call_session_participant_stats_details(self, call_type: str, call_id: str, session: str, user: str, user_session: str, since: Optional[str] = None, until: Optional[str] = None, max_points: Optional[int] = None) -> StreamResponse[GetCallSessionParticipantStatsDetailsResponse]: - query_params = build_query_param(since=since, until=until, max_points=max_points) + return await self.get( + "/api/v2/video/call_stats/{call_type}/{call_id}/{session}/map", + QueryCallStatsMapResponse, + query_params=query_params, + path_params=path_params, + ) + + @telemetry.operation_name( + "getstream.api.video.get_call_session_participant_stats_details" + ) + async def get_call_session_participant_stats_details( + self, + call_type: str, + call_id: str, + session: str, + user: str, + user_session: str, + since: Optional[str] = None, + until: Optional[str] = None, + max_points: Optional[int] = None, + ) -> StreamResponse[GetCallSessionParticipantStatsDetailsResponse]: + query_params = build_query_param( + since=since, until=until, max_points=max_points + ) path_params = { - "call_type": call_type, "call_id": call_id, "session": session, "user": user, "user_session": user_session, + "call_type": call_type, + "call_id": call_id, + "session": session, + "user": user, + "user_session": user_session, } - return await self.get("/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participant/{user}/{user_session}/details", GetCallSessionParticipantStatsDetailsResponse, query_params=query_params, path_params=path_params) - - @telemetry.operation_name("getstream.api.video.query_call_session_participant_stats") - async def query_call_session_participant_stats(self, call_type: str, call_id: str, session: str, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallSessionParticipantStatsResponse]: - query_params = build_query_param(limit=limit, prev=prev, next=next, sort=sort, filter_conditions=filter_conditions) + return await self.get( + "/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participant/{user}/{user_session}/details", + GetCallSessionParticipantStatsDetailsResponse, + query_params=query_params, + path_params=path_params, + ) + + @telemetry.operation_name( + "getstream.api.video.query_call_session_participant_stats" + ) + async def query_call_session_participant_stats( + self, + call_type: str, + call_id: str, + session: str, + limit: Optional[int] = None, + prev: Optional[str] = None, + next: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallSessionParticipantStatsResponse]: + query_params = build_query_param( + limit=limit, + prev=prev, + next=next, + sort=sort, + filter_conditions=filter_conditions, + ) path_params = { - "call_type": call_type, "call_id": call_id, "session": session, + "call_type": call_type, + "call_id": call_id, + "session": session, } - return await self.get("/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participants", QueryCallSessionParticipantStatsResponse, query_params=query_params, path_params=path_params) - - @telemetry.operation_name("getstream.api.video.get_call_session_participant_stats_timeline") - async def get_call_session_participant_stats_timeline(self, call_type: str, call_id: str, session: str, user: str, user_session: str, start_time: Optional[str] = None, end_time: Optional[str] = None, severity: Optional[List[str]] = None) -> StreamResponse[QueryCallSessionParticipantStatsTimelineResponse]: - query_params = build_query_param(start_time=start_time, end_time=end_time, severity=severity) + return await self.get( + "/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participants", + QueryCallSessionParticipantStatsResponse, + query_params=query_params, + path_params=path_params, + ) + + @telemetry.operation_name( + "getstream.api.video.get_call_session_participant_stats_timeline" + ) + async def get_call_session_participant_stats_timeline( + self, + call_type: str, + call_id: str, + session: str, + user: str, + user_session: str, + start_time: Optional[str] = None, + end_time: Optional[str] = None, + severity: Optional[List[str]] = None, + ) -> StreamResponse[QueryCallSessionParticipantStatsTimelineResponse]: + query_params = build_query_param( + start_time=start_time, end_time=end_time, severity=severity + ) path_params = { - "call_type": call_type, "call_id": call_id, "session": session, "user": user, "user_session": user_session, + "call_type": call_type, + "call_id": call_id, + "session": session, + "user": user, + "user_session": user_session, } - return await self.get("/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participants/{user}/{user_session}/timeline", QueryCallSessionParticipantStatsTimelineResponse, query_params=query_params, path_params=path_params) - + return await self.get( + "/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participants/{user}/{user_session}/timeline", + QueryCallSessionParticipantStatsTimelineResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.query_calls") - async def query_calls(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallsResponse]: - json = QueryCallsRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() + async def query_calls( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallsResponse]: + json = QueryCallsRequest( + limit=limit, + next=next, + prev=prev, + sort=sort, + filter_conditions=filter_conditions, + ).to_dict() return await self.post("/api/v2/video/calls", QueryCallsResponse, json=json) - + @telemetry.operation_name("getstream.api.video.list_call_types") async def list_call_types(self) -> StreamResponse[ListCallTypeResponse]: return await self.get("/api/v2/video/calltypes", ListCallTypeResponse) - + @telemetry.operation_name("getstream.api.video.create_call_type") - async def create_call_type(self, name: str, external_storage: Optional[str] = None, grants: Optional[Dict[str, List[str]]] = None, notification_settings: Optional[NotificationSettingsRequest] = None, settings: Optional[CallSettingsRequest] = None) -> StreamResponse[CreateCallTypeResponse]: - json = CreateCallTypeRequest(name=name, external_storage=external_storage, grants=grants, notification_settings=notification_settings, settings=settings).to_dict() - return await self.post("/api/v2/video/calltypes", CreateCallTypeResponse, json=json) - + async def create_call_type( + self, + name: str, + external_storage: Optional[str] = None, + grants: Optional[Dict[str, List[str]]] = None, + notification_settings: Optional[NotificationSettingsRequest] = None, + settings: Optional[CallSettingsRequest] = None, + ) -> StreamResponse[CreateCallTypeResponse]: + json = CreateCallTypeRequest( + name=name, + external_storage=external_storage, + grants=grants, + notification_settings=notification_settings, + settings=settings, + ).to_dict() + return await self.post( + "/api/v2/video/calltypes", CreateCallTypeResponse, json=json + ) + @telemetry.operation_name("getstream.api.video.delete_call_type") async def delete_call_type(self, name: str) -> StreamResponse[Response]: path_params = { - "name": name, + "name": name, } - return await self.delete("/api/v2/video/calltypes/{name}", Response, path_params=path_params) - + return await self.delete( + "/api/v2/video/calltypes/{name}", Response, path_params=path_params + ) + @telemetry.operation_name("getstream.api.video.get_call_type") async def get_call_type(self, name: str) -> StreamResponse[GetCallTypeResponse]: path_params = { - "name": name, + "name": name, } - return await self.get("/api/v2/video/calltypes/{name}", GetCallTypeResponse, path_params=path_params) - + return await self.get( + "/api/v2/video/calltypes/{name}", + GetCallTypeResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.update_call_type") - async def update_call_type(self, name: str, external_storage: Optional[str] = None, grants: Optional[Dict[str, List[str]]] = None, notification_settings: Optional[NotificationSettingsRequest] = None, settings: Optional[CallSettingsRequest] = None) -> StreamResponse[UpdateCallTypeResponse]: + async def update_call_type( + self, + name: str, + external_storage: Optional[str] = None, + grants: Optional[Dict[str, List[str]]] = None, + notification_settings: Optional[NotificationSettingsRequest] = None, + settings: Optional[CallSettingsRequest] = None, + ) -> StreamResponse[UpdateCallTypeResponse]: path_params = { - "name": name, + "name": name, } - json = UpdateCallTypeRequest(external_storage=external_storage, grants=grants, notification_settings=notification_settings, settings=settings).to_dict() - return await self.put("/api/v2/video/calltypes/{name}", UpdateCallTypeResponse, path_params=path_params, json=json) - + json = UpdateCallTypeRequest( + external_storage=external_storage, + grants=grants, + notification_settings=notification_settings, + settings=settings, + ).to_dict() + return await self.put( + "/api/v2/video/calltypes/{name}", + UpdateCallTypeResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.get_edges") async def get_edges(self) -> StreamResponse[GetEdgesResponse]: return await self.get("/api/v2/video/edges", GetEdgesResponse) - + @telemetry.operation_name("getstream.api.video.resolve_sip_auth") - async def resolve_sip_auth(self, sip_caller_number: str, sip_trunk_number: str, from_host: Optional[str] = None, source_ip: Optional[str] = None) -> StreamResponse[ResolveSipAuthResponse]: - json = ResolveSipAuthRequest(sip_caller_number=sip_caller_number, sip_trunk_number=sip_trunk_number, from_host=from_host, source_ip=source_ip).to_dict() - return await self.post("/api/v2/video/sip/auth", ResolveSipAuthResponse, json=json) - + async def resolve_sip_auth( + self, + sip_caller_number: str, + sip_trunk_number: str, + from_host: Optional[str] = None, + source_ip: Optional[str] = None, + ) -> StreamResponse[ResolveSipAuthResponse]: + json = ResolveSipAuthRequest( + sip_caller_number=sip_caller_number, + sip_trunk_number=sip_trunk_number, + from_host=from_host, + source_ip=source_ip, + ).to_dict() + return await self.post( + "/api/v2/video/sip/auth", ResolveSipAuthResponse, json=json + ) + @telemetry.operation_name("getstream.api.video.list_sip_inbound_routing_rule") - async def list_sip_inbound_routing_rule(self) -> StreamResponse[ListSIPInboundRoutingRuleResponse]: - return await self.get("/api/v2/video/sip/inbound_routing_rules", ListSIPInboundRoutingRuleResponse) - + async def list_sip_inbound_routing_rule( + self, + ) -> StreamResponse[ListSIPInboundRoutingRuleResponse]: + return await self.get( + "/api/v2/video/sip/inbound_routing_rules", ListSIPInboundRoutingRuleResponse + ) + @telemetry.operation_name("getstream.api.video.create_sip_inbound_routing_rule") - async def create_sip_inbound_routing_rule(self, name: str, trunk_ids: List[str], caller_configs: SIPCallerConfigsRequest, called_numbers: Optional[List[str]] = None, caller_numbers: Optional[List[str]] = None, call_configs: Optional[SIPCallConfigsRequest] = None, direct_routing_configs: Optional[SIPDirectRoutingRuleCallConfigsRequest] = None, pin_protection_configs: Optional[SIPPinProtectionConfigsRequest] = None, pin_routing_configs: Optional[SIPInboundRoutingRulePinConfigsRequest] = None) -> StreamResponse[SIPInboundRoutingRuleResponse]: - json = SIPInboundRoutingRuleRequest(name=name, trunk_ids=trunk_ids, caller_configs=caller_configs, called_numbers=called_numbers, caller_numbers=caller_numbers, call_configs=call_configs, direct_routing_configs=direct_routing_configs, pin_protection_configs=pin_protection_configs, pin_routing_configs=pin_routing_configs).to_dict() - return await self.post("/api/v2/video/sip/inbound_routing_rules", SIPInboundRoutingRuleResponse, json=json) - + async def create_sip_inbound_routing_rule( + self, + name: str, + trunk_ids: List[str], + caller_configs: SIPCallerConfigsRequest, + called_numbers: Optional[List[str]] = None, + caller_numbers: Optional[List[str]] = None, + call_configs: Optional[SIPCallConfigsRequest] = None, + direct_routing_configs: Optional[SIPDirectRoutingRuleCallConfigsRequest] = None, + pin_protection_configs: Optional[SIPPinProtectionConfigsRequest] = None, + pin_routing_configs: Optional[SIPInboundRoutingRulePinConfigsRequest] = None, + ) -> StreamResponse[SIPInboundRoutingRuleResponse]: + json = SIPInboundRoutingRuleRequest( + name=name, + trunk_ids=trunk_ids, + caller_configs=caller_configs, + called_numbers=called_numbers, + caller_numbers=caller_numbers, + call_configs=call_configs, + direct_routing_configs=direct_routing_configs, + pin_protection_configs=pin_protection_configs, + pin_routing_configs=pin_routing_configs, + ).to_dict() + return await self.post( + "/api/v2/video/sip/inbound_routing_rules", + SIPInboundRoutingRuleResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.video.delete_sip_inbound_routing_rule") - async def delete_sip_inbound_routing_rule(self, id: str) -> StreamResponse[DeleteSIPInboundRoutingRuleResponse]: + async def delete_sip_inbound_routing_rule( + self, id: str + ) -> StreamResponse[DeleteSIPInboundRoutingRuleResponse]: path_params = { - "id": id, + "id": id, } - return await self.delete("/api/v2/video/sip/inbound_routing_rules/{id}", DeleteSIPInboundRoutingRuleResponse, path_params=path_params) - + return await self.delete( + "/api/v2/video/sip/inbound_routing_rules/{id}", + DeleteSIPInboundRoutingRuleResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.update_sip_inbound_routing_rule") - async def update_sip_inbound_routing_rule(self, id: str, name: str, trunk_ids: List[str], caller_configs: SIPCallerConfigsRequest, called_numbers: Optional[List[str]] = None, caller_numbers: Optional[List[str]] = None, call_configs: Optional[SIPCallConfigsRequest] = None, direct_routing_configs: Optional[SIPDirectRoutingRuleCallConfigsRequest] = None, pin_protection_configs: Optional[SIPPinProtectionConfigsRequest] = None, pin_routing_configs: Optional[SIPInboundRoutingRulePinConfigsRequest] = None) -> StreamResponse[UpdateSIPInboundRoutingRuleResponse]: + async def update_sip_inbound_routing_rule( + self, + id: str, + name: str, + trunk_ids: List[str], + caller_configs: SIPCallerConfigsRequest, + called_numbers: Optional[List[str]] = None, + caller_numbers: Optional[List[str]] = None, + call_configs: Optional[SIPCallConfigsRequest] = None, + direct_routing_configs: Optional[SIPDirectRoutingRuleCallConfigsRequest] = None, + pin_protection_configs: Optional[SIPPinProtectionConfigsRequest] = None, + pin_routing_configs: Optional[SIPInboundRoutingRulePinConfigsRequest] = None, + ) -> StreamResponse[UpdateSIPInboundRoutingRuleResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateSIPInboundRoutingRuleRequest(name=name, trunk_ids=trunk_ids, caller_configs=caller_configs, called_numbers=called_numbers, caller_numbers=caller_numbers, call_configs=call_configs, direct_routing_configs=direct_routing_configs, pin_protection_configs=pin_protection_configs, pin_routing_configs=pin_routing_configs).to_dict() - return await self.put("/api/v2/video/sip/inbound_routing_rules/{id}", UpdateSIPInboundRoutingRuleResponse, path_params=path_params, json=json) - + json = UpdateSIPInboundRoutingRuleRequest( + name=name, + trunk_ids=trunk_ids, + caller_configs=caller_configs, + called_numbers=called_numbers, + caller_numbers=caller_numbers, + call_configs=call_configs, + direct_routing_configs=direct_routing_configs, + pin_protection_configs=pin_protection_configs, + pin_routing_configs=pin_routing_configs, + ).to_dict() + return await self.put( + "/api/v2/video/sip/inbound_routing_rules/{id}", + UpdateSIPInboundRoutingRuleResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.list_sip_trunks") async def list_sip_trunks(self) -> StreamResponse[ListSIPTrunksResponse]: return await self.get("/api/v2/video/sip/inbound_trunks", ListSIPTrunksResponse) - + @telemetry.operation_name("getstream.api.video.create_sip_trunk") - async def create_sip_trunk(self, name: str, numbers: List[str], password: Optional[str] = None, allowed_ips: Optional[List[str]] = None) -> StreamResponse[CreateSIPTrunkResponse]: - json = CreateSIPTrunkRequest(name=name, numbers=numbers, password=password, allowed_ips=allowed_ips).to_dict() - return await self.post("/api/v2/video/sip/inbound_trunks", CreateSIPTrunkResponse, json=json) - + async def create_sip_trunk( + self, + name: str, + numbers: List[str], + password: Optional[str] = None, + allowed_ips: Optional[List[str]] = None, + ) -> StreamResponse[CreateSIPTrunkResponse]: + json = CreateSIPTrunkRequest( + name=name, numbers=numbers, password=password, allowed_ips=allowed_ips + ).to_dict() + return await self.post( + "/api/v2/video/sip/inbound_trunks", CreateSIPTrunkResponse, json=json + ) + @telemetry.operation_name("getstream.api.video.delete_sip_trunk") async def delete_sip_trunk(self, id: str) -> StreamResponse[DeleteSIPTrunkResponse]: path_params = { - "id": id, + "id": id, } - return await self.delete("/api/v2/video/sip/inbound_trunks/{id}", DeleteSIPTrunkResponse, path_params=path_params) - + return await self.delete( + "/api/v2/video/sip/inbound_trunks/{id}", + DeleteSIPTrunkResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.update_sip_trunk") - async def update_sip_trunk(self, id: str, name: str, numbers: List[str], password: Optional[str] = None, allowed_ips: Optional[List[str]] = None) -> StreamResponse[UpdateSIPTrunkResponse]: + async def update_sip_trunk( + self, + id: str, + name: str, + numbers: List[str], + password: Optional[str] = None, + allowed_ips: Optional[List[str]] = None, + ) -> StreamResponse[UpdateSIPTrunkResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateSIPTrunkRequest(name=name, numbers=numbers, password=password, allowed_ips=allowed_ips).to_dict() - return await self.put("/api/v2/video/sip/inbound_trunks/{id}", UpdateSIPTrunkResponse, path_params=path_params, json=json) - + json = UpdateSIPTrunkRequest( + name=name, numbers=numbers, password=password, allowed_ips=allowed_ips + ).to_dict() + return await self.put( + "/api/v2/video/sip/inbound_trunks/{id}", + UpdateSIPTrunkResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.resolve_sip_inbound") - async def resolve_sip_inbound(self, sip_caller_number: str, sip_trunk_number: str, routing_number: Optional[str] = None, trunk_id: Optional[str] = None, challenge: Optional[SIPChallengeRequest] = None, sip_headers: Optional[Dict[str, str]] = None) -> StreamResponse[ResolveSipInboundResponse]: - json = ResolveSipInboundRequest(sip_caller_number=sip_caller_number, sip_trunk_number=sip_trunk_number, routing_number=routing_number, trunk_id=trunk_id, challenge=challenge, sip_headers=sip_headers).to_dict() - return await self.post("/api/v2/video/sip/resolve", ResolveSipInboundResponse, json=json) - + async def resolve_sip_inbound( + self, + sip_caller_number: str, + sip_trunk_number: str, + routing_number: Optional[str] = None, + trunk_id: Optional[str] = None, + challenge: Optional[SIPChallengeRequest] = None, + sip_headers: Optional[Dict[str, str]] = None, + ) -> StreamResponse[ResolveSipInboundResponse]: + json = ResolveSipInboundRequest( + sip_caller_number=sip_caller_number, + sip_trunk_number=sip_trunk_number, + routing_number=routing_number, + trunk_id=trunk_id, + challenge=challenge, + sip_headers=sip_headers, + ).to_dict() + return await self.post( + "/api/v2/video/sip/resolve", ResolveSipInboundResponse, json=json + ) + @telemetry.operation_name("getstream.api.video.query_aggregate_call_stats") - async def query_aggregate_call_stats(self, _from: Optional[str] = None, to: Optional[str] = None, report_types: Optional[List[str]] = None) -> StreamResponse[QueryAggregateCallStatsResponse]: - json = QueryAggregateCallStatsRequest(_from=_from, to=to, report_types=report_types).to_dict() - return await self.post("/api/v2/video/stats", QueryAggregateCallStatsResponse, json=json) - + async def query_aggregate_call_stats( + self, + _from: Optional[str] = None, + to: Optional[str] = None, + report_types: Optional[List[str]] = None, + ) -> StreamResponse[QueryAggregateCallStatsResponse]: + json = QueryAggregateCallStatsRequest( + _from=_from, to=to, report_types=report_types + ).to_dict() + return await self.post( + "/api/v2/video/stats", QueryAggregateCallStatsResponse, json=json + ) + @telemetry.operation_name("getstream.api.video.get_daily_digest") - async def get_daily_digest(self, date: Optional[str] = None, target_app_id: Optional[str] = None) -> StreamResponse[GetDailyDigestResponse]: + async def get_daily_digest( + self, date: Optional[str] = None, target_app_id: Optional[str] = None + ) -> StreamResponse[GetDailyDigestResponse]: query_params = build_query_param(date=date, target_app_id=target_app_id) - return await self.get("/api/v2/video/stats/daily_digest", GetDailyDigestResponse, query_params=query_params) - \ No newline at end of file + return await self.get( + "/api/v2/video/stats/daily_digest", + GetDailyDigestResponse, + query_params=query_params, + ) diff --git a/getstream/video/call.py b/getstream/video/call.py index 0f2d68b2..197f5d0e 100644 --- a/getstream/video/call.py +++ b/getstream/video/call.py @@ -6,35 +6,97 @@ class Call(BaseCall): - - - @attach_call_cid - def get(self, members_limit: Optional[int] = None, ring: Optional[bool] = None, notify: Optional[bool] = None, video: Optional[bool] = None) -> StreamResponse[GetCallResponse]: - response = self.client.get_call(type=self.call_type, id=self.id, members_limit=members_limit, ring=ring, notify=notify, video=video) - self._sync_from_response(response.data) - return response - - @attach_call_cid - def update(self, starts_at: Optional[datetime] = None, custom: Optional[Dict[str, object]] = None, settings_override: Optional[CallSettingsRequest] = None) -> StreamResponse[UpdateCallResponse]: - response = self.client.update_call(type=self.call_type, id=self.id, starts_at=starts_at, custom=custom, settings_override=settings_override) - self._sync_from_response(response.data) - return response - @attach_call_cid - def get_or_create(self, members_limit: Optional[int] = None, notify: Optional[bool] = None, ring: Optional[bool] = None, video: Optional[bool] = None, data: Optional[CallRequest] = None) -> StreamResponse[GetOrCreateCallResponse]: - response = self.client.get_or_create_call(type=self.call_type, id=self.id, members_limit=members_limit, notify=notify, ring=ring, video=video, data=data) + def get( + self, + members_limit: Optional[int] = None, + ring: Optional[bool] = None, + notify: Optional[bool] = None, + video: Optional[bool] = None, + ) -> StreamResponse[GetCallResponse]: + response = self.client.get_call( + type=self.call_type, + id=self.id, + members_limit=members_limit, + ring=ring, + notify=notify, + video=video, + ) + self._sync_from_response(response.data) + return response + + @attach_call_cid + def update( + self, + starts_at: Optional[datetime] = None, + custom: Optional[Dict[str, object]] = None, + settings_override: Optional[CallSettingsRequest] = None, + ) -> StreamResponse[UpdateCallResponse]: + response = self.client.update_call( + type=self.call_type, + id=self.id, + starts_at=starts_at, + custom=custom, + settings_override=settings_override, + ) + self._sync_from_response(response.data) + return response + + @attach_call_cid + def get_or_create( + self, + members_limit: Optional[int] = None, + notify: Optional[bool] = None, + ring: Optional[bool] = None, + video: Optional[bool] = None, + data: Optional[CallRequest] = None, + ) -> StreamResponse[GetOrCreateCallResponse]: + response = self.client.get_or_create_call( + type=self.call_type, + id=self.id, + members_limit=members_limit, + notify=notify, + ring=ring, + video=video, + data=data, + ) self._sync_from_response(response.data) return response @attach_call_cid def block_user(self, user_id: str) -> StreamResponse[BlockUserResponse]: - response = self.client.block_user(type=self.call_type, id=self.id, user_id=user_id) - self._sync_from_response(response.data) - return response - - @attach_call_cid - def send_closed_caption(self, speaker_id: str, text: str, end_time: Optional[datetime] = None, language: Optional[str] = None, service: Optional[str] = None, start_time: Optional[datetime] = None, translated: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[SendClosedCaptionResponse]: - response = self.client.send_closed_caption(type=self.call_type, id=self.id, speaker_id=speaker_id, text=text, end_time=end_time, language=language, service=service, start_time=start_time, translated=translated, user_id=user_id, user=user) + response = self.client.block_user( + type=self.call_type, id=self.id, user_id=user_id + ) + self._sync_from_response(response.data) + return response + + @attach_call_cid + def send_closed_caption( + self, + speaker_id: str, + text: str, + end_time: Optional[datetime] = None, + language: Optional[str] = None, + service: Optional[str] = None, + start_time: Optional[datetime] = None, + translated: Optional[bool] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[SendClosedCaptionResponse]: + response = self.client.send_closed_caption( + type=self.call_type, + id=self.id, + speaker_id=speaker_id, + text=text, + end_time=end_time, + language=language, + service=service, + start_time=start_time, + translated=translated, + user_id=user_id, + user=user, + ) self._sync_from_response(response.data) return response @@ -45,26 +107,86 @@ def delete(self, hard: Optional[bool] = None) -> StreamResponse[DeleteCallRespon return response @attach_call_cid - def send_call_event(self, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[SendCallEventResponse]: - response = self.client.send_call_event(type=self.call_type, id=self.id, user_id=user_id, custom=custom, user=user) - self._sync_from_response(response.data) - return response - - @attach_call_cid - def collect_user_feedback(self, rating: int, sdk: str, sdk_version: str, reason: Optional[str] = None, user_session_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[CollectUserFeedbackResponse]: - response = self.client.collect_user_feedback(type=self.call_type, id=self.id, rating=rating, sdk=sdk, sdk_version=sdk_version, reason=reason, user_session_id=user_session_id, custom=custom) - self._sync_from_response(response.data) - return response - - @attach_call_cid - def go_live(self, recording_storage_name: Optional[str] = None, start_closed_caption: Optional[bool] = None, start_composite_recording: Optional[bool] = None, start_hls: Optional[bool] = None, start_individual_recording: Optional[bool] = None, start_raw_recording: Optional[bool] = None, start_recording: Optional[bool] = None, start_transcription: Optional[bool] = None, transcription_storage_name: Optional[str] = None) -> StreamResponse[GoLiveResponse]: - response = self.client.go_live(type=self.call_type, id=self.id, recording_storage_name=recording_storage_name, start_closed_caption=start_closed_caption, start_composite_recording=start_composite_recording, start_hls=start_hls, start_individual_recording=start_individual_recording, start_raw_recording=start_raw_recording, start_recording=start_recording, start_transcription=start_transcription, transcription_storage_name=transcription_storage_name) - self._sync_from_response(response.data) - return response - - @attach_call_cid - def kick_user(self, user_id: str, block: Optional[bool] = None, kicked_by_id: Optional[str] = None, kicked_by: Optional[UserRequest] = None) -> StreamResponse[KickUserResponse]: - response = self.client.kick_user(type=self.call_type, id=self.id, user_id=user_id, block=block, kicked_by_id=kicked_by_id, kicked_by=kicked_by) + def send_call_event( + self, + user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[SendCallEventResponse]: + response = self.client.send_call_event( + type=self.call_type, id=self.id, user_id=user_id, custom=custom, user=user + ) + self._sync_from_response(response.data) + return response + + @attach_call_cid + def collect_user_feedback( + self, + rating: int, + sdk: str, + sdk_version: str, + reason: Optional[str] = None, + user_session_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + ) -> StreamResponse[CollectUserFeedbackResponse]: + response = self.client.collect_user_feedback( + type=self.call_type, + id=self.id, + rating=rating, + sdk=sdk, + sdk_version=sdk_version, + reason=reason, + user_session_id=user_session_id, + custom=custom, + ) + self._sync_from_response(response.data) + return response + + @attach_call_cid + def go_live( + self, + recording_storage_name: Optional[str] = None, + start_closed_caption: Optional[bool] = None, + start_composite_recording: Optional[bool] = None, + start_hls: Optional[bool] = None, + start_individual_recording: Optional[bool] = None, + start_raw_recording: Optional[bool] = None, + start_recording: Optional[bool] = None, + start_transcription: Optional[bool] = None, + transcription_storage_name: Optional[str] = None, + ) -> StreamResponse[GoLiveResponse]: + response = self.client.go_live( + type=self.call_type, + id=self.id, + recording_storage_name=recording_storage_name, + start_closed_caption=start_closed_caption, + start_composite_recording=start_composite_recording, + start_hls=start_hls, + start_individual_recording=start_individual_recording, + start_raw_recording=start_raw_recording, + start_recording=start_recording, + start_transcription=start_transcription, + transcription_storage_name=transcription_storage_name, + ) + self._sync_from_response(response.data) + return response + + @attach_call_cid + def kick_user( + self, + user_id: str, + block: Optional[bool] = None, + kicked_by_id: Optional[str] = None, + kicked_by: Optional[UserRequest] = None, + ) -> StreamResponse[KickUserResponse]: + response = self.client.kick_user( + type=self.call_type, + id=self.id, + user_id=user_id, + block=block, + kicked_by_id=kicked_by_id, + kicked_by=kicked_by, + ) self._sync_from_response(response.data) return response @@ -75,26 +197,67 @@ def end(self) -> StreamResponse[EndCallResponse]: return response @attach_call_cid - def update_call_members(self, remove_members: Optional[List[str]] = None, update_members: Optional[List[MemberRequest]] = None) -> StreamResponse[UpdateCallMembersResponse]: - response = self.client.update_call_members(type=self.call_type, id=self.id, remove_members=remove_members, update_members=update_members) + def update_call_members( + self, + remove_members: Optional[List[str]] = None, + update_members: Optional[List[MemberRequest]] = None, + ) -> StreamResponse[UpdateCallMembersResponse]: + response = self.client.update_call_members( + type=self.call_type, + id=self.id, + remove_members=remove_members, + update_members=update_members, + ) self._sync_from_response(response.data) return response @attach_call_cid - def mute_users(self, audio: Optional[bool] = None, mute_all_users: Optional[bool] = None, muted_by_id: Optional[str] = None, screenshare: Optional[bool] = None, screenshare_audio: Optional[bool] = None, video: Optional[bool] = None, user_ids: Optional[List[str]] = None, muted_by: Optional[UserRequest] = None) -> StreamResponse[MuteUsersResponse]: - response = self.client.mute_users(type=self.call_type, id=self.id, audio=audio, mute_all_users=mute_all_users, muted_by_id=muted_by_id, screenshare=screenshare, screenshare_audio=screenshare_audio, video=video, user_ids=user_ids, muted_by=muted_by) + def mute_users( + self, + audio: Optional[bool] = None, + mute_all_users: Optional[bool] = None, + muted_by_id: Optional[str] = None, + screenshare: Optional[bool] = None, + screenshare_audio: Optional[bool] = None, + video: Optional[bool] = None, + user_ids: Optional[List[str]] = None, + muted_by: Optional[UserRequest] = None, + ) -> StreamResponse[MuteUsersResponse]: + response = self.client.mute_users( + type=self.call_type, + id=self.id, + audio=audio, + mute_all_users=mute_all_users, + muted_by_id=muted_by_id, + screenshare=screenshare, + screenshare_audio=screenshare_audio, + video=video, + user_ids=user_ids, + muted_by=muted_by, + ) self._sync_from_response(response.data) return response @attach_call_cid - def query_call_participants(self, limit: Optional[int] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallParticipantsResponse]: - response = self.client.query_call_participants(type=self.call_type, id=self.id, limit=limit, filter_conditions=filter_conditions) + def query_call_participants( + self, + limit: Optional[int] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallParticipantsResponse]: + response = self.client.query_call_participants( + type=self.call_type, + id=self.id, + limit=limit, + filter_conditions=filter_conditions, + ) self._sync_from_response(response.data) return response @attach_call_cid def video_pin(self, session_id: str, user_id: str) -> StreamResponse[PinResponse]: - response = self.client.video_pin(type=self.call_type, id=self.id, session_id=session_id, user_id=user_id) + response = self.client.video_pin( + type=self.call_type, id=self.id, session_id=session_id, user_id=user_id + ) self._sync_from_response(response.data) return response @@ -105,32 +268,58 @@ def list_recordings(self) -> StreamResponse[ListRecordingsResponse]: return response @attach_call_cid - def start_recording(self, recording_type: str, recording_external_storage: Optional[str] = None) -> StreamResponse[StartRecordingResponse]: - response = self.client.start_recording(type=self.call_type, id=self.id, recording_type=recording_type, recording_external_storage=recording_external_storage) + def start_recording( + self, recording_type: str, recording_external_storage: Optional[str] = None + ) -> StreamResponse[StartRecordingResponse]: + response = self.client.start_recording( + type=self.call_type, + id=self.id, + recording_type=recording_type, + recording_external_storage=recording_external_storage, + ) self._sync_from_response(response.data) return response @attach_call_cid - def stop_recording(self, recording_type: str, ) -> StreamResponse[StopRecordingResponse]: - response = self.client.stop_recording(type=self.call_type, id=self.id, recording_type=recording_type, ) + def stop_recording( + self, + recording_type: str, + ) -> StreamResponse[StopRecordingResponse]: + response = self.client.stop_recording( + type=self.call_type, + id=self.id, + recording_type=recording_type, + ) self._sync_from_response(response.data) return response @attach_call_cid - def get_call_report(self, session_id: Optional[str] = None) -> StreamResponse[GetCallReportResponse]: - response = self.client.get_call_report(type=self.call_type, id=self.id, session_id=session_id) + def get_call_report( + self, session_id: Optional[str] = None + ) -> StreamResponse[GetCallReportResponse]: + response = self.client.get_call_report( + type=self.call_type, id=self.id, session_id=session_id + ) self._sync_from_response(response.data) return response @attach_call_cid - def ring(self, video: Optional[bool] = None, members_ids: Optional[List[str]] = None) -> StreamResponse[RingCallResponse]: - response = self.client.ring_call(type=self.call_type, id=self.id, video=video, members_ids=members_ids) + def ring( + self, video: Optional[bool] = None, members_ids: Optional[List[str]] = None + ) -> StreamResponse[RingCallResponse]: + response = self.client.ring_call( + type=self.call_type, id=self.id, video=video, members_ids=members_ids + ) self._sync_from_response(response.data) return response @attach_call_cid - def start_rtmp_broadcasts(self, broadcasts: List[RTMPBroadcastRequest]) -> StreamResponse[StartRTMPBroadcastsResponse]: - response = self.client.start_rtmp_broadcasts(type=self.call_type, id=self.id, broadcasts=broadcasts) + def start_rtmp_broadcasts( + self, broadcasts: List[RTMPBroadcastRequest] + ) -> StreamResponse[StartRTMPBroadcastsResponse]: + response = self.client.start_rtmp_broadcasts( + type=self.call_type, id=self.id, broadcasts=broadcasts + ) self._sync_from_response(response.data) return response @@ -141,20 +330,57 @@ def stop_all_rtmp_broadcasts(self) -> StreamResponse[StopAllRTMPBroadcastsRespon return response @attach_call_cid - def stop_rtmp_broadcast(self, name: str, ) -> StreamResponse[StopRTMPBroadcastsResponse]: - response = self.client.stop_rtmp_broadcast(type=self.call_type, id=self.id, name=name, ) + def stop_rtmp_broadcast( + self, + name: str, + ) -> StreamResponse[StopRTMPBroadcastsResponse]: + response = self.client.stop_rtmp_broadcast( + type=self.call_type, + id=self.id, + name=name, + ) self._sync_from_response(response.data) return response @attach_call_cid - def get_call_participant_session_metrics(self, session: str, user: str, user_session: str, since: Optional[datetime] = None, until: Optional[datetime] = None) -> StreamResponse[GetCallParticipantSessionMetricsResponse]: - response = self.client.get_call_participant_session_metrics(type=self.call_type, id=self.id, session=session, user=user, user_session=user_session, since=since, until=until) + def get_call_participant_session_metrics( + self, + session: str, + user: str, + user_session: str, + since: Optional[datetime] = None, + until: Optional[datetime] = None, + ) -> StreamResponse[GetCallParticipantSessionMetricsResponse]: + response = self.client.get_call_participant_session_metrics( + type=self.call_type, + id=self.id, + session=session, + user=user, + user_session=user_session, + since=since, + until=until, + ) self._sync_from_response(response.data) return response @attach_call_cid - def query_call_participant_sessions(self, session: str, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallParticipantSessionsResponse]: - response = self.client.query_call_participant_sessions(type=self.call_type, id=self.id, session=session, limit=limit, prev=prev, next=next, filter_conditions=filter_conditions) + def query_call_participant_sessions( + self, + session: str, + limit: Optional[int] = None, + prev: Optional[str] = None, + next: Optional[str] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallParticipantSessionsResponse]: + response = self.client.query_call_participant_sessions( + type=self.call_type, + id=self.id, + session=session, + limit=limit, + prev=prev, + next=next, + filter_conditions=filter_conditions, + ) self._sync_from_response(response.data) return response @@ -165,20 +391,50 @@ def start_hls_broadcasting(self) -> StreamResponse[StartHLSBroadcastingResponse] return response @attach_call_cid - def start_closed_captions(self, enable_transcription: Optional[bool] = None, external_storage: Optional[str] = None, language: Optional[str] = None, speech_segment_config: Optional[SpeechSegmentConfig] = None) -> StreamResponse[StartClosedCaptionsResponse]: - response = self.client.start_closed_captions(type=self.call_type, id=self.id, enable_transcription=enable_transcription, external_storage=external_storage, language=language, speech_segment_config=speech_segment_config) + def start_closed_captions( + self, + enable_transcription: Optional[bool] = None, + external_storage: Optional[str] = None, + language: Optional[str] = None, + speech_segment_config: Optional[SpeechSegmentConfig] = None, + ) -> StreamResponse[StartClosedCaptionsResponse]: + response = self.client.start_closed_captions( + type=self.call_type, + id=self.id, + enable_transcription=enable_transcription, + external_storage=external_storage, + language=language, + speech_segment_config=speech_segment_config, + ) self._sync_from_response(response.data) return response @attach_call_cid - def start_frame_recording(self, recording_external_storage: Optional[str] = None) -> StreamResponse[StartFrameRecordingResponse]: - response = self.client.start_frame_recording(type=self.call_type, id=self.id, recording_external_storage=recording_external_storage) + def start_frame_recording( + self, recording_external_storage: Optional[str] = None + ) -> StreamResponse[StartFrameRecordingResponse]: + response = self.client.start_frame_recording( + type=self.call_type, + id=self.id, + recording_external_storage=recording_external_storage, + ) self._sync_from_response(response.data) return response @attach_call_cid - def start_transcription(self, enable_closed_captions: Optional[bool] = None, language: Optional[str] = None, transcription_external_storage: Optional[str] = None) -> StreamResponse[StartTranscriptionResponse]: - response = self.client.start_transcription(type=self.call_type, id=self.id, enable_closed_captions=enable_closed_captions, language=language, transcription_external_storage=transcription_external_storage) + def start_transcription( + self, + enable_closed_captions: Optional[bool] = None, + language: Optional[str] = None, + transcription_external_storage: Optional[str] = None, + ) -> StreamResponse[StartTranscriptionResponse]: + response = self.client.start_transcription( + type=self.call_type, + id=self.id, + enable_closed_captions=enable_closed_captions, + language=language, + transcription_external_storage=transcription_external_storage, + ) self._sync_from_response(response.data) return response @@ -189,8 +445,12 @@ def stop_hls_broadcasting(self) -> StreamResponse[StopHLSBroadcastingResponse]: return response @attach_call_cid - def stop_closed_captions(self, stop_transcription: Optional[bool] = None) -> StreamResponse[StopClosedCaptionsResponse]: - response = self.client.stop_closed_captions(type=self.call_type, id=self.id, stop_transcription=stop_transcription) + def stop_closed_captions( + self, stop_transcription: Optional[bool] = None + ) -> StreamResponse[StopClosedCaptionsResponse]: + response = self.client.stop_closed_captions( + type=self.call_type, id=self.id, stop_transcription=stop_transcription + ) self._sync_from_response(response.data) return response @@ -201,14 +461,39 @@ def stop_frame_recording(self) -> StreamResponse[StopFrameRecordingResponse]: return response @attach_call_cid - def stop_live(self, continue_closed_caption: Optional[bool] = None, continue_composite_recording: Optional[bool] = None, continue_hls: Optional[bool] = None, continue_individual_recording: Optional[bool] = None, continue_raw_recording: Optional[bool] = None, continue_recording: Optional[bool] = None, continue_rtmp_broadcasts: Optional[bool] = None, continue_transcription: Optional[bool] = None) -> StreamResponse[StopLiveResponse]: - response = self.client.stop_live(type=self.call_type, id=self.id, continue_closed_caption=continue_closed_caption, continue_composite_recording=continue_composite_recording, continue_hls=continue_hls, continue_individual_recording=continue_individual_recording, continue_raw_recording=continue_raw_recording, continue_recording=continue_recording, continue_rtmp_broadcasts=continue_rtmp_broadcasts, continue_transcription=continue_transcription) + def stop_live( + self, + continue_closed_caption: Optional[bool] = None, + continue_composite_recording: Optional[bool] = None, + continue_hls: Optional[bool] = None, + continue_individual_recording: Optional[bool] = None, + continue_raw_recording: Optional[bool] = None, + continue_recording: Optional[bool] = None, + continue_rtmp_broadcasts: Optional[bool] = None, + continue_transcription: Optional[bool] = None, + ) -> StreamResponse[StopLiveResponse]: + response = self.client.stop_live( + type=self.call_type, + id=self.id, + continue_closed_caption=continue_closed_caption, + continue_composite_recording=continue_composite_recording, + continue_hls=continue_hls, + continue_individual_recording=continue_individual_recording, + continue_raw_recording=continue_raw_recording, + continue_recording=continue_recording, + continue_rtmp_broadcasts=continue_rtmp_broadcasts, + continue_transcription=continue_transcription, + ) self._sync_from_response(response.data) return response @attach_call_cid - def stop_transcription(self, stop_closed_captions: Optional[bool] = None) -> StreamResponse[StopTranscriptionResponse]: - response = self.client.stop_transcription(type=self.call_type, id=self.id, stop_closed_captions=stop_closed_captions) + def stop_transcription( + self, stop_closed_captions: Optional[bool] = None + ) -> StreamResponse[StopTranscriptionResponse]: + response = self.client.stop_transcription( + type=self.call_type, id=self.id, stop_closed_captions=stop_closed_captions + ) self._sync_from_response(response.data) return response @@ -220,33 +505,57 @@ def list_transcriptions(self) -> StreamResponse[ListTranscriptionsResponse]: @attach_call_cid def unblock_user(self, user_id: str) -> StreamResponse[UnblockUserResponse]: - response = self.client.unblock_user(type=self.call_type, id=self.id, user_id=user_id) + response = self.client.unblock_user( + type=self.call_type, id=self.id, user_id=user_id + ) self._sync_from_response(response.data) return response @attach_call_cid - def video_unpin(self, session_id: str, user_id: str) -> StreamResponse[UnpinResponse]: - response = self.client.video_unpin(type=self.call_type, id=self.id, session_id=session_id, user_id=user_id) + def video_unpin( + self, session_id: str, user_id: str + ) -> StreamResponse[UnpinResponse]: + response = self.client.video_unpin( + type=self.call_type, id=self.id, session_id=session_id, user_id=user_id + ) self._sync_from_response(response.data) return response @attach_call_cid - def update_user_permissions(self, user_id: str, grant_permissions: Optional[List[str]] = None, revoke_permissions: Optional[List[str]] = None) -> StreamResponse[UpdateUserPermissionsResponse]: - response = self.client.update_user_permissions(type=self.call_type, id=self.id, user_id=user_id, grant_permissions=grant_permissions, revoke_permissions=revoke_permissions) + def update_user_permissions( + self, + user_id: str, + grant_permissions: Optional[List[str]] = None, + revoke_permissions: Optional[List[str]] = None, + ) -> StreamResponse[UpdateUserPermissionsResponse]: + response = self.client.update_user_permissions( + type=self.call_type, + id=self.id, + user_id=user_id, + grant_permissions=grant_permissions, + revoke_permissions=revoke_permissions, + ) self._sync_from_response(response.data) return response @attach_call_cid - def delete_recording(self, session: str, filename: str) -> StreamResponse[DeleteRecordingResponse]: - response = self.client.delete_recording(type=self.call_type, id=self.id, session=session, filename=filename) + def delete_recording( + self, session: str, filename: str + ) -> StreamResponse[DeleteRecordingResponse]: + response = self.client.delete_recording( + type=self.call_type, id=self.id, session=session, filename=filename + ) self._sync_from_response(response.data) return response @attach_call_cid - def delete_transcription(self, session: str, filename: str) -> StreamResponse[DeleteTranscriptionResponse]: - response = self.client.delete_transcription(type=self.call_type, id=self.id, session=session, filename=filename) + def delete_transcription( + self, session: str, filename: str + ) -> StreamResponse[DeleteTranscriptionResponse]: + response = self.client.delete_transcription( + type=self.call_type, id=self.id, session=session, filename=filename + ) self._sync_from_response(response.data) return response - - create = get_or_create \ No newline at end of file + create = get_or_create diff --git a/getstream/video/rest_client.py b/getstream/video/rest_client.py index 7ff01cad..7d634b52 100644 --- a/getstream/video/rest_client.py +++ b/getstream/video/rest_client.py @@ -1,4 +1,3 @@ - # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import BaseClient from getstream.common import telemetry @@ -8,8 +7,14 @@ class VideoRestClient(BaseClient): - - def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user_agent: str = None): + def __init__( + self, + api_key: str, + base_url: str, + timeout: float, + token: str, + user_agent: str = None, + ): """ Initializes VideoClient with BaseClient instance :param api_key: A string representing the client's API key @@ -26,486 +31,1370 @@ def __init__(self, api_key: str, base_url: str, timeout: float, token: str, user user_agent=user_agent, ) - @telemetry.operation_name("getstream.api.video.get_active_calls_status") def get_active_calls_status(self) -> StreamResponse[GetActiveCallsStatusResponse]: - return self.get("/api/v2/video/active_calls_status", GetActiveCallsStatusResponse) - + return self.get( + "/api/v2/video/active_calls_status", GetActiveCallsStatusResponse + ) + @telemetry.operation_name("getstream.api.video.query_user_feedback") - def query_user_feedback(self, full: Optional[bool] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryUserFeedbackResponse]: + def query_user_feedback( + self, + full: Optional[bool] = None, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryUserFeedbackResponse]: query_params = build_query_param(full=full) - json = QueryUserFeedbackRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() - return self.post("/api/v2/video/call/feedback", QueryUserFeedbackResponse, query_params=query_params, json=json) - + json = QueryUserFeedbackRequest( + limit=limit, + next=next, + prev=prev, + sort=sort, + filter_conditions=filter_conditions, + ).to_dict() + return self.post( + "/api/v2/video/call/feedback", + QueryUserFeedbackResponse, + query_params=query_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.query_call_members") - def query_call_members(self, id: str, type: str, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallMembersResponse]: - json = QueryCallMembersRequest(id=id, type=type, limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() - return self.post("/api/v2/video/call/members", QueryCallMembersResponse, json=json) - + def query_call_members( + self, + id: str, + type: str, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallMembersResponse]: + json = QueryCallMembersRequest( + id=id, + type=type, + limit=limit, + next=next, + prev=prev, + sort=sort, + filter_conditions=filter_conditions, + ).to_dict() + return self.post( + "/api/v2/video/call/members", QueryCallMembersResponse, json=json + ) + @telemetry.operation_name("getstream.api.video.query_call_stats") - def query_call_stats(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallStatsResponse]: - json = QueryCallStatsRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() + def query_call_stats( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallStatsResponse]: + json = QueryCallStatsRequest( + limit=limit, + next=next, + prev=prev, + sort=sort, + filter_conditions=filter_conditions, + ).to_dict() return self.post("/api/v2/video/call/stats", QueryCallStatsResponse, json=json) - + @telemetry.operation_name("getstream.api.video.get_call") - def get_call(self, type: str, id: str, members_limit: Optional[int] = None, ring: Optional[bool] = None, notify: Optional[bool] = None, video: Optional[bool] = None) -> StreamResponse[GetCallResponse]: - query_params = build_query_param(members_limit=members_limit, ring=ring, notify=notify, video=video) + def get_call( + self, + type: str, + id: str, + members_limit: Optional[int] = None, + ring: Optional[bool] = None, + notify: Optional[bool] = None, + video: Optional[bool] = None, + ) -> StreamResponse[GetCallResponse]: + query_params = build_query_param( + members_limit=members_limit, ring=ring, notify=notify, video=video + ) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return self.get("/api/v2/video/call/{type}/{id}", GetCallResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/video/call/{type}/{id}", + GetCallResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.update_call") - def update_call(self, type: str, id: str, starts_at: Optional[datetime] = None, custom: Optional[Dict[str, object]] = None, settings_override: Optional[CallSettingsRequest] = None) -> StreamResponse[UpdateCallResponse]: + def update_call( + self, + type: str, + id: str, + starts_at: Optional[datetime] = None, + custom: Optional[Dict[str, object]] = None, + settings_override: Optional[CallSettingsRequest] = None, + ) -> StreamResponse[UpdateCallResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = UpdateCallRequest(starts_at=starts_at, custom=custom, settings_override=settings_override).to_dict() - return self.patch("/api/v2/video/call/{type}/{id}", UpdateCallResponse, path_params=path_params, json=json) - + json = UpdateCallRequest( + starts_at=starts_at, custom=custom, settings_override=settings_override + ).to_dict() + return self.patch( + "/api/v2/video/call/{type}/{id}", + UpdateCallResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.get_or_create_call") - def get_or_create_call(self, type: str, id: str, members_limit: Optional[int] = None, notify: Optional[bool] = None, ring: Optional[bool] = None, video: Optional[bool] = None, data: Optional[CallRequest] = None) -> StreamResponse[GetOrCreateCallResponse]: + def get_or_create_call( + self, + type: str, + id: str, + members_limit: Optional[int] = None, + notify: Optional[bool] = None, + ring: Optional[bool] = None, + video: Optional[bool] = None, + data: Optional[CallRequest] = None, + ) -> StreamResponse[GetOrCreateCallResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = GetOrCreateCallRequest(members_limit=members_limit, notify=notify, ring=ring, video=video, data=data).to_dict() - return self.post("/api/v2/video/call/{type}/{id}", GetOrCreateCallResponse, path_params=path_params, json=json) - + json = GetOrCreateCallRequest( + members_limit=members_limit, + notify=notify, + ring=ring, + video=video, + data=data, + ).to_dict() + return self.post( + "/api/v2/video/call/{type}/{id}", + GetOrCreateCallResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.block_user") - def block_user(self, type: str, id: str, user_id: str) -> StreamResponse[BlockUserResponse]: + def block_user( + self, type: str, id: str, user_id: str + ) -> StreamResponse[BlockUserResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = BlockUserRequest(user_id=user_id).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/block", BlockUserResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/video/call/{type}/{id}/block", + BlockUserResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.send_closed_caption") - def send_closed_caption(self, type: str, id: str, speaker_id: str, text: str, end_time: Optional[datetime] = None, language: Optional[str] = None, service: Optional[str] = None, start_time: Optional[datetime] = None, translated: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None) -> StreamResponse[SendClosedCaptionResponse]: + def send_closed_caption( + self, + type: str, + id: str, + speaker_id: str, + text: str, + end_time: Optional[datetime] = None, + language: Optional[str] = None, + service: Optional[str] = None, + start_time: Optional[datetime] = None, + translated: Optional[bool] = None, + user_id: Optional[str] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[SendClosedCaptionResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = SendClosedCaptionRequest(speaker_id=speaker_id, text=text, end_time=end_time, language=language, service=service, start_time=start_time, translated=translated, user_id=user_id, user=user).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/closed_captions", SendClosedCaptionResponse, path_params=path_params, json=json) - + json = SendClosedCaptionRequest( + speaker_id=speaker_id, + text=text, + end_time=end_time, + language=language, + service=service, + start_time=start_time, + translated=translated, + user_id=user_id, + user=user, + ).to_dict() + return self.post( + "/api/v2/video/call/{type}/{id}/closed_captions", + SendClosedCaptionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.delete_call") - def delete_call(self, type: str, id: str, hard: Optional[bool] = None) -> StreamResponse[DeleteCallResponse]: + def delete_call( + self, type: str, id: str, hard: Optional[bool] = None + ) -> StreamResponse[DeleteCallResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = DeleteCallRequest(hard=hard).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/delete", DeleteCallResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/video/call/{type}/{id}/delete", + DeleteCallResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.send_call_event") - def send_call_event(self, type: str, id: str, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None) -> StreamResponse[SendCallEventResponse]: + def send_call_event( + self, + type: str, + id: str, + user_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[SendCallEventResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = SendCallEventRequest(user_id=user_id, custom=custom, user=user).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/event", SendCallEventResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/video/call/{type}/{id}/event", + SendCallEventResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.collect_user_feedback") - def collect_user_feedback(self, type: str, id: str, rating: int, sdk: str, sdk_version: str, reason: Optional[str] = None, user_session_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None) -> StreamResponse[CollectUserFeedbackResponse]: + def collect_user_feedback( + self, + type: str, + id: str, + rating: int, + sdk: str, + sdk_version: str, + reason: Optional[str] = None, + user_session_id: Optional[str] = None, + custom: Optional[Dict[str, object]] = None, + ) -> StreamResponse[CollectUserFeedbackResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = CollectUserFeedbackRequest(rating=rating, sdk=sdk, sdk_version=sdk_version, reason=reason, user_session_id=user_session_id, custom=custom).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/feedback", CollectUserFeedbackResponse, path_params=path_params, json=json) - + json = CollectUserFeedbackRequest( + rating=rating, + sdk=sdk, + sdk_version=sdk_version, + reason=reason, + user_session_id=user_session_id, + custom=custom, + ).to_dict() + return self.post( + "/api/v2/video/call/{type}/{id}/feedback", + CollectUserFeedbackResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.go_live") - def go_live(self, type: str, id: str, recording_storage_name: Optional[str] = None, start_closed_caption: Optional[bool] = None, start_composite_recording: Optional[bool] = None, start_hls: Optional[bool] = None, start_individual_recording: Optional[bool] = None, start_raw_recording: Optional[bool] = None, start_recording: Optional[bool] = None, start_transcription: Optional[bool] = None, transcription_storage_name: Optional[str] = None) -> StreamResponse[GoLiveResponse]: + def go_live( + self, + type: str, + id: str, + recording_storage_name: Optional[str] = None, + start_closed_caption: Optional[bool] = None, + start_composite_recording: Optional[bool] = None, + start_hls: Optional[bool] = None, + start_individual_recording: Optional[bool] = None, + start_raw_recording: Optional[bool] = None, + start_recording: Optional[bool] = None, + start_transcription: Optional[bool] = None, + transcription_storage_name: Optional[str] = None, + ) -> StreamResponse[GoLiveResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = GoLiveRequest(recording_storage_name=recording_storage_name, start_closed_caption=start_closed_caption, start_composite_recording=start_composite_recording, start_hls=start_hls, start_individual_recording=start_individual_recording, start_raw_recording=start_raw_recording, start_recording=start_recording, start_transcription=start_transcription, transcription_storage_name=transcription_storage_name).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/go_live", GoLiveResponse, path_params=path_params, json=json) - + json = GoLiveRequest( + recording_storage_name=recording_storage_name, + start_closed_caption=start_closed_caption, + start_composite_recording=start_composite_recording, + start_hls=start_hls, + start_individual_recording=start_individual_recording, + start_raw_recording=start_raw_recording, + start_recording=start_recording, + start_transcription=start_transcription, + transcription_storage_name=transcription_storage_name, + ).to_dict() + return self.post( + "/api/v2/video/call/{type}/{id}/go_live", + GoLiveResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.kick_user") - def kick_user(self, type: str, id: str, user_id: str, block: Optional[bool] = None, kicked_by_id: Optional[str] = None, kicked_by: Optional[UserRequest] = None) -> StreamResponse[KickUserResponse]: + def kick_user( + self, + type: str, + id: str, + user_id: str, + block: Optional[bool] = None, + kicked_by_id: Optional[str] = None, + kicked_by: Optional[UserRequest] = None, + ) -> StreamResponse[KickUserResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = KickUserRequest(user_id=user_id, block=block, kicked_by_id=kicked_by_id, kicked_by=kicked_by).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/kick", KickUserResponse, path_params=path_params, json=json) - + json = KickUserRequest( + user_id=user_id, block=block, kicked_by_id=kicked_by_id, kicked_by=kicked_by + ).to_dict() + return self.post( + "/api/v2/video/call/{type}/{id}/kick", + KickUserResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.end_call") def end_call(self, type: str, id: str) -> StreamResponse[EndCallResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return self.post("/api/v2/video/call/{type}/{id}/mark_ended", EndCallResponse, path_params=path_params) - + return self.post( + "/api/v2/video/call/{type}/{id}/mark_ended", + EndCallResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.update_call_members") - def update_call_members(self, type: str, id: str, remove_members: Optional[List[str]] = None, update_members: Optional[List[MemberRequest]] = None) -> StreamResponse[UpdateCallMembersResponse]: + def update_call_members( + self, + type: str, + id: str, + remove_members: Optional[List[str]] = None, + update_members: Optional[List[MemberRequest]] = None, + ) -> StreamResponse[UpdateCallMembersResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = UpdateCallMembersRequest(remove_members=remove_members, update_members=update_members).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/members", UpdateCallMembersResponse, path_params=path_params, json=json) - + json = UpdateCallMembersRequest( + remove_members=remove_members, update_members=update_members + ).to_dict() + return self.post( + "/api/v2/video/call/{type}/{id}/members", + UpdateCallMembersResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.mute_users") - def mute_users(self, type: str, id: str, audio: Optional[bool] = None, mute_all_users: Optional[bool] = None, muted_by_id: Optional[str] = None, screenshare: Optional[bool] = None, screenshare_audio: Optional[bool] = None, video: Optional[bool] = None, user_ids: Optional[List[str]] = None, muted_by: Optional[UserRequest] = None) -> StreamResponse[MuteUsersResponse]: + def mute_users( + self, + type: str, + id: str, + audio: Optional[bool] = None, + mute_all_users: Optional[bool] = None, + muted_by_id: Optional[str] = None, + screenshare: Optional[bool] = None, + screenshare_audio: Optional[bool] = None, + video: Optional[bool] = None, + user_ids: Optional[List[str]] = None, + muted_by: Optional[UserRequest] = None, + ) -> StreamResponse[MuteUsersResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = MuteUsersRequest(audio=audio, mute_all_users=mute_all_users, muted_by_id=muted_by_id, screenshare=screenshare, screenshare_audio=screenshare_audio, video=video, user_ids=user_ids, muted_by=muted_by).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/mute_users", MuteUsersResponse, path_params=path_params, json=json) - + json = MuteUsersRequest( + audio=audio, + mute_all_users=mute_all_users, + muted_by_id=muted_by_id, + screenshare=screenshare, + screenshare_audio=screenshare_audio, + video=video, + user_ids=user_ids, + muted_by=muted_by, + ).to_dict() + return self.post( + "/api/v2/video/call/{type}/{id}/mute_users", + MuteUsersResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.query_call_participants") - def query_call_participants(self, id: str, type: str, limit: Optional[int] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallParticipantsResponse]: + def query_call_participants( + self, + id: str, + type: str, + limit: Optional[int] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallParticipantsResponse]: query_params = build_query_param(limit=limit) path_params = { - "id": id, "type": type, + "id": id, + "type": type, } - json = QueryCallParticipantsRequest(filter_conditions=filter_conditions).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/participants", QueryCallParticipantsResponse, query_params=query_params, path_params=path_params, json=json) - + json = QueryCallParticipantsRequest( + filter_conditions=filter_conditions + ).to_dict() + return self.post( + "/api/v2/video/call/{type}/{id}/participants", + QueryCallParticipantsResponse, + query_params=query_params, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.video_pin") - def video_pin(self, type: str, id: str, session_id: str, user_id: str) -> StreamResponse[PinResponse]: + def video_pin( + self, type: str, id: str, session_id: str, user_id: str + ) -> StreamResponse[PinResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = PinRequest(session_id=session_id, user_id=user_id).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/pin", PinResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/video/call/{type}/{id}/pin", + PinResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.list_recordings") - def list_recordings(self, type: str, id: str) -> StreamResponse[ListRecordingsResponse]: + def list_recordings( + self, type: str, id: str + ) -> StreamResponse[ListRecordingsResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return self.get("/api/v2/video/call/{type}/{id}/recordings", ListRecordingsResponse, path_params=path_params) - + return self.get( + "/api/v2/video/call/{type}/{id}/recordings", + ListRecordingsResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.start_recording") - def start_recording(self, type: str, id: str, recording_type: str, recording_external_storage: Optional[str] = None) -> StreamResponse[StartRecordingResponse]: + def start_recording( + self, + type: str, + id: str, + recording_type: str, + recording_external_storage: Optional[str] = None, + ) -> StreamResponse[StartRecordingResponse]: path_params = { - "type": type, "id": id, "recording_type": recording_type, + "type": type, + "id": id, + "recording_type": recording_type, } - json = StartRecordingRequest(recording_external_storage=recording_external_storage).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/recordings/{recording_type}/start", StartRecordingResponse, path_params=path_params, json=json) - + json = StartRecordingRequest( + recording_external_storage=recording_external_storage + ).to_dict() + return self.post( + "/api/v2/video/call/{type}/{id}/recordings/{recording_type}/start", + StartRecordingResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.stop_recording") - def stop_recording(self, type: str, id: str, recording_type: str, ) -> StreamResponse[StopRecordingResponse]: + def stop_recording( + self, + type: str, + id: str, + recording_type: str, + ) -> StreamResponse[StopRecordingResponse]: path_params = { - "type": type, "id": id, "recording_type": recording_type, + "type": type, + "id": id, + "recording_type": recording_type, } json = StopRecordingRequest().to_dict() - return self.post("/api/v2/video/call/{type}/{id}/recordings/{recording_type}/stop", StopRecordingResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/video/call/{type}/{id}/recordings/{recording_type}/stop", + StopRecordingResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.get_call_report") - def get_call_report(self, type: str, id: str, session_id: Optional[str] = None) -> StreamResponse[GetCallReportResponse]: + def get_call_report( + self, type: str, id: str, session_id: Optional[str] = None + ) -> StreamResponse[GetCallReportResponse]: query_params = build_query_param(session_id=session_id) path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return self.get("/api/v2/video/call/{type}/{id}/report", GetCallReportResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/video/call/{type}/{id}/report", + GetCallReportResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.ring_call") - def ring_call(self, type: str, id: str, video: Optional[bool] = None, members_ids: Optional[List[str]] = None) -> StreamResponse[RingCallResponse]: + def ring_call( + self, + type: str, + id: str, + video: Optional[bool] = None, + members_ids: Optional[List[str]] = None, + ) -> StreamResponse[RingCallResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = RingCallRequest(video=video, members_ids=members_ids).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/ring", RingCallResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/video/call/{type}/{id}/ring", + RingCallResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.start_rtmp_broadcasts") - def start_rtmp_broadcasts(self, type: str, id: str, broadcasts: List[RTMPBroadcastRequest]) -> StreamResponse[StartRTMPBroadcastsResponse]: + def start_rtmp_broadcasts( + self, type: str, id: str, broadcasts: List[RTMPBroadcastRequest] + ) -> StreamResponse[StartRTMPBroadcastsResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = StartRTMPBroadcastsRequest(broadcasts=broadcasts).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/rtmp_broadcasts", StartRTMPBroadcastsResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/video/call/{type}/{id}/rtmp_broadcasts", + StartRTMPBroadcastsResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.stop_all_rtmp_broadcasts") - def stop_all_rtmp_broadcasts(self, type: str, id: str) -> StreamResponse[StopAllRTMPBroadcastsResponse]: + def stop_all_rtmp_broadcasts( + self, type: str, id: str + ) -> StreamResponse[StopAllRTMPBroadcastsResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return self.post("/api/v2/video/call/{type}/{id}/rtmp_broadcasts/stop", StopAllRTMPBroadcastsResponse, path_params=path_params) - + return self.post( + "/api/v2/video/call/{type}/{id}/rtmp_broadcasts/stop", + StopAllRTMPBroadcastsResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.stop_rtmp_broadcast") - def stop_rtmp_broadcast(self, type: str, id: str, name: str, ) -> StreamResponse[StopRTMPBroadcastsResponse]: + def stop_rtmp_broadcast( + self, + type: str, + id: str, + name: str, + ) -> StreamResponse[StopRTMPBroadcastsResponse]: path_params = { - "type": type, "id": id, "name": name, + "type": type, + "id": id, + "name": name, } json = StopRTMPBroadcastsRequest().to_dict() - return self.post("/api/v2/video/call/{type}/{id}/rtmp_broadcasts/{name}/stop", StopRTMPBroadcastsResponse, path_params=path_params, json=json) - - @telemetry.operation_name("getstream.api.video.get_call_participant_session_metrics") - def get_call_participant_session_metrics(self, type: str, id: str, session: str, user: str, user_session: str, since: Optional[datetime] = None, until: Optional[datetime] = None) -> StreamResponse[GetCallParticipantSessionMetricsResponse]: + return self.post( + "/api/v2/video/call/{type}/{id}/rtmp_broadcasts/{name}/stop", + StopRTMPBroadcastsResponse, + path_params=path_params, + json=json, + ) + + @telemetry.operation_name( + "getstream.api.video.get_call_participant_session_metrics" + ) + def get_call_participant_session_metrics( + self, + type: str, + id: str, + session: str, + user: str, + user_session: str, + since: Optional[datetime] = None, + until: Optional[datetime] = None, + ) -> StreamResponse[GetCallParticipantSessionMetricsResponse]: query_params = build_query_param(since=since, until=until) path_params = { - "type": type, "id": id, "session": session, "user": user, "user_session": user_session, + "type": type, + "id": id, + "session": session, + "user": user, + "user_session": user_session, } - return self.get("/api/v2/video/call/{type}/{id}/session/{session}/participant/{user}/{user_session}/details/track", GetCallParticipantSessionMetricsResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/video/call/{type}/{id}/session/{session}/participant/{user}/{user_session}/details/track", + GetCallParticipantSessionMetricsResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.query_call_participant_sessions") - def query_call_participant_sessions(self, type: str, id: str, session: str, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallParticipantSessionsResponse]: - query_params = build_query_param(limit=limit, prev=prev, next=next, filter_conditions=filter_conditions) + def query_call_participant_sessions( + self, + type: str, + id: str, + session: str, + limit: Optional[int] = None, + prev: Optional[str] = None, + next: Optional[str] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallParticipantSessionsResponse]: + query_params = build_query_param( + limit=limit, prev=prev, next=next, filter_conditions=filter_conditions + ) path_params = { - "type": type, "id": id, "session": session, + "type": type, + "id": id, + "session": session, } - return self.get("/api/v2/video/call/{type}/{id}/session/{session}/participant_sessions", QueryCallParticipantSessionsResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/video/call/{type}/{id}/session/{session}/participant_sessions", + QueryCallParticipantSessionsResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.start_hls_broadcasting") - def start_hls_broadcasting(self, type: str, id: str) -> StreamResponse[StartHLSBroadcastingResponse]: + def start_hls_broadcasting( + self, type: str, id: str + ) -> StreamResponse[StartHLSBroadcastingResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return self.post("/api/v2/video/call/{type}/{id}/start_broadcasting", StartHLSBroadcastingResponse, path_params=path_params) - + return self.post( + "/api/v2/video/call/{type}/{id}/start_broadcasting", + StartHLSBroadcastingResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.start_closed_captions") - def start_closed_captions(self, type: str, id: str, enable_transcription: Optional[bool] = None, external_storage: Optional[str] = None, language: Optional[str] = None, speech_segment_config: Optional[SpeechSegmentConfig] = None) -> StreamResponse[StartClosedCaptionsResponse]: + def start_closed_captions( + self, + type: str, + id: str, + enable_transcription: Optional[bool] = None, + external_storage: Optional[str] = None, + language: Optional[str] = None, + speech_segment_config: Optional[SpeechSegmentConfig] = None, + ) -> StreamResponse[StartClosedCaptionsResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = StartClosedCaptionsRequest(enable_transcription=enable_transcription, external_storage=external_storage, language=language, speech_segment_config=speech_segment_config).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/start_closed_captions", StartClosedCaptionsResponse, path_params=path_params, json=json) - + json = StartClosedCaptionsRequest( + enable_transcription=enable_transcription, + external_storage=external_storage, + language=language, + speech_segment_config=speech_segment_config, + ).to_dict() + return self.post( + "/api/v2/video/call/{type}/{id}/start_closed_captions", + StartClosedCaptionsResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.start_frame_recording") - def start_frame_recording(self, type: str, id: str, recording_external_storage: Optional[str] = None) -> StreamResponse[StartFrameRecordingResponse]: + def start_frame_recording( + self, type: str, id: str, recording_external_storage: Optional[str] = None + ) -> StreamResponse[StartFrameRecordingResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = StartFrameRecordingRequest(recording_external_storage=recording_external_storage).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/start_frame_recording", StartFrameRecordingResponse, path_params=path_params, json=json) - + json = StartFrameRecordingRequest( + recording_external_storage=recording_external_storage + ).to_dict() + return self.post( + "/api/v2/video/call/{type}/{id}/start_frame_recording", + StartFrameRecordingResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.start_transcription") - def start_transcription(self, type: str, id: str, enable_closed_captions: Optional[bool] = None, language: Optional[str] = None, transcription_external_storage: Optional[str] = None) -> StreamResponse[StartTranscriptionResponse]: + def start_transcription( + self, + type: str, + id: str, + enable_closed_captions: Optional[bool] = None, + language: Optional[str] = None, + transcription_external_storage: Optional[str] = None, + ) -> StreamResponse[StartTranscriptionResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = StartTranscriptionRequest(enable_closed_captions=enable_closed_captions, language=language, transcription_external_storage=transcription_external_storage).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/start_transcription", StartTranscriptionResponse, path_params=path_params, json=json) - + json = StartTranscriptionRequest( + enable_closed_captions=enable_closed_captions, + language=language, + transcription_external_storage=transcription_external_storage, + ).to_dict() + return self.post( + "/api/v2/video/call/{type}/{id}/start_transcription", + StartTranscriptionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.stop_hls_broadcasting") - def stop_hls_broadcasting(self, type: str, id: str) -> StreamResponse[StopHLSBroadcastingResponse]: + def stop_hls_broadcasting( + self, type: str, id: str + ) -> StreamResponse[StopHLSBroadcastingResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return self.post("/api/v2/video/call/{type}/{id}/stop_broadcasting", StopHLSBroadcastingResponse, path_params=path_params) - + return self.post( + "/api/v2/video/call/{type}/{id}/stop_broadcasting", + StopHLSBroadcastingResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.stop_closed_captions") - def stop_closed_captions(self, type: str, id: str, stop_transcription: Optional[bool] = None) -> StreamResponse[StopClosedCaptionsResponse]: + def stop_closed_captions( + self, type: str, id: str, stop_transcription: Optional[bool] = None + ) -> StreamResponse[StopClosedCaptionsResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = StopClosedCaptionsRequest(stop_transcription=stop_transcription).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/stop_closed_captions", StopClosedCaptionsResponse, path_params=path_params, json=json) - + json = StopClosedCaptionsRequest( + stop_transcription=stop_transcription + ).to_dict() + return self.post( + "/api/v2/video/call/{type}/{id}/stop_closed_captions", + StopClosedCaptionsResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.stop_frame_recording") - def stop_frame_recording(self, type: str, id: str) -> StreamResponse[StopFrameRecordingResponse]: + def stop_frame_recording( + self, type: str, id: str + ) -> StreamResponse[StopFrameRecordingResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return self.post("/api/v2/video/call/{type}/{id}/stop_frame_recording", StopFrameRecordingResponse, path_params=path_params) - + return self.post( + "/api/v2/video/call/{type}/{id}/stop_frame_recording", + StopFrameRecordingResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.stop_live") - def stop_live(self, type: str, id: str, continue_closed_caption: Optional[bool] = None, continue_composite_recording: Optional[bool] = None, continue_hls: Optional[bool] = None, continue_individual_recording: Optional[bool] = None, continue_raw_recording: Optional[bool] = None, continue_recording: Optional[bool] = None, continue_rtmp_broadcasts: Optional[bool] = None, continue_transcription: Optional[bool] = None) -> StreamResponse[StopLiveResponse]: + def stop_live( + self, + type: str, + id: str, + continue_closed_caption: Optional[bool] = None, + continue_composite_recording: Optional[bool] = None, + continue_hls: Optional[bool] = None, + continue_individual_recording: Optional[bool] = None, + continue_raw_recording: Optional[bool] = None, + continue_recording: Optional[bool] = None, + continue_rtmp_broadcasts: Optional[bool] = None, + continue_transcription: Optional[bool] = None, + ) -> StreamResponse[StopLiveResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = StopLiveRequest(continue_closed_caption=continue_closed_caption, continue_composite_recording=continue_composite_recording, continue_hls=continue_hls, continue_individual_recording=continue_individual_recording, continue_raw_recording=continue_raw_recording, continue_recording=continue_recording, continue_rtmp_broadcasts=continue_rtmp_broadcasts, continue_transcription=continue_transcription).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/stop_live", StopLiveResponse, path_params=path_params, json=json) - + json = StopLiveRequest( + continue_closed_caption=continue_closed_caption, + continue_composite_recording=continue_composite_recording, + continue_hls=continue_hls, + continue_individual_recording=continue_individual_recording, + continue_raw_recording=continue_raw_recording, + continue_recording=continue_recording, + continue_rtmp_broadcasts=continue_rtmp_broadcasts, + continue_transcription=continue_transcription, + ).to_dict() + return self.post( + "/api/v2/video/call/{type}/{id}/stop_live", + StopLiveResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.stop_transcription") - def stop_transcription(self, type: str, id: str, stop_closed_captions: Optional[bool] = None) -> StreamResponse[StopTranscriptionResponse]: + def stop_transcription( + self, type: str, id: str, stop_closed_captions: Optional[bool] = None + ) -> StreamResponse[StopTranscriptionResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = StopTranscriptionRequest(stop_closed_captions=stop_closed_captions).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/stop_transcription", StopTranscriptionResponse, path_params=path_params, json=json) - + json = StopTranscriptionRequest( + stop_closed_captions=stop_closed_captions + ).to_dict() + return self.post( + "/api/v2/video/call/{type}/{id}/stop_transcription", + StopTranscriptionResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.list_transcriptions") - def list_transcriptions(self, type: str, id: str) -> StreamResponse[ListTranscriptionsResponse]: + def list_transcriptions( + self, type: str, id: str + ) -> StreamResponse[ListTranscriptionsResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - return self.get("/api/v2/video/call/{type}/{id}/transcriptions", ListTranscriptionsResponse, path_params=path_params) - + return self.get( + "/api/v2/video/call/{type}/{id}/transcriptions", + ListTranscriptionsResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.unblock_user") - def unblock_user(self, type: str, id: str, user_id: str) -> StreamResponse[UnblockUserResponse]: + def unblock_user( + self, type: str, id: str, user_id: str + ) -> StreamResponse[UnblockUserResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = UnblockUserRequest(user_id=user_id).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/unblock", UnblockUserResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/video/call/{type}/{id}/unblock", + UnblockUserResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.video_unpin") - def video_unpin(self, type: str, id: str, session_id: str, user_id: str) -> StreamResponse[UnpinResponse]: + def video_unpin( + self, type: str, id: str, session_id: str, user_id: str + ) -> StreamResponse[UnpinResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } json = UnpinRequest(session_id=session_id, user_id=user_id).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/unpin", UnpinResponse, path_params=path_params, json=json) - + return self.post( + "/api/v2/video/call/{type}/{id}/unpin", + UnpinResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.update_user_permissions") - def update_user_permissions(self, type: str, id: str, user_id: str, grant_permissions: Optional[List[str]] = None, revoke_permissions: Optional[List[str]] = None) -> StreamResponse[UpdateUserPermissionsResponse]: + def update_user_permissions( + self, + type: str, + id: str, + user_id: str, + grant_permissions: Optional[List[str]] = None, + revoke_permissions: Optional[List[str]] = None, + ) -> StreamResponse[UpdateUserPermissionsResponse]: path_params = { - "type": type, "id": id, + "type": type, + "id": id, } - json = UpdateUserPermissionsRequest(user_id=user_id, grant_permissions=grant_permissions, revoke_permissions=revoke_permissions).to_dict() - return self.post("/api/v2/video/call/{type}/{id}/user_permissions", UpdateUserPermissionsResponse, path_params=path_params, json=json) - + json = UpdateUserPermissionsRequest( + user_id=user_id, + grant_permissions=grant_permissions, + revoke_permissions=revoke_permissions, + ).to_dict() + return self.post( + "/api/v2/video/call/{type}/{id}/user_permissions", + UpdateUserPermissionsResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.delete_recording") - def delete_recording(self, type: str, id: str, session: str, filename: str) -> StreamResponse[DeleteRecordingResponse]: + def delete_recording( + self, type: str, id: str, session: str, filename: str + ) -> StreamResponse[DeleteRecordingResponse]: path_params = { - "type": type, "id": id, "session": session, "filename": filename, + "type": type, + "id": id, + "session": session, + "filename": filename, } - return self.delete("/api/v2/video/call/{type}/{id}/{session}/recordings/{filename}", DeleteRecordingResponse, path_params=path_params) - + return self.delete( + "/api/v2/video/call/{type}/{id}/{session}/recordings/{filename}", + DeleteRecordingResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.delete_transcription") - def delete_transcription(self, type: str, id: str, session: str, filename: str) -> StreamResponse[DeleteTranscriptionResponse]: + def delete_transcription( + self, type: str, id: str, session: str, filename: str + ) -> StreamResponse[DeleteTranscriptionResponse]: path_params = { - "type": type, "id": id, "session": session, "filename": filename, + "type": type, + "id": id, + "session": session, + "filename": filename, } - return self.delete("/api/v2/video/call/{type}/{id}/{session}/transcriptions/{filename}", DeleteTranscriptionResponse, path_params=path_params) - + return self.delete( + "/api/v2/video/call/{type}/{id}/{session}/transcriptions/{filename}", + DeleteTranscriptionResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.report_client_call_event") - def report_client_call_event(self, events: List[ClientEvent]) -> StreamResponse[ReportClientEventResponse]: + def report_client_call_event( + self, events: List[ClientEvent] + ) -> StreamResponse[ReportClientEventResponse]: json = ReportClientEventRequest(events=events).to_dict() - return self.post("/api/v2/video/call_client_event", ReportClientEventResponse, json=json) - + return self.post( + "/api/v2/video/call_client_event", ReportClientEventResponse, json=json + ) + @telemetry.operation_name("getstream.api.video.query_call_session_stats") - def query_call_session_stats(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallSessionStatsResponse]: - json = QueryCallSessionStatsRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() - return self.post("/api/v2/video/call_stats", QueryCallSessionStatsResponse, json=json) - + def query_call_session_stats( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallSessionStatsResponse]: + json = QueryCallSessionStatsRequest( + limit=limit, + next=next, + prev=prev, + sort=sort, + filter_conditions=filter_conditions, + ).to_dict() + return self.post( + "/api/v2/video/call_stats", QueryCallSessionStatsResponse, json=json + ) + @telemetry.operation_name("getstream.api.video.get_call_stats_map") - def get_call_stats_map(self, call_type: str, call_id: str, session: str, start_time: Optional[datetime] = None, end_time: Optional[datetime] = None, exclude_publishers: Optional[bool] = None, exclude_subscribers: Optional[bool] = None, exclude_sfus: Optional[bool] = None) -> StreamResponse[QueryCallStatsMapResponse]: - query_params = build_query_param(start_time=start_time, end_time=end_time, exclude_publishers=exclude_publishers, exclude_subscribers=exclude_subscribers, exclude_sfus=exclude_sfus) + def get_call_stats_map( + self, + call_type: str, + call_id: str, + session: str, + start_time: Optional[datetime] = None, + end_time: Optional[datetime] = None, + exclude_publishers: Optional[bool] = None, + exclude_subscribers: Optional[bool] = None, + exclude_sfus: Optional[bool] = None, + ) -> StreamResponse[QueryCallStatsMapResponse]: + query_params = build_query_param( + start_time=start_time, + end_time=end_time, + exclude_publishers=exclude_publishers, + exclude_subscribers=exclude_subscribers, + exclude_sfus=exclude_sfus, + ) path_params = { - "call_type": call_type, "call_id": call_id, "session": session, + "call_type": call_type, + "call_id": call_id, + "session": session, } - return self.get("/api/v2/video/call_stats/{call_type}/{call_id}/{session}/map", QueryCallStatsMapResponse, query_params=query_params, path_params=path_params) - - @telemetry.operation_name("getstream.api.video.get_call_session_participant_stats_details") - def get_call_session_participant_stats_details(self, call_type: str, call_id: str, session: str, user: str, user_session: str, since: Optional[str] = None, until: Optional[str] = None, max_points: Optional[int] = None) -> StreamResponse[GetCallSessionParticipantStatsDetailsResponse]: - query_params = build_query_param(since=since, until=until, max_points=max_points) + return self.get( + "/api/v2/video/call_stats/{call_type}/{call_id}/{session}/map", + QueryCallStatsMapResponse, + query_params=query_params, + path_params=path_params, + ) + + @telemetry.operation_name( + "getstream.api.video.get_call_session_participant_stats_details" + ) + def get_call_session_participant_stats_details( + self, + call_type: str, + call_id: str, + session: str, + user: str, + user_session: str, + since: Optional[str] = None, + until: Optional[str] = None, + max_points: Optional[int] = None, + ) -> StreamResponse[GetCallSessionParticipantStatsDetailsResponse]: + query_params = build_query_param( + since=since, until=until, max_points=max_points + ) path_params = { - "call_type": call_type, "call_id": call_id, "session": session, "user": user, "user_session": user_session, + "call_type": call_type, + "call_id": call_id, + "session": session, + "user": user, + "user_session": user_session, } - return self.get("/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participant/{user}/{user_session}/details", GetCallSessionParticipantStatsDetailsResponse, query_params=query_params, path_params=path_params) - - @telemetry.operation_name("getstream.api.video.query_call_session_participant_stats") - def query_call_session_participant_stats(self, call_type: str, call_id: str, session: str, limit: Optional[int] = None, prev: Optional[str] = None, next: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallSessionParticipantStatsResponse]: - query_params = build_query_param(limit=limit, prev=prev, next=next, sort=sort, filter_conditions=filter_conditions) + return self.get( + "/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participant/{user}/{user_session}/details", + GetCallSessionParticipantStatsDetailsResponse, + query_params=query_params, + path_params=path_params, + ) + + @telemetry.operation_name( + "getstream.api.video.query_call_session_participant_stats" + ) + def query_call_session_participant_stats( + self, + call_type: str, + call_id: str, + session: str, + limit: Optional[int] = None, + prev: Optional[str] = None, + next: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallSessionParticipantStatsResponse]: + query_params = build_query_param( + limit=limit, + prev=prev, + next=next, + sort=sort, + filter_conditions=filter_conditions, + ) path_params = { - "call_type": call_type, "call_id": call_id, "session": session, + "call_type": call_type, + "call_id": call_id, + "session": session, } - return self.get("/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participants", QueryCallSessionParticipantStatsResponse, query_params=query_params, path_params=path_params) - - @telemetry.operation_name("getstream.api.video.get_call_session_participant_stats_timeline") - def get_call_session_participant_stats_timeline(self, call_type: str, call_id: str, session: str, user: str, user_session: str, start_time: Optional[str] = None, end_time: Optional[str] = None, severity: Optional[List[str]] = None) -> StreamResponse[QueryCallSessionParticipantStatsTimelineResponse]: - query_params = build_query_param(start_time=start_time, end_time=end_time, severity=severity) + return self.get( + "/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participants", + QueryCallSessionParticipantStatsResponse, + query_params=query_params, + path_params=path_params, + ) + + @telemetry.operation_name( + "getstream.api.video.get_call_session_participant_stats_timeline" + ) + def get_call_session_participant_stats_timeline( + self, + call_type: str, + call_id: str, + session: str, + user: str, + user_session: str, + start_time: Optional[str] = None, + end_time: Optional[str] = None, + severity: Optional[List[str]] = None, + ) -> StreamResponse[QueryCallSessionParticipantStatsTimelineResponse]: + query_params = build_query_param( + start_time=start_time, end_time=end_time, severity=severity + ) path_params = { - "call_type": call_type, "call_id": call_id, "session": session, "user": user, "user_session": user_session, + "call_type": call_type, + "call_id": call_id, + "session": session, + "user": user, + "user_session": user_session, } - return self.get("/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participants/{user}/{user_session}/timeline", QueryCallSessionParticipantStatsTimelineResponse, query_params=query_params, path_params=path_params) - + return self.get( + "/api/v2/video/call_stats/{call_type}/{call_id}/{session}/participants/{user}/{user_session}/timeline", + QueryCallSessionParticipantStatsTimelineResponse, + query_params=query_params, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.query_calls") - def query_calls(self, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, sort: Optional[List[SortParamRequest]] = None, filter_conditions: Optional[Dict[str, object]] = None) -> StreamResponse[QueryCallsResponse]: - json = QueryCallsRequest(limit=limit, next=next, prev=prev, sort=sort, filter_conditions=filter_conditions).to_dict() + def query_calls( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallsResponse]: + json = QueryCallsRequest( + limit=limit, + next=next, + prev=prev, + sort=sort, + filter_conditions=filter_conditions, + ).to_dict() return self.post("/api/v2/video/calls", QueryCallsResponse, json=json) - + @telemetry.operation_name("getstream.api.video.list_call_types") def list_call_types(self) -> StreamResponse[ListCallTypeResponse]: return self.get("/api/v2/video/calltypes", ListCallTypeResponse) - + @telemetry.operation_name("getstream.api.video.create_call_type") - def create_call_type(self, name: str, external_storage: Optional[str] = None, grants: Optional[Dict[str, List[str]]] = None, notification_settings: Optional[NotificationSettingsRequest] = None, settings: Optional[CallSettingsRequest] = None) -> StreamResponse[CreateCallTypeResponse]: - json = CreateCallTypeRequest(name=name, external_storage=external_storage, grants=grants, notification_settings=notification_settings, settings=settings).to_dict() + def create_call_type( + self, + name: str, + external_storage: Optional[str] = None, + grants: Optional[Dict[str, List[str]]] = None, + notification_settings: Optional[NotificationSettingsRequest] = None, + settings: Optional[CallSettingsRequest] = None, + ) -> StreamResponse[CreateCallTypeResponse]: + json = CreateCallTypeRequest( + name=name, + external_storage=external_storage, + grants=grants, + notification_settings=notification_settings, + settings=settings, + ).to_dict() return self.post("/api/v2/video/calltypes", CreateCallTypeResponse, json=json) - + @telemetry.operation_name("getstream.api.video.delete_call_type") def delete_call_type(self, name: str) -> StreamResponse[Response]: path_params = { - "name": name, + "name": name, } - return self.delete("/api/v2/video/calltypes/{name}", Response, path_params=path_params) - + return self.delete( + "/api/v2/video/calltypes/{name}", Response, path_params=path_params + ) + @telemetry.operation_name("getstream.api.video.get_call_type") def get_call_type(self, name: str) -> StreamResponse[GetCallTypeResponse]: path_params = { - "name": name, + "name": name, } - return self.get("/api/v2/video/calltypes/{name}", GetCallTypeResponse, path_params=path_params) - + return self.get( + "/api/v2/video/calltypes/{name}", + GetCallTypeResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.update_call_type") - def update_call_type(self, name: str, external_storage: Optional[str] = None, grants: Optional[Dict[str, List[str]]] = None, notification_settings: Optional[NotificationSettingsRequest] = None, settings: Optional[CallSettingsRequest] = None) -> StreamResponse[UpdateCallTypeResponse]: + def update_call_type( + self, + name: str, + external_storage: Optional[str] = None, + grants: Optional[Dict[str, List[str]]] = None, + notification_settings: Optional[NotificationSettingsRequest] = None, + settings: Optional[CallSettingsRequest] = None, + ) -> StreamResponse[UpdateCallTypeResponse]: path_params = { - "name": name, + "name": name, } - json = UpdateCallTypeRequest(external_storage=external_storage, grants=grants, notification_settings=notification_settings, settings=settings).to_dict() - return self.put("/api/v2/video/calltypes/{name}", UpdateCallTypeResponse, path_params=path_params, json=json) - + json = UpdateCallTypeRequest( + external_storage=external_storage, + grants=grants, + notification_settings=notification_settings, + settings=settings, + ).to_dict() + return self.put( + "/api/v2/video/calltypes/{name}", + UpdateCallTypeResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.get_edges") def get_edges(self) -> StreamResponse[GetEdgesResponse]: return self.get("/api/v2/video/edges", GetEdgesResponse) - + @telemetry.operation_name("getstream.api.video.resolve_sip_auth") - def resolve_sip_auth(self, sip_caller_number: str, sip_trunk_number: str, from_host: Optional[str] = None, source_ip: Optional[str] = None) -> StreamResponse[ResolveSipAuthResponse]: - json = ResolveSipAuthRequest(sip_caller_number=sip_caller_number, sip_trunk_number=sip_trunk_number, from_host=from_host, source_ip=source_ip).to_dict() + def resolve_sip_auth( + self, + sip_caller_number: str, + sip_trunk_number: str, + from_host: Optional[str] = None, + source_ip: Optional[str] = None, + ) -> StreamResponse[ResolveSipAuthResponse]: + json = ResolveSipAuthRequest( + sip_caller_number=sip_caller_number, + sip_trunk_number=sip_trunk_number, + from_host=from_host, + source_ip=source_ip, + ).to_dict() return self.post("/api/v2/video/sip/auth", ResolveSipAuthResponse, json=json) - + @telemetry.operation_name("getstream.api.video.list_sip_inbound_routing_rule") - def list_sip_inbound_routing_rule(self) -> StreamResponse[ListSIPInboundRoutingRuleResponse]: - return self.get("/api/v2/video/sip/inbound_routing_rules", ListSIPInboundRoutingRuleResponse) - + def list_sip_inbound_routing_rule( + self, + ) -> StreamResponse[ListSIPInboundRoutingRuleResponse]: + return self.get( + "/api/v2/video/sip/inbound_routing_rules", ListSIPInboundRoutingRuleResponse + ) + @telemetry.operation_name("getstream.api.video.create_sip_inbound_routing_rule") - def create_sip_inbound_routing_rule(self, name: str, trunk_ids: List[str], caller_configs: SIPCallerConfigsRequest, called_numbers: Optional[List[str]] = None, caller_numbers: Optional[List[str]] = None, call_configs: Optional[SIPCallConfigsRequest] = None, direct_routing_configs: Optional[SIPDirectRoutingRuleCallConfigsRequest] = None, pin_protection_configs: Optional[SIPPinProtectionConfigsRequest] = None, pin_routing_configs: Optional[SIPInboundRoutingRulePinConfigsRequest] = None) -> StreamResponse[SIPInboundRoutingRuleResponse]: - json = SIPInboundRoutingRuleRequest(name=name, trunk_ids=trunk_ids, caller_configs=caller_configs, called_numbers=called_numbers, caller_numbers=caller_numbers, call_configs=call_configs, direct_routing_configs=direct_routing_configs, pin_protection_configs=pin_protection_configs, pin_routing_configs=pin_routing_configs).to_dict() - return self.post("/api/v2/video/sip/inbound_routing_rules", SIPInboundRoutingRuleResponse, json=json) - + def create_sip_inbound_routing_rule( + self, + name: str, + trunk_ids: List[str], + caller_configs: SIPCallerConfigsRequest, + called_numbers: Optional[List[str]] = None, + caller_numbers: Optional[List[str]] = None, + call_configs: Optional[SIPCallConfigsRequest] = None, + direct_routing_configs: Optional[SIPDirectRoutingRuleCallConfigsRequest] = None, + pin_protection_configs: Optional[SIPPinProtectionConfigsRequest] = None, + pin_routing_configs: Optional[SIPInboundRoutingRulePinConfigsRequest] = None, + ) -> StreamResponse[SIPInboundRoutingRuleResponse]: + json = SIPInboundRoutingRuleRequest( + name=name, + trunk_ids=trunk_ids, + caller_configs=caller_configs, + called_numbers=called_numbers, + caller_numbers=caller_numbers, + call_configs=call_configs, + direct_routing_configs=direct_routing_configs, + pin_protection_configs=pin_protection_configs, + pin_routing_configs=pin_routing_configs, + ).to_dict() + return self.post( + "/api/v2/video/sip/inbound_routing_rules", + SIPInboundRoutingRuleResponse, + json=json, + ) + @telemetry.operation_name("getstream.api.video.delete_sip_inbound_routing_rule") - def delete_sip_inbound_routing_rule(self, id: str) -> StreamResponse[DeleteSIPInboundRoutingRuleResponse]: + def delete_sip_inbound_routing_rule( + self, id: str + ) -> StreamResponse[DeleteSIPInboundRoutingRuleResponse]: path_params = { - "id": id, + "id": id, } - return self.delete("/api/v2/video/sip/inbound_routing_rules/{id}", DeleteSIPInboundRoutingRuleResponse, path_params=path_params) - + return self.delete( + "/api/v2/video/sip/inbound_routing_rules/{id}", + DeleteSIPInboundRoutingRuleResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.update_sip_inbound_routing_rule") - def update_sip_inbound_routing_rule(self, id: str, name: str, trunk_ids: List[str], caller_configs: SIPCallerConfigsRequest, called_numbers: Optional[List[str]] = None, caller_numbers: Optional[List[str]] = None, call_configs: Optional[SIPCallConfigsRequest] = None, direct_routing_configs: Optional[SIPDirectRoutingRuleCallConfigsRequest] = None, pin_protection_configs: Optional[SIPPinProtectionConfigsRequest] = None, pin_routing_configs: Optional[SIPInboundRoutingRulePinConfigsRequest] = None) -> StreamResponse[UpdateSIPInboundRoutingRuleResponse]: + def update_sip_inbound_routing_rule( + self, + id: str, + name: str, + trunk_ids: List[str], + caller_configs: SIPCallerConfigsRequest, + called_numbers: Optional[List[str]] = None, + caller_numbers: Optional[List[str]] = None, + call_configs: Optional[SIPCallConfigsRequest] = None, + direct_routing_configs: Optional[SIPDirectRoutingRuleCallConfigsRequest] = None, + pin_protection_configs: Optional[SIPPinProtectionConfigsRequest] = None, + pin_routing_configs: Optional[SIPInboundRoutingRulePinConfigsRequest] = None, + ) -> StreamResponse[UpdateSIPInboundRoutingRuleResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateSIPInboundRoutingRuleRequest(name=name, trunk_ids=trunk_ids, caller_configs=caller_configs, called_numbers=called_numbers, caller_numbers=caller_numbers, call_configs=call_configs, direct_routing_configs=direct_routing_configs, pin_protection_configs=pin_protection_configs, pin_routing_configs=pin_routing_configs).to_dict() - return self.put("/api/v2/video/sip/inbound_routing_rules/{id}", UpdateSIPInboundRoutingRuleResponse, path_params=path_params, json=json) - + json = UpdateSIPInboundRoutingRuleRequest( + name=name, + trunk_ids=trunk_ids, + caller_configs=caller_configs, + called_numbers=called_numbers, + caller_numbers=caller_numbers, + call_configs=call_configs, + direct_routing_configs=direct_routing_configs, + pin_protection_configs=pin_protection_configs, + pin_routing_configs=pin_routing_configs, + ).to_dict() + return self.put( + "/api/v2/video/sip/inbound_routing_rules/{id}", + UpdateSIPInboundRoutingRuleResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.list_sip_trunks") def list_sip_trunks(self) -> StreamResponse[ListSIPTrunksResponse]: return self.get("/api/v2/video/sip/inbound_trunks", ListSIPTrunksResponse) - + @telemetry.operation_name("getstream.api.video.create_sip_trunk") - def create_sip_trunk(self, name: str, numbers: List[str], password: Optional[str] = None, allowed_ips: Optional[List[str]] = None) -> StreamResponse[CreateSIPTrunkResponse]: - json = CreateSIPTrunkRequest(name=name, numbers=numbers, password=password, allowed_ips=allowed_ips).to_dict() - return self.post("/api/v2/video/sip/inbound_trunks", CreateSIPTrunkResponse, json=json) - + def create_sip_trunk( + self, + name: str, + numbers: List[str], + password: Optional[str] = None, + allowed_ips: Optional[List[str]] = None, + ) -> StreamResponse[CreateSIPTrunkResponse]: + json = CreateSIPTrunkRequest( + name=name, numbers=numbers, password=password, allowed_ips=allowed_ips + ).to_dict() + return self.post( + "/api/v2/video/sip/inbound_trunks", CreateSIPTrunkResponse, json=json + ) + @telemetry.operation_name("getstream.api.video.delete_sip_trunk") def delete_sip_trunk(self, id: str) -> StreamResponse[DeleteSIPTrunkResponse]: path_params = { - "id": id, + "id": id, } - return self.delete("/api/v2/video/sip/inbound_trunks/{id}", DeleteSIPTrunkResponse, path_params=path_params) - + return self.delete( + "/api/v2/video/sip/inbound_trunks/{id}", + DeleteSIPTrunkResponse, + path_params=path_params, + ) + @telemetry.operation_name("getstream.api.video.update_sip_trunk") - def update_sip_trunk(self, id: str, name: str, numbers: List[str], password: Optional[str] = None, allowed_ips: Optional[List[str]] = None) -> StreamResponse[UpdateSIPTrunkResponse]: + def update_sip_trunk( + self, + id: str, + name: str, + numbers: List[str], + password: Optional[str] = None, + allowed_ips: Optional[List[str]] = None, + ) -> StreamResponse[UpdateSIPTrunkResponse]: path_params = { - "id": id, + "id": id, } - json = UpdateSIPTrunkRequest(name=name, numbers=numbers, password=password, allowed_ips=allowed_ips).to_dict() - return self.put("/api/v2/video/sip/inbound_trunks/{id}", UpdateSIPTrunkResponse, path_params=path_params, json=json) - + json = UpdateSIPTrunkRequest( + name=name, numbers=numbers, password=password, allowed_ips=allowed_ips + ).to_dict() + return self.put( + "/api/v2/video/sip/inbound_trunks/{id}", + UpdateSIPTrunkResponse, + path_params=path_params, + json=json, + ) + @telemetry.operation_name("getstream.api.video.resolve_sip_inbound") - def resolve_sip_inbound(self, sip_caller_number: str, sip_trunk_number: str, routing_number: Optional[str] = None, trunk_id: Optional[str] = None, challenge: Optional[SIPChallengeRequest] = None, sip_headers: Optional[Dict[str, str]] = None) -> StreamResponse[ResolveSipInboundResponse]: - json = ResolveSipInboundRequest(sip_caller_number=sip_caller_number, sip_trunk_number=sip_trunk_number, routing_number=routing_number, trunk_id=trunk_id, challenge=challenge, sip_headers=sip_headers).to_dict() - return self.post("/api/v2/video/sip/resolve", ResolveSipInboundResponse, json=json) - + def resolve_sip_inbound( + self, + sip_caller_number: str, + sip_trunk_number: str, + routing_number: Optional[str] = None, + trunk_id: Optional[str] = None, + challenge: Optional[SIPChallengeRequest] = None, + sip_headers: Optional[Dict[str, str]] = None, + ) -> StreamResponse[ResolveSipInboundResponse]: + json = ResolveSipInboundRequest( + sip_caller_number=sip_caller_number, + sip_trunk_number=sip_trunk_number, + routing_number=routing_number, + trunk_id=trunk_id, + challenge=challenge, + sip_headers=sip_headers, + ).to_dict() + return self.post( + "/api/v2/video/sip/resolve", ResolveSipInboundResponse, json=json + ) + @telemetry.operation_name("getstream.api.video.query_aggregate_call_stats") - def query_aggregate_call_stats(self, _from: Optional[str] = None, to: Optional[str] = None, report_types: Optional[List[str]] = None) -> StreamResponse[QueryAggregateCallStatsResponse]: - json = QueryAggregateCallStatsRequest(_from=_from, to=to, report_types=report_types).to_dict() - return self.post("/api/v2/video/stats", QueryAggregateCallStatsResponse, json=json) - + def query_aggregate_call_stats( + self, + _from: Optional[str] = None, + to: Optional[str] = None, + report_types: Optional[List[str]] = None, + ) -> StreamResponse[QueryAggregateCallStatsResponse]: + json = QueryAggregateCallStatsRequest( + _from=_from, to=to, report_types=report_types + ).to_dict() + return self.post( + "/api/v2/video/stats", QueryAggregateCallStatsResponse, json=json + ) + @telemetry.operation_name("getstream.api.video.get_daily_digest") - def get_daily_digest(self, date: Optional[str] = None, target_app_id: Optional[str] = None) -> StreamResponse[GetDailyDigestResponse]: + def get_daily_digest( + self, date: Optional[str] = None, target_app_id: Optional[str] = None + ) -> StreamResponse[GetDailyDigestResponse]: query_params = build_query_param(date=date, target_app_id=target_app_id) - return self.get("/api/v2/video/stats/daily_digest", GetDailyDigestResponse, query_params=query_params) - \ No newline at end of file + return self.get( + "/api/v2/video/stats/daily_digest", + GetDailyDigestResponse, + query_params=query_params, + ) diff --git a/getstream/webhook.py b/getstream/webhook.py index 409f595d..b8c39083 100644 --- a/getstream/webhook.py +++ b/getstream/webhook.py @@ -226,7 +226,9 @@ EVENT_TYPE_CALL_RTMP_BROADCAST_STARTED = "call.rtmp_broadcast_started" EVENT_TYPE_CALL_RTMP_BROADCAST_STOPPED = "call.rtmp_broadcast_stopped" EVENT_TYPE_CALL_SESSION_ENDED = "call.session_ended" -EVENT_TYPE_CALL_SESSION_PARTICIPANT_COUNT_UPDATED = "call.session_participant_count_updated" +EVENT_TYPE_CALL_SESSION_PARTICIPANT_COUNT_UPDATED = ( + "call.session_participant_count_updated" +) EVENT_TYPE_CALL_SESSION_PARTICIPANT_JOINED = "call.session_participant_joined" EVENT_TYPE_CALL_SESSION_PARTICIPANT_LEFT = "call.session_participant_left" EVENT_TYPE_CALL_SESSION_STARTED = "call.session_started" @@ -399,15 +401,15 @@ def get_event_type(raw_event: bytes | str | dict[str, Any]) -> str: The event type string (e.g., "message.new"), or empty string if parsing fails """ if isinstance(raw_event, dict): - return raw_event.get('type', '') + return raw_event.get("type", "") try: if isinstance(raw_event, bytes): - raw_event = raw_event.decode('utf-8') + raw_event = raw_event.decode("utf-8") data = json.loads(raw_event) - return data.get('type', '') + return data.get("type", "") except (json.JSONDecodeError, UnicodeDecodeError, AttributeError): - return '' + return "" def parse_webhook_event(raw_event: bytes | str | dict[str, Any]) -> Any: @@ -427,13 +429,13 @@ def parse_webhook_event(raw_event: bytes | str | dict[str, Any]) -> Any: if isinstance(raw_event, dict): data = raw_event elif isinstance(raw_event, bytes): - data = json.loads(raw_event.decode('utf-8')) + data = json.loads(raw_event.decode("utf-8")) else: data = json.loads(raw_event) except (json.JSONDecodeError, UnicodeDecodeError) as e: raise ValueError(f"Failed to parse webhook payload: {e}") from e - event_type = data.get('type') + event_type = data.get("type") if not event_type: raise ValueError("Webhook payload missing 'type' field") @@ -639,9 +641,9 @@ def verify_webhook_signature(body: bytes | str, signature: str, secret: str) -> True if the signature is valid, False otherwise """ if isinstance(body, str): - body = body.encode('utf-8') + body = body.encode("utf-8") - h = hmac.new(secret.encode('utf-8'), body, hashlib.sha256) + h = hmac.new(secret.encode("utf-8"), body, hashlib.sha256) expected = h.hexdigest() return hmac.compare_digest(signature, expected) @@ -665,7 +667,9 @@ def gunzip_payload(body: bytes) -> bytes: every "looks like gzip but isn't" failure mode surfaces as InvalidWebhookError. """ if not isinstance(body, (bytes, bytearray)): - raise InvalidWebhookError(InvalidWebhookError.INVALID_JSON + ": body must be bytes") + raise InvalidWebhookError( + InvalidWebhookError.INVALID_JSON + ": body must be bytes" + ) if len(body) < 2 or bytes(body[:2]) != _GZIP_MAGIC: return bytes(body) try: @@ -688,7 +692,9 @@ def decode_sqs_payload(message_body: str) -> bytes: formats: no caller code change, no flag, no header. """ if not isinstance(message_body, str): - raise InvalidWebhookError(InvalidWebhookError.INVALID_JSON + ": message_body must be str") + raise InvalidWebhookError( + InvalidWebhookError.INVALID_JSON + ": message_body must be str" + ) try: decoded = base64.b64decode(message_body, validate=True) except ValueError: @@ -730,7 +736,9 @@ def decode_sns_payload(notification_body: str) -> bytes: :func:`decode_sqs_payload`. """ if not isinstance(notification_body, str): - raise InvalidWebhookError(InvalidWebhookError.INVALID_JSON + ": notification_body must be str") + raise InvalidWebhookError( + InvalidWebhookError.INVALID_JSON + ": notification_body must be str" + ) inner = _unwrap_sns_notification_body(notification_body) return decode_sqs_payload(inner) @@ -751,18 +759,27 @@ def parse_event(payload: bytes) -> Any: or any deserialization failure on a known type. """ if not isinstance(payload, (bytes, bytearray)): - raise InvalidWebhookError(InvalidWebhookError.INVALID_JSON + ": payload must be bytes") + raise InvalidWebhookError( + InvalidWebhookError.INVALID_JSON + ": payload must be bytes" + ) try: data = json.loads(payload) except json.JSONDecodeError as e: # json.loads handles bytes natively since Python 3.6; no UnicodeDecodeError path. - raise InvalidWebhookError(f"{InvalidWebhookError.INVALID_JSON}: failed to parse webhook payload: {e}") from e + raise InvalidWebhookError( + f"{InvalidWebhookError.INVALID_JSON}: failed to parse webhook payload: {e}" + ) from e if not isinstance(data, dict): - raise InvalidWebhookError(InvalidWebhookError.INVALID_JSON + ": webhook payload must be a JSON object") + raise InvalidWebhookError( + InvalidWebhookError.INVALID_JSON + ": webhook payload must be a JSON object" + ) event_type = data.get("type") if not isinstance(event_type, str) or event_type == "": - raise InvalidWebhookError(InvalidWebhookError.INVALID_JSON + ": webhook payload missing 'type' string field") + raise InvalidWebhookError( + InvalidWebhookError.INVALID_JSON + + ": webhook payload missing 'type' string field" + ) event_class = _get_event_class(event_type) if event_class is None: @@ -771,7 +788,9 @@ def parse_event(payload: bytes) -> Any: try: return event_class.from_dict(data, infer_missing=True) except Exception as e: - raise InvalidWebhookError(f"{InvalidWebhookError.INVALID_JSON}: failed to deserialize event: {e}") from e + raise InvalidWebhookError( + f"{InvalidWebhookError.INVALID_JSON}: failed to deserialize event: {e}" + ) from e def _build_unknown_event(event_type: str, data: dict[str, Any]) -> UnknownEvent: