diff --git a/getstream/chat/async_channel.py b/getstream/chat/async_channel.py index 64a8916c..03f33e78 100644 --- a/getstream/chat/async_channel.py +++ b/getstream/chat/async_channel.py @@ -68,7 +68,7 @@ async def update( invites: Optional[List[ChannelMemberRequest]] = None, remove_filter_tags: Optional[List[str]] = None, remove_members: Optional[List[str]] = None, - data: Optional[ChannelInput] = None, + data: Optional[ChannelInputRequest] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None, ) -> StreamResponse[UpdateChannelResponse]: @@ -330,6 +330,7 @@ async def truncate( 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, @@ -338,6 +339,7 @@ async def 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, diff --git a/getstream/chat/async_rest_client.py b/getstream/chat/async_rest_client.py index 17576b6a..5197745c 100644 --- a/getstream/chat/async_rest_client.py +++ b/getstream/chat/async_rest_client.py @@ -143,6 +143,21 @@ async def delete_channels( "/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]: + query_params = build_query_param(user_id=user_id) + json = build_body_dict(latest_delivered_messages=latest_delivered_messages) + return await self.post( + "/api/v2/chat/channels/delivered", + MarkDeliveredResponse, + query_params=query_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.mark_channels_read") async def mark_channels_read( self, @@ -246,7 +261,7 @@ async def update_channel( invites: Optional[List[ChannelMemberRequest]] = None, remove_filter_tags: Optional[List[str]] = None, remove_members: Optional[List[str]] = None, - data: Optional[ChannelInput] = None, + data: Optional[ChannelInputRequest] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None, ) -> StreamResponse[UpdateChannelResponse]: @@ -619,6 +634,7 @@ async def mark_unread( 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, @@ -628,7 +644,11 @@ async def mark_unread( "id": id, } json = build_body_dict( - message_id=message_id, thread_id=thread_id, user_id=user_id, user=user + message_id=message_id, + message_timestamp=message_timestamp, + thread_id=thread_id, + user_id=user_id, + user=user, ) return await self.post( "/api/v2/chat/channels/{type}/{id}/unread", @@ -1036,14 +1056,14 @@ async def run_message_action( form_data: Dict[str, str], user_id: Optional[str] = None, user: Optional[UserRequest] = None, - ) -> StreamResponse[MessageResponse]: + ) -> StreamResponse[MessageActionResponse]: path_params = { "id": id, } json = build_body_dict(form_data=form_data, user_id=user_id, user=user) return await self.post( "/api/v2/chat/messages/{id}/action", - MessageResponse, + MessageActionResponse, path_params=path_params, json=json, ) @@ -1052,14 +1072,14 @@ async def run_message_action( async def commit_message( self, id: str, - ) -> StreamResponse[MessageResponse]: + ) -> StreamResponse[MessageActionResponse]: path_params = { "id": id, } json = build_body_dict() return await self.post( "/api/v2/chat/messages/{id}/commit", - MessageResponse, + MessageActionResponse, path_params=path_params, json=json, ) @@ -1177,14 +1197,14 @@ async def query_reactions( @telemetry.operation_name("getstream.api.chat.translate_message") async def translate_message( self, id: str, language: str - ) -> StreamResponse[MessageResponse]: + ) -> StreamResponse[MessageActionResponse]: path_params = { "id": id, } json = build_body_dict(language=language) return await self.post( "/api/v2/chat/messages/{id}/translate", - MessageResponse, + MessageActionResponse, path_params=path_params, json=json, ) diff --git a/getstream/chat/channel.py b/getstream/chat/channel.py index b59cc6b9..d2e86ce9 100644 --- a/getstream/chat/channel.py +++ b/getstream/chat/channel.py @@ -68,7 +68,7 @@ def update( invites: Optional[List[ChannelMemberRequest]] = None, remove_filter_tags: Optional[List[str]] = None, remove_members: Optional[List[str]] = None, - data: Optional[ChannelInput] = None, + data: Optional[ChannelInputRequest] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None, ) -> StreamResponse[UpdateChannelResponse]: @@ -330,6 +330,7 @@ def truncate( 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, @@ -338,6 +339,7 @@ def 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, diff --git a/getstream/chat/rest_client.py b/getstream/chat/rest_client.py index 9b29551e..ebd60e1b 100644 --- a/getstream/chat/rest_client.py +++ b/getstream/chat/rest_client.py @@ -141,6 +141,21 @@ def delete_channels( "/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]: + query_params = build_query_param(user_id=user_id) + json = build_body_dict(latest_delivered_messages=latest_delivered_messages) + return self.post( + "/api/v2/chat/channels/delivered", + MarkDeliveredResponse, + query_params=query_params, + json=json, + ) + @telemetry.operation_name("getstream.api.chat.mark_channels_read") def mark_channels_read( self, @@ -242,7 +257,7 @@ def update_channel( invites: Optional[List[ChannelMemberRequest]] = None, remove_filter_tags: Optional[List[str]] = None, remove_members: Optional[List[str]] = None, - data: Optional[ChannelInput] = None, + data: Optional[ChannelInputRequest] = None, message: Optional[MessageRequest] = None, user: Optional[UserRequest] = None, ) -> StreamResponse[UpdateChannelResponse]: @@ -615,6 +630,7 @@ def mark_unread( 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, @@ -624,7 +640,11 @@ def mark_unread( "id": id, } json = build_body_dict( - message_id=message_id, thread_id=thread_id, user_id=user_id, user=user + message_id=message_id, + message_timestamp=message_timestamp, + thread_id=thread_id, + user_id=user_id, + user=user, ) return self.post( "/api/v2/chat/channels/{type}/{id}/unread", @@ -1026,14 +1046,14 @@ def run_message_action( form_data: Dict[str, str], user_id: Optional[str] = None, user: Optional[UserRequest] = None, - ) -> StreamResponse[MessageResponse]: + ) -> StreamResponse[MessageActionResponse]: path_params = { "id": id, } json = build_body_dict(form_data=form_data, user_id=user_id, user=user) return self.post( "/api/v2/chat/messages/{id}/action", - MessageResponse, + MessageActionResponse, path_params=path_params, json=json, ) @@ -1042,14 +1062,14 @@ def run_message_action( def commit_message( self, id: str, - ) -> StreamResponse[MessageResponse]: + ) -> StreamResponse[MessageActionResponse]: path_params = { "id": id, } json = build_body_dict() return self.post( "/api/v2/chat/messages/{id}/commit", - MessageResponse, + MessageActionResponse, path_params=path_params, json=json, ) @@ -1167,14 +1187,14 @@ def query_reactions( @telemetry.operation_name("getstream.api.chat.translate_message") def translate_message( self, id: str, language: str - ) -> StreamResponse[MessageResponse]: + ) -> StreamResponse[MessageActionResponse]: path_params = { "id": id, } json = build_body_dict(language=language) return self.post( "/api/v2/chat/messages/{id}/translate", - MessageResponse, + MessageActionResponse, path_params=path_params, json=json, ) diff --git a/getstream/common/async_rest_client.py b/getstream/common/async_rest_client.py index 23530deb..0f416c88 100644 --- a/getstream/common/async_rest_client.py +++ b/getstream/common/async_rest_client.py @@ -428,6 +428,54 @@ async def create_import( json = build_body_dict(mode=mode, path=path) 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]: + query_params = build_query_param(state=state) + 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 = build_body_dict( + product=product, settings=settings, user_id=user_id, user=user + ) + return await self.post( + "/api/v2/imports/v2", CreateImportV2TaskResponse, json=json + ) + + @telemetry.operation_name("getstream.api.common.delete_import_v2_task") + async def delete_import_v2_task( + self, id: str + ) -> StreamResponse[DeleteImportV2TaskResponse]: + path_params = { + "id": id, + } + 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]: + path_params = { + "id": id, + } + return await self.get( + "/api/v2/imports/v2/{id}", GetImportV2TaskResponse, path_params=path_params + ) + @telemetry.operation_name("getstream.api.common.get_import") async def get_import(self, id: str) -> StreamResponse[GetImportResponse]: path_params = { diff --git a/getstream/common/rest_client.py b/getstream/common/rest_client.py index 943d4f7f..49c1e524 100644 --- a/getstream/common/rest_client.py +++ b/getstream/common/rest_client.py @@ -420,6 +420,50 @@ def create_import( json = build_body_dict(mode=mode, path=path) 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]: + query_params = build_query_param(state=state) + 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 = build_body_dict( + product=product, settings=settings, user_id=user_id, user=user + ) + return self.post("/api/v2/imports/v2", CreateImportV2TaskResponse, json=json) + + @telemetry.operation_name("getstream.api.common.delete_import_v2_task") + def delete_import_v2_task( + self, id: str + ) -> StreamResponse[DeleteImportV2TaskResponse]: + path_params = { + "id": id, + } + 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, + } + return self.get( + "/api/v2/imports/v2/{id}", GetImportV2TaskResponse, path_params=path_params + ) + @telemetry.operation_name("getstream.api.common.get_import") def get_import(self, id: str) -> StreamResponse[GetImportResponse]: path_params = { diff --git a/getstream/feeds/feeds.py b/getstream/feeds/feeds.py index 268b55a7..d0c8c7a0 100644 --- a/getstream/feeds/feeds.py +++ b/getstream/feeds/feeds.py @@ -25,14 +25,15 @@ def delete( def get_or_create( self, + id_around: Optional[str] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, view: Optional[str] = None, watch: Optional[bool] = None, - activity_selector_options: Optional[Dict[str, object]] = 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, @@ -44,14 +45,15 @@ def get_or_create( response = self.client.get_or_create_feed( feed_group_id=self.feed_group, feed_id=self.id, + id_around=id_around, limit=limit, next=next, prev=prev, user_id=user_id, view=view, watch=watch, - activity_selector_options=activity_selector_options, data=data, + enrichment_options=enrichment_options, external_ranking=external_ranking, filter=filter, followers_pagination=followers_pagination, @@ -66,12 +68,18 @@ def get_or_create( def update( self, created_by_id: Optional[str] = None, + description: Optional[str] = None, + name: Optional[str] = None, + filter_tags: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, ) -> StreamResponse[UpdateFeedResponse]: response = self.client.update_feed( feed_group_id=self.feed_group, feed_id=self.id, created_by_id=created_by_id, + description=description, + name=name, + filter_tags=filter_tags, custom=custom, ) self._sync_from_response(response.data) diff --git a/getstream/feeds/rest_client.py b/getstream/feeds/rest_client.py index 27bcb2af..dcabe000 100644 --- a/getstream/feeds/rest_client.py +++ b/getstream/feeds/rest_client.py @@ -1,5 +1,6 @@ # Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. from getstream.base import BaseClient +from getstream.common import telemetry from getstream.models import * from getstream.stream_response import StreamResponse from getstream.utils import build_query_param, build_body_dict @@ -30,6 +31,7 @@ def __init__( user_agent=user_agent, ) + @telemetry.operation_name("getstream.api.feeds.add_activity") def add_activity( self, type: str, @@ -38,11 +40,14 @@ def add_activity( 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, 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, filter_tags: Optional[List[str]] = None, interest_tags: Optional[List[str]] = None, mentioned_user_ids: Optional[List[str]] = None, @@ -57,11 +62,14 @@ def add_activity( id=id, parent_id=parent_id, poll_id=poll_id, + restrict_replies=restrict_replies, + skip_enrich_url=skip_enrich_url, text=text, user_id=user_id, visibility=visibility, visibility_tag=visibility_tag, attachments=attachments, + collection_refs=collection_refs, filter_tags=filter_tags, interest_tags=interest_tags, mentioned_user_ids=mentioned_user_ids, @@ -69,18 +77,18 @@ def add_activity( location=location, search_data=search_data, ) - 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] ) -> StreamResponse[UpsertActivitiesResponse]: json = build_body_dict(activities=activities) - return self.post( "/api/v2/feeds/activities/batch", UpsertActivitiesResponse, json=json ) + @telemetry.operation_name("getstream.api.feeds.delete_activities") def delete_activities( self, ids: List[str], @@ -91,27 +99,37 @@ def delete_activities( json = build_body_dict( ids=ids, hard_delete=hard_delete, user_id=user_id, user=user ) - return self.post( "/api/v2/feeds/activities/delete", DeleteActivitiesResponse, json=json ) + @telemetry.operation_name("getstream.api.feeds.query_activities") def query_activities( self, + include_private_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]: json = build_body_dict( - limit=limit, next=next, prev=prev, sort=sort, filter=filter + include_private_activities=include_private_activities, + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, ) - return self.post( "/api/v2/feeds/activities/query", QueryActivitiesResponse, json=json ) + @telemetry.operation_name("getstream.api.feeds.delete_bookmark") def delete_bookmark( self, activity_id: str, @@ -122,7 +140,6 @@ def delete_bookmark( path_params = { "activity_id": activity_id, } - return self.delete( "/api/v2/feeds/activities/{activity_id}/bookmarks", DeleteBookmarkResponse, @@ -130,6 +147,7 @@ def delete_bookmark( path_params=path_params, ) + @telemetry.operation_name("getstream.api.feeds.update_bookmark") def update_bookmark( self, activity_id: str, @@ -151,7 +169,6 @@ def update_bookmark( new_folder=new_folder, user=user, ) - return self.patch( "/api/v2/feeds/activities/{activity_id}/bookmarks", UpdateBookmarkResponse, @@ -159,6 +176,7 @@ def update_bookmark( json=json, ) + @telemetry.operation_name("getstream.api.feeds.add_bookmark") def add_bookmark( self, activity_id: str, @@ -178,7 +196,6 @@ def add_bookmark( new_folder=new_folder, user=user, ) - return self.post( "/api/v2/feeds/activities/{activity_id}/bookmarks", AddBookmarkResponse, @@ -186,14 +203,13 @@ def add_bookmark( json=json, ) + @telemetry.operation_name("getstream.api.feeds.activity_feedback") def activity_feedback( self, activity_id: str, hide: Optional[bool] = None, - mute_user: Optional[bool] = None, - reason: Optional[str] = None, - report: Optional[bool] = None, show_less: Optional[bool] = None, + show_more: Optional[bool] = None, user_id: Optional[str] = None, user: Optional[UserRequest] = None, ) -> StreamResponse[ActivityFeedbackResponse]: @@ -202,14 +218,11 @@ def activity_feedback( } json = build_body_dict( hide=hide, - mute_user=mute_user, - reason=reason, - report=report, show_less=show_less, + show_more=show_more, user_id=user_id, user=user, ) - return self.post( "/api/v2/feeds/activities/{activity_id}/feedback", ActivityFeedbackResponse, @@ -217,6 +230,7 @@ def activity_feedback( json=json, ) + @telemetry.operation_name("getstream.api.feeds.cast_poll_vote") def cast_poll_vote( self, activity_id: str, @@ -230,7 +244,6 @@ def cast_poll_vote( "poll_id": poll_id, } json = build_body_dict(user_id=user_id, user=user, vote=vote) - return self.post( "/api/v2/feeds/activities/{activity_id}/polls/{poll_id}/vote", PollVoteResponse, @@ -238,6 +251,7 @@ def cast_poll_vote( json=json, ) + @telemetry.operation_name("getstream.api.feeds.delete_poll_vote") def delete_poll_vote( self, activity_id: str, @@ -251,7 +265,6 @@ def delete_poll_vote( "poll_id": poll_id, "vote_id": vote_id, } - return self.delete( "/api/v2/feeds/activities/{activity_id}/polls/{poll_id}/vote/{vote_id}", PollVoteResponse, @@ -259,11 +272,13 @@ def delete_poll_vote( path_params=path_params, ) - def add_reaction( + @telemetry.operation_name("getstream.api.feeds.add_activity_reaction") + def add_activity_reaction( self, activity_id: str, type: str, create_notification_activity: Optional[bool] = None, + enforce_unique: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, @@ -275,12 +290,12 @@ def add_reaction( json = build_body_dict( type=type, create_notification_activity=create_notification_activity, + enforce_unique=enforce_unique, skip_push=skip_push, user_id=user_id, custom=custom, user=user, ) - return self.post( "/api/v2/feeds/activities/{activity_id}/reactions", AddReactionResponse, @@ -288,6 +303,7 @@ def add_reaction( json=json, ) + @telemetry.operation_name("getstream.api.feeds.query_activity_reactions") def query_activity_reactions( self, activity_id: str, @@ -303,7 +319,6 @@ def query_activity_reactions( json = build_body_dict( limit=limit, next=next, prev=prev, sort=sort, filter=filter ) - return self.post( "/api/v2/feeds/activities/{activity_id}/reactions/query", QueryActivityReactionsResponse, @@ -311,6 +326,7 @@ def query_activity_reactions( json=json, ) + @telemetry.operation_name("getstream.api.feeds.delete_activity_reaction") def delete_activity_reaction( self, activity_id: str, type: str, user_id: Optional[str] = None ) -> StreamResponse[DeleteActivityReactionResponse]: @@ -319,7 +335,6 @@ def delete_activity_reaction( "activity_id": activity_id, "type": type, } - return self.delete( "/api/v2/feeds/activities/{activity_id}/reactions/{type}", DeleteActivityReactionResponse, @@ -327,6 +342,7 @@ def delete_activity_reaction( path_params=path_params, ) + @telemetry.operation_name("getstream.api.feeds.delete_activity") def delete_activity( self, id: str, hard_delete: Optional[bool] = None ) -> StreamResponse[DeleteActivityResponse]: @@ -334,7 +350,6 @@ def delete_activity( path_params = { "id": id, } - return self.delete( "/api/v2/feeds/activities/{id}", DeleteActivityResponse, @@ -342,17 +357,18 @@ def delete_activity( path_params=path_params, ) + @telemetry.operation_name("getstream.api.feeds.get_activity") def get_activity(self, id: str) -> StreamResponse[GetActivityResponse]: path_params = { "id": id, } - return self.get( "/api/v2/feeds/activities/{id}", GetActivityResponse, path_params=path_params, ) + @telemetry.operation_name("getstream.api.feeds.update_activity_partial") def update_activity_partial( self, id: str, @@ -365,7 +381,6 @@ def update_activity_partial( "id": id, } json = build_body_dict(user_id=user_id, unset=unset, set=set, user=user) - return self.patch( "/api/v2/feeds/activities/{id}", UpdateActivityPartialResponse, @@ -373,17 +388,24 @@ def update_activity_partial( json=json, ) + @telemetry.operation_name("getstream.api.feeds.update_activity") def update_activity( self, id: str, expires_at: Optional[datetime] = None, poll_id: Optional[str] = None, + restrict_replies: Optional[str] = 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[ActivityLocation] = None, user: Optional[UserRequest] = None, @@ -394,17 +416,22 @@ def update_activity( json = build_body_dict( expires_at=expires_at, poll_id=poll_id, + restrict_replies=restrict_replies, + 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, user=user, ) - return self.put( "/api/v2/feeds/activities/{id}", UpdateActivityResponse, @@ -412,6 +439,7 @@ def update_activity( json=json, ) + @telemetry.operation_name("getstream.api.feeds.query_bookmark_folders") def query_bookmark_folders( self, limit: Optional[int] = None, @@ -423,26 +451,26 @@ def query_bookmark_folders( json = build_body_dict( limit=limit, next=next, prev=prev, sort=sort, filter=filter ) - 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]: path_params = { "folder_id": folder_id, } - 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, @@ -455,7 +483,6 @@ def update_bookmark_folder( "folder_id": folder_id, } json = build_body_dict(name=name, user_id=user_id, custom=custom, user=user) - return self.patch( "/api/v2/feeds/bookmark_folders/{folder_id}", UpdateBookmarkFolderResponse, @@ -463,6 +490,7 @@ def update_bookmark_folder( json=json, ) + @telemetry.operation_name("getstream.api.feeds.query_bookmarks") def query_bookmarks( self, limit: Optional[int] = None, @@ -474,11 +502,68 @@ def query_bookmarks( json = build_body_dict( limit=limit, next=next, prev=prev, sort=sort, filter=filter ) - return self.post( "/api/v2/feeds/bookmarks/query", QueryBookmarksResponse, json=json ) + @telemetry.operation_name("getstream.api.feeds.delete_collections") + 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, + ) + + @telemetry.operation_name("getstream.api.feeds.read_collections") + def read_collections( + self, collection_refs: List[str], user_id: Optional[str] = None + ) -> StreamResponse[ReadCollectionsResponse]: + query_params = build_query_param( + collection_refs=collection_refs, user_id=user_id + ) + 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 = build_body_dict(collections=collections, user_id=user_id, user=user) + 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 = build_body_dict(collections=collections, user_id=user_id, user=user) + 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]: + json = build_body_dict(collections=collections) + return self.put( + "/api/v2/feeds/collections", UpsertCollectionsResponse, json=json + ) + + @telemetry.operation_name("getstream.api.feeds.get_comments") def get_comments( self, object_id: str, @@ -500,18 +585,20 @@ def get_comments( 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: str, - object_id: str, - object_type: str, + comment: Optional[str] = None, create_notification_activity: 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, @@ -521,10 +608,12 @@ def add_comment( ) -> StreamResponse[AddCommentResponse]: json = build_body_dict( comment=comment, + create_notification_activity=create_notification_activity, + id=id, object_id=object_id, object_type=object_type, - create_notification_activity=create_notification_activity, parent_id=parent_id, + skip_enrich_url=skip_enrich_url, skip_push=skip_push, user_id=user_id, attachments=attachments, @@ -532,18 +621,18 @@ def add_comment( custom=custom, user=user, ) - 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]: json = build_body_dict(comments=comments) - 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], @@ -555,11 +644,11 @@ def query_comments( json = build_body_dict( filter=filter, limit=limit, next=next, prev=prev, sort=sort ) - return self.post( "/api/v2/feeds/comments/query", QueryCommentsResponse, json=json ) + @telemetry.operation_name("getstream.api.feeds.delete_comment") def delete_comment( self, id: str, hard_delete: Optional[bool] = None ) -> StreamResponse[DeleteCommentResponse]: @@ -567,7 +656,6 @@ def delete_comment( path_params = { "id": id, } - return self.delete( "/api/v2/feeds/comments/{id}", DeleteCommentResponse, @@ -575,27 +663,39 @@ def delete_comment( path_params=path_params, ) + @telemetry.operation_name("getstream.api.feeds.get_comment") def get_comment(self, id: str) -> StreamResponse[GetCommentResponse]: path_params = { "id": id, } - return self.get( "/api/v2/feeds/comments/{id}", GetCommentResponse, path_params=path_params ) + @telemetry.operation_name("getstream.api.feeds.update_comment") def update_comment( self, id: str, comment: Optional[str] = None, + skip_enrich_url: Optional[bool] = None, skip_push: Optional[bool] = None, + user_id: Optional[str] = None, + attachments: Optional[List[Attachment]] = None, custom: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, ) -> StreamResponse[UpdateCommentResponse]: path_params = { "id": id, } - json = build_body_dict(comment=comment, skip_push=skip_push, custom=custom) - + json = build_body_dict( + comment=comment, + skip_enrich_url=skip_enrich_url, + skip_push=skip_push, + user_id=user_id, + attachments=attachments, + custom=custom, + user=user, + ) return self.patch( "/api/v2/feeds/comments/{id}", UpdateCommentResponse, @@ -603,11 +703,13 @@ def update_comment( json=json, ) + @telemetry.operation_name("getstream.api.feeds.add_comment_reaction") def add_comment_reaction( self, id: str, type: str, create_notification_activity: Optional[bool] = None, + enforce_unique: Optional[bool] = None, skip_push: Optional[bool] = None, user_id: Optional[str] = None, custom: Optional[Dict[str, object]] = None, @@ -619,12 +721,12 @@ def add_comment_reaction( json = build_body_dict( type=type, create_notification_activity=create_notification_activity, + enforce_unique=enforce_unique, skip_push=skip_push, user_id=user_id, custom=custom, user=user, ) - return self.post( "/api/v2/feeds/comments/{id}/reactions", AddCommentReactionResponse, @@ -632,6 +734,7 @@ def add_comment_reaction( json=json, ) + @telemetry.operation_name("getstream.api.feeds.query_comment_reactions") def query_comment_reactions( self, id: str, @@ -647,7 +750,6 @@ def query_comment_reactions( json = build_body_dict( limit=limit, next=next, prev=prev, sort=sort, filter=filter ) - return self.post( "/api/v2/feeds/comments/{id}/reactions/query", QueryCommentReactionsResponse, @@ -655,6 +757,7 @@ def query_comment_reactions( json=json, ) + @telemetry.operation_name("getstream.api.feeds.delete_comment_reaction") def delete_comment_reaction( self, id: str, type: str, user_id: Optional[str] = None ) -> StreamResponse[DeleteCommentReactionResponse]: @@ -663,7 +766,6 @@ def delete_comment_reaction( "id": id, "type": type, } - return self.delete( "/api/v2/feeds/comments/{id}/reactions/{type}", DeleteCommentReactionResponse, @@ -671,6 +773,7 @@ def delete_comment_reaction( path_params=path_params, ) + @telemetry.operation_name("getstream.api.feeds.get_comment_replies") def get_comment_replies( self, id: str, @@ -692,7 +795,6 @@ def get_comment_replies( path_params = { "id": id, } - return self.get( "/api/v2/feeds/comments/{id}/replies", GetCommentRepliesResponse, @@ -700,9 +802,18 @@ def get_comment_replies( path_params=path_params, ) - def list_feed_groups(self) -> StreamResponse[ListFeedGroupsResponse]: - return self.get("/api/v2/feeds/feed_groups", ListFeedGroupsResponse) + @telemetry.operation_name("getstream.api.feeds.list_feed_groups") + 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, + ) + @telemetry.operation_name("getstream.api.feeds.create_feed_group") def create_feed_group( self, id: str, @@ -714,6 +825,7 @@ def create_feed_group( notification: Optional[NotificationConfig] = None, push_notification: Optional[PushNotificationConfig] = None, ranking: Optional[RankingConfig] = None, + stories: Optional[StoriesConfig] = None, ) -> StreamResponse[CreateFeedGroupResponse]: json = build_body_dict( id=id, @@ -725,12 +837,13 @@ def create_feed_group( notification=notification, push_notification=push_notification, ranking=ranking, + stories=stories, ) - 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 ) -> StreamResponse[DeleteFeedResponse]: @@ -739,7 +852,6 @@ def delete_feed( "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, @@ -747,18 +859,20 @@ def delete_feed( 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, + id_around: Optional[str] = None, limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, user_id: Optional[str] = None, view: Optional[str] = None, watch: Optional[bool] = None, - activity_selector_options: Optional[Dict[str, object]] = 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, @@ -772,14 +886,15 @@ def get_or_create_feed( "feed_id": feed_id, } json = build_body_dict( + id_around=id_around, limit=limit, next=next, prev=prev, user_id=user_id, view=view, watch=watch, - activity_selector_options=activity_selector_options, data=data, + enrichment_options=enrichment_options, external_ranking=external_ranking, filter=filter, followers_pagination=followers_pagination, @@ -788,7 +903,6 @@ def get_or_create_feed( member_pagination=member_pagination, user=user, ) - return self.post( "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}", GetOrCreateFeedResponse, @@ -796,19 +910,28 @@ def get_or_create_feed( json=json, ) + @telemetry.operation_name("getstream.api.feeds.update_feed") def update_feed( self, feed_group_id: str, feed_id: str, created_by_id: Optional[str] = None, + description: Optional[str] = None, + name: Optional[str] = None, + filter_tags: Optional[List[str]] = None, custom: Optional[Dict[str, object]] = None, ) -> StreamResponse[UpdateFeedResponse]: path_params = { "feed_group_id": feed_group_id, "feed_id": feed_id, } - json = build_body_dict(created_by_id=created_by_id, custom=custom) - + json = build_body_dict( + created_by_id=created_by_id, + description=description, + name=name, + filter_tags=filter_tags, + custom=custom, + ) return self.put( "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}", UpdateFeedResponse, @@ -816,6 +939,7 @@ def update_feed( json=json, ) + @telemetry.operation_name("getstream.api.feeds.mark_activity") def mark_activity( self, feed_group_id: str, @@ -841,7 +965,6 @@ def mark_activity( mark_watched=mark_watched, user=user, ) - return self.post( "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/mark/batch", Response, @@ -849,6 +972,7 @@ def mark_activity( json=json, ) + @telemetry.operation_name("getstream.api.feeds.unpin_activity") def unpin_activity( self, feed_group_id: str, @@ -862,7 +986,6 @@ def unpin_activity( "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, @@ -870,6 +993,7 @@ def unpin_activity( path_params=path_params, ) + @telemetry.operation_name("getstream.api.feeds.pin_activity") def pin_activity( self, feed_group_id: str, @@ -884,7 +1008,6 @@ def pin_activity( "activity_id": activity_id, } json = build_body_dict(user_id=user_id, user=user) - return self.post( "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/{activity_id}/pin", PinActivityResponse, @@ -892,6 +1015,7 @@ def pin_activity( json=json, ) + @telemetry.operation_name("getstream.api.feeds.update_feed_members") def update_feed_members( self, feed_group_id: str, @@ -909,7 +1033,6 @@ def update_feed_members( json = build_body_dict( operation=operation, limit=limit, next=next, prev=prev, members=members ) - return self.patch( "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members", UpdateFeedMembersResponse, @@ -917,6 +1040,7 @@ def update_feed_members( json=json, ) + @telemetry.operation_name("getstream.api.feeds.accept_feed_member_invite") def accept_feed_member_invite( self, feed_id: str, @@ -929,7 +1053,6 @@ def accept_feed_member_invite( "feed_group_id": feed_group_id, } json = build_body_dict(user_id=user_id, user=user) - return self.post( "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/accept", AcceptFeedMemberInviteResponse, @@ -937,6 +1060,7 @@ def accept_feed_member_invite( json=json, ) + @telemetry.operation_name("getstream.api.feeds.query_feed_members") def query_feed_members( self, feed_group_id: str, @@ -954,7 +1078,6 @@ def query_feed_members( json = build_body_dict( limit=limit, next=next, prev=prev, sort=sort, filter=filter ) - return self.post( "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/query", QueryFeedMembersResponse, @@ -962,6 +1085,7 @@ def query_feed_members( json=json, ) + @telemetry.operation_name("getstream.api.feeds.reject_feed_member_invite") def reject_feed_member_invite( self, feed_group_id: str, @@ -974,7 +1098,6 @@ def reject_feed_member_invite( "feed_id": feed_id, } json = build_body_dict(user_id=user_id, user=user) - return self.post( "/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/reject", RejectFeedMemberInviteResponse, @@ -982,6 +1105,7 @@ def reject_feed_member_invite( json=json, ) + @telemetry.operation_name("getstream.api.feeds.get_follow_suggestions") def get_follow_suggestions( self, feed_group_id: str, @@ -992,7 +1116,6 @@ def get_follow_suggestions( path_params = { "feed_group_id": feed_group_id, } - return self.get( "/api/v2/feeds/feed_groups/{feed_group_id}/follow_suggestions", GetFollowSuggestionsResponse, @@ -1000,6 +1123,7 @@ def get_follow_suggestions( 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]: @@ -1007,7 +1131,6 @@ def delete_feed_group( path_params = { "id": id, } - return self.delete( "/api/v2/feeds/feed_groups/{id}", DeleteFeedGroupResponse, @@ -1015,17 +1138,22 @@ def delete_feed_group( path_params=path_params, ) - def get_feed_group(self, id: str) -> StreamResponse[GetFeedGroupResponse]: + @telemetry.operation_name("getstream.api.feeds.get_feed_group") + 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, } - 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, @@ -1037,6 +1165,7 @@ def get_or_create_feed_group( notification: Optional[NotificationConfig] = None, push_notification: Optional[PushNotificationConfig] = None, ranking: Optional[RankingConfig] = None, + stories: Optional[StoriesConfig] = None, ) -> StreamResponse[GetOrCreateFeedGroupResponse]: path_params = { "id": id, @@ -1050,8 +1179,8 @@ def get_or_create_feed_group( notification=notification, push_notification=push_notification, ranking=ranking, + stories=stories, ) - return self.post( "/api/v2/feeds/feed_groups/{id}", GetOrCreateFeedGroupResponse, @@ -1059,9 +1188,11 @@ def get_or_create_feed_group( 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, aggregation: Optional[AggregationConfig] = None, @@ -1069,11 +1200,13 @@ def update_feed_group( notification: Optional[NotificationConfig] = None, push_notification: Optional[PushNotificationConfig] = None, ranking: Optional[RankingConfig] = None, + stories: Optional[StoriesConfig] = None, ) -> StreamResponse[UpdateFeedGroupResponse]: path_params = { "id": id, } json = build_body_dict( + default_visibility=default_visibility, activity_processors=activity_processors, activity_selectors=activity_selectors, aggregation=aggregation, @@ -1081,8 +1214,8 @@ def update_feed_group( notification=notification, push_notification=push_notification, ranking=ranking, + stories=stories, ) - return self.put( "/api/v2/feeds/feed_groups/{id}", UpdateFeedGroupResponse, @@ -1090,53 +1223,52 @@ def update_feed_group( 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_processors: Optional[List[ActivityProcessorConfig]] = None, activity_selectors: Optional[List[ActivitySelectorConfig]] = None, aggregation: Optional[AggregationConfig] = None, ranking: Optional[RankingConfig] = None, ) -> StreamResponse[CreateFeedViewResponse]: json = build_body_dict( id=id, - activity_processors=activity_processors, activity_selectors=activity_selectors, aggregation=aggregation, ranking=ranking, ) - 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, } - 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, } - 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_processors: Optional[List[ActivityProcessorConfig]] = None, activity_selectors: Optional[List[ActivitySelectorConfig]] = None, aggregation: Optional[AggregationConfig] = None, ranking: Optional[RankingConfig] = None, @@ -1145,12 +1277,10 @@ def get_or_create_feed_view( "id": id, } json = build_body_dict( - activity_processors=activity_processors, activity_selectors=activity_selectors, aggregation=aggregation, ranking=ranking, ) - return self.post( "/api/v2/feeds/feed_views/{id}", GetOrCreateFeedViewResponse, @@ -1158,10 +1288,10 @@ def get_or_create_feed_view( json=json, ) + @telemetry.operation_name("getstream.api.feeds.update_feed_view") def update_feed_view( self, id: str, - activity_processors: Optional[List[ActivityProcessorConfig]] = None, activity_selectors: Optional[List[ActivitySelectorConfig]] = None, aggregation: Optional[AggregationConfig] = None, ranking: Optional[RankingConfig] = None, @@ -1170,12 +1300,10 @@ def update_feed_view( "id": id, } json = build_body_dict( - activity_processors=activity_processors, activity_selectors=activity_selectors, aggregation=aggregation, ranking=ranking, ) - return self.put( "/api/v2/feeds/feed_views/{id}", UpdateFeedViewResponse, @@ -1183,15 +1311,68 @@ def update_feed_view( 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]: + path_params = { + "name": name, + } + 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]: + path_params = { + "name": name, + } + json = build_body_dict(grants=grants) + 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] ) -> StreamResponse[CreateFeedsBatchResponse]: json = build_body_dict(feeds=feeds) - 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 + ) -> StreamResponse[DeleteFeedsBatchResponse]: + json = build_body_dict(feeds=feeds, hard_delete=hard_delete) + 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 = build_body_dict(feeds=feeds, user_id=user_id, fields=fields, user=user) + return self.post("/api/v2/feeds/feeds/own/batch", OwnBatchResponse, json=json) + + @telemetry.operation_name("getstream.api.feeds.query_feeds") def query_feeds( self, limit: Optional[int] = None, @@ -1204,9 +1385,31 @@ def query_feeds( json = build_body_dict( limit=limit, next=next, prev=prev, watch=watch, sort=sort, filter=filter ) - 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, + server_side: Optional[bool] = None, + ) -> StreamResponse[GetFeedsRateLimitsResponse]: + query_params = build_query_param( + endpoints=endpoints, + android=android, + ios=ios, + web=web, + 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, @@ -1226,9 +1429,9 @@ def update_follow( skip_push=skip_push, custom=custom, ) - return self.patch("/api/v2/feeds/follows", UpdateFollowResponse, json=json) + @telemetry.operation_name("getstream.api.feeds.follow") def follow( self, source: str, @@ -1246,27 +1449,36 @@ def follow( skip_push=skip_push, custom=custom, ) - 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 = build_body_dict( source=source, target=target, follower_role=follower_role ) - 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] ) -> StreamResponse[FollowBatchResponse]: json = build_body_dict(follows=follows) - 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] + ) -> StreamResponse[FollowBatchResponse]: + json = build_body_dict(follows=follows) + 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, @@ -1278,30 +1490,30 @@ def query_follows( json = build_body_dict( limit=limit, next=next, prev=prev, sort=sort, filter=filter ) - 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]: json = build_body_dict(source=source, target=target) - return self.post( "/api/v2/feeds/follows/reject", RejectFollowResponse, json=json ) + @telemetry.operation_name("getstream.api.feeds.unfollow") def unfollow(self, source: str, target: str) -> StreamResponse[UnfollowResponse]: path_params = { "source": source, "target": target, } - return self.delete( "/api/v2/feeds/follows/{source}/{target}", UnfollowResponse, path_params=path_params, ) + @telemetry.operation_name("getstream.api.feeds.create_membership_level") def create_membership_level( self, id: str, @@ -1319,11 +1531,11 @@ def create_membership_level( tags=tags, custom=custom, ) - 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, @@ -1335,22 +1547,22 @@ def query_membership_levels( json = build_body_dict( limit=limit, next=next, prev=prev, sort=sort, filter=filter ) - 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, } - 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, @@ -1370,7 +1582,6 @@ def update_membership_level( tags=tags, custom=custom, ) - return self.patch( "/api/v2/feeds/membership_levels/{id}", UpdateMembershipLevelResponse, @@ -1378,35 +1589,55 @@ def update_membership_level( 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]: + json = build_body_dict(_from=_from, to=to) + 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[FollowPair] ) -> StreamResponse[UnfollowBatchResponse]: json = build_body_dict(follows=follows) - 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[FollowPair] + ) -> StreamResponse[UnfollowBatchResponse]: + json = build_body_dict(follows=follows) + return self.post( + "/api/v2/feeds/unfollow/batch/upsert", UnfollowBatchResponse, json=json + ) + + @telemetry.operation_name("getstream.api.feeds.delete_feed_user_data") def delete_feed_user_data( - self, user_id: str + self, user_id: str, hard_delete: Optional[bool] = None ) -> StreamResponse[DeleteFeedUserDataResponse]: path_params = { "user_id": user_id, } - - return self.delete( + json = build_body_dict(hard_delete=hard_delete) + 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]: path_params = { "user_id": user_id, } - return self.post( "/api/v2/feeds/users/{user_id}/export", ExportFeedUserDataResponse, diff --git a/getstream/models/__init__.py b/getstream/models/__init__.py index 4520554f..045863d2 100644 --- a/getstream/models/__init__.py +++ b/getstream/models/__init__.py @@ -151,6 +151,26 @@ class APNS(DataClassJsonMixin): ) +@dataclass +class APNSPayload(DataClassJsonMixin): + body: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="body")) + content_available: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="content-available") + ) + mutable_content: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="mutable-content") + ) + sound: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="sound") + ) + title: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="title") + ) + data: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="data") + ) + + @dataclass class AWSRekognitionRule(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) @@ -501,31 +521,6 @@ class ActivityMarkEvent(DataClassJsonMixin): ) -@dataclass -class ActivityMarkedEvent(DataClassJsonMixin): - all_read: bool = dc_field(metadata=dc_config(field_name="all_read")) - all_seen: bool = dc_field(metadata=dc_config(field_name="all_seen")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - feed_id: str = dc_field(metadata=dc_config(field_name="feed_id")) - user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - type: str = dc_field( - default="activity.marked", metadata=dc_config(field_name="type") - ) - marked_read: Optional[List[str]] = dc_field( - default=None, metadata=dc_config(field_name="marked_read") - ) - marked_watched: Optional[List[str]] = dc_field( - default=None, metadata=dc_config(field_name="marked_watched") - ) - - @dataclass class ActivityPinResponse(DataClassJsonMixin): created_at: datetime = dc_field( @@ -748,6 +743,9 @@ class ActivityRequest(DataClassJsonMixin): restrict_replies: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="restrict_replies") ) + skip_enrich_url: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_enrich_url") + ) text: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="text")) user_id: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="user_id") @@ -761,6 +759,9 @@ class ActivityRequest(DataClassJsonMixin): attachments: "Optional[List[Attachment]]" = dc_field( default=None, metadata=dc_config(field_name="attachments") ) + collection_refs: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="collection_refs") + ) filter_tags: Optional[List[str]] = dc_field( default=None, metadata=dc_config(field_name="filter_tags") ) @@ -832,8 +833,11 @@ class ActivityResponse(DataClassJsonMixin): own_reactions: "List[FeedsReactionResponse]" = dc_field( metadata=dc_config(field_name="own_reactions") ) + collections: "Dict[str, EnrichedCollectionResponse]" = dc_field( + metadata=dc_config(field_name="collections") + ) custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - reaction_groups: "Dict[str, Optional[ReactionGroupResponse]]" = dc_field( + reaction_groups: "Dict[str, FeedsReactionGroupResponse]" = dc_field( metadata=dc_config(field_name="reaction_groups") ) search_data: Dict[str, object] = dc_field( @@ -915,6 +919,9 @@ class ActivitySelectorConfig(DataClassJsonMixin): filter: Optional[Dict[str, object]] = dc_field( default=None, metadata=dc_config(field_name="filter") ) + params: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="params") + ) @dataclass @@ -941,6 +948,9 @@ class ActivitySelectorConfigResponse(DataClassJsonMixin): filter: Optional[Dict[str, object]] = dc_field( default=None, metadata=dc_config(field_name="filter") ) + params: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="params") + ) @dataclass @@ -1028,6 +1038,9 @@ class AddActivityRequest(DataClassJsonMixin): restrict_replies: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="restrict_replies") ) + skip_enrich_url: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_enrich_url") + ) text: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="text")) user_id: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="user_id") @@ -1041,6 +1054,9 @@ class AddActivityRequest(DataClassJsonMixin): attachments: "Optional[List[Attachment]]" = dc_field( default=None, metadata=dc_config(field_name="attachments") ) + collection_refs: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="collection_refs") + ) filter_tags: Optional[List[str]] = dc_field( default=None, metadata=dc_config(field_name="filter_tags") ) @@ -1126,8 +1142,6 @@ class AddCommentReactionResponse(DataClassJsonMixin): @dataclass class AddCommentRequest(DataClassJsonMixin): - object_id: str = dc_field(metadata=dc_config(field_name="object_id")) - object_type: str = dc_field(metadata=dc_config(field_name="object_type")) comment: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="comment") ) @@ -1135,9 +1149,18 @@ class AddCommentRequest(DataClassJsonMixin): default=None, metadata=dc_config(field_name="create_notification_activity") ) id: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="id")) + object_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="object_id") + ) + object_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="object_type") + ) parent_id: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="parent_id") ) + skip_enrich_url: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_enrich_url") + ) skip_push: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="skip_push") ) @@ -1254,20 +1277,9 @@ class AggregatedActivityResponse(DataClassJsonMixin): @dataclass class AggregationConfig(DataClassJsonMixin): - format: str = dc_field(metadata=dc_config(field_name="format")) - - -@dataclass -class AnyEvent(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"), - ) + format: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="format") ) - type: str = dc_field(default="*", metadata=dc_config(field_name="type")) @dataclass @@ -1361,7 +1373,7 @@ class AppResponseFields(DataClassJsonMixin): call_types: "Dict[str, Optional[CallType]]" = dc_field( metadata=dc_config(field_name="call_types") ) - channel_configs: "Dict[str, ChannelConfig]" = dc_field( + channel_configs: "Dict[str, Optional[ChannelConfig]]" = dc_field( metadata=dc_config(field_name="channel_configs") ) file_upload_config: "FileUploadConfig" = dc_field( @@ -1409,6 +1421,149 @@ class AppResponseFields(DataClassJsonMixin): ) +@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"), + ) + ) + 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: Optional[datetime] = dc_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: "Optional[AppealItemResponse]" = 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"), + ) + ) + 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: Optional[datetime] = dc_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: "Optional[AppealItemResponse]" = dc_field( + default=None, metadata=dc_config(field_name="appeal") + ) + + +@dataclass +class AppealItemResponse(DataClassJsonMixin): + appeal_reason: str = dc_field(metadata=dc_config(field_name="appeal_reason")) + created_at: 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")) + id: str = dc_field(metadata=dc_config(field_name="id")) + 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"), + ) + ) + decision_reason: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="decision_reason") + ) + attachments: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) + entity_content: "Optional[ModerationPayload]" = dc_field( + default=None, metadata=dc_config(field_name="entity_content") + ) + user: "Optional[UserResponse]" = 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"), + ) + ) + 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: Optional[datetime] = dc_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: "Optional[AppealItemResponse]" = dc_field( + default=None, metadata=dc_config(field_name="appeal") + ) + + +@dataclass +class AppealRequest(DataClassJsonMixin): + appeal_reason: str = dc_field(metadata=dc_config(field_name="appeal_reason")) + entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) + entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) + user_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + attachments: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) + user: "Optional[UserRequest]" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + + +@dataclass +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( @@ -1778,7 +1933,7 @@ class AudioSettingsResponse(DataClassJsonMixin): @dataclass -class AutomodDetails(DataClassJsonMixin): +class AutomodDetailsResponse(DataClassJsonMixin): action: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="action") ) @@ -1788,7 +1943,7 @@ class AutomodDetails(DataClassJsonMixin): image_labels: Optional[List[str]] = dc_field( default=None, metadata=dc_config(field_name="image_labels") ) - message_details: "Optional[FlagMessageDetails]" = dc_field( + message_details: "Optional[FlagMessageDetailsResponse]" = dc_field( default=None, metadata=dc_config(field_name="message_details") ) result: "Optional[MessageModerationResult]" = dc_field( @@ -1886,7 +2041,29 @@ class BackstageSettingsResponse(DataClassJsonMixin): @dataclass -class Ban(DataClassJsonMixin): +class BanActionRequestPayload(DataClassJsonMixin): + channel_ban_only: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="channel_ban_only") + ) + delete_messages: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="delete_messages") + ) + ip_ban: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="ip_ban") + ) + reason: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="reason") + ) + shadow: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="shadow") + ) + timeout: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="timeout") + ) + + +@dataclass +class BanInfoResponse(DataClassJsonMixin): created_at: datetime = dc_field( metadata=dc_config( field_name="created_at", @@ -1895,7 +2072,6 @@ class Ban(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) - shadow: bool = dc_field(metadata=dc_config(field_name="shadow")) expires: Optional[datetime] = dc_field( default=None, metadata=dc_config( @@ -1908,36 +2084,14 @@ class Ban(DataClassJsonMixin): reason: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="reason") ) - channel: "Optional[Channel]" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) - created_by: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) - target: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="target") - ) - - -@dataclass -class BanActionRequest(DataClassJsonMixin): - channel_ban_only: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="channel_ban_only") - ) - delete_messages: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="delete_messages") - ) - ip_ban: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="ip_ban") - ) - reason: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="reason") - ) shadow: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="shadow") ) - timeout: Optional[int] = dc_field( - default=None, metadata=dc_config(field_name="timeout") + created_by: "Optional[UserResponse]" = dc_field( + default=None, metadata=dc_config(field_name="created_by") + ) + user: "Optional[UserResponse]" = dc_field( + default=None, metadata=dc_config(field_name="user") ) @@ -2026,7 +2180,7 @@ class BanResponse(DataClassJsonMixin): @dataclass -class BlockActionRequest(DataClassJsonMixin): +class BlockActionRequestPayload(DataClassJsonMixin): reason: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="reason") ) @@ -2300,6 +2454,7 @@ class BookmarkFolderResponse(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) custom: Optional[Dict[str, object]] = dc_field( default=None, metadata=dc_config(field_name="custom") ) @@ -2971,7 +3126,9 @@ class CallReactionEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) - reaction: "ReactionResponse" = dc_field(metadata=dc_config(field_name="reaction")) + reaction: "VideoReactionResponse" = dc_field( + metadata=dc_config(field_name="reaction") + ) type: str = dc_field( default="call.reaction_new", metadata=dc_config(field_name="type") ) @@ -2988,6 +3145,7 @@ class CallRecording(DataClassJsonMixin): ) ) 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( @@ -3012,6 +3170,7 @@ class CallRecordingFailedEvent(DataClassJsonMixin): ) ) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) + recording_type: str = dc_field(metadata=dc_config(field_name="recording_type")) type: str = dc_field( default="call.recording_failed", metadata=dc_config(field_name="type") ) @@ -3029,6 +3188,7 @@ class CallRecordingReadyEvent(DataClassJsonMixin): ) ) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) + recording_type: str = dc_field(metadata=dc_config(field_name="recording_type")) call_recording: "CallRecording" = dc_field( metadata=dc_config(field_name="call_recording") ) @@ -3049,6 +3209,7 @@ class CallRecordingStartedEvent(DataClassJsonMixin): ) ) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) + recording_type: str = dc_field(metadata=dc_config(field_name="recording_type")) type: str = dc_field( default="call.recording_started", metadata=dc_config(field_name="type") ) @@ -3066,6 +3227,7 @@ class CallRecordingStoppedEvent(DataClassJsonMixin): ) ) egress_id: str = dc_field(metadata=dc_config(field_name="egress_id")) + recording_type: str = dc_field(metadata=dc_config(field_name="recording_type")) type: str = dc_field( default="call.recording_stopped", metadata=dc_config(field_name="type") ) @@ -3494,12 +3656,18 @@ class CallSettings(DataClassJsonMixin): geofencing: "Optional[GeofenceSettings]" = dc_field( default=None, metadata=dc_config(field_name="geofencing") ) + individual_recording: "Optional[IndividualRecordSettings]" = dc_field( + default=None, metadata=dc_config(field_name="individual_recording") + ) ingress: "Optional[IngressSettings]" = dc_field( default=None, metadata=dc_config(field_name="ingress") ) limits: "Optional[LimitsSettings]" = dc_field( default=None, metadata=dc_config(field_name="limits") ) + raw_recording: "Optional[RawRecordSettings]" = dc_field( + default=None, metadata=dc_config(field_name="raw_recording") + ) recording: "Optional[RecordSettings]" = dc_field( default=None, metadata=dc_config(field_name="recording") ) @@ -3540,12 +3708,18 @@ class CallSettingsRequest(DataClassJsonMixin): geofencing: "Optional[GeofenceSettingsRequest]" = dc_field( default=None, metadata=dc_config(field_name="geofencing") ) + individual_recording: "Optional[IndividualRecordingSettingsRequest]" = dc_field( + default=None, metadata=dc_config(field_name="individual_recording") + ) ingress: "Optional[IngressSettingsRequest]" = dc_field( default=None, metadata=dc_config(field_name="ingress") ) limits: "Optional[LimitsSettingsRequest]" = dc_field( default=None, metadata=dc_config(field_name="limits") ) + raw_recording: "Optional[RawRecordingSettingsRequest]" = dc_field( + default=None, metadata=dc_config(field_name="raw_recording") + ) recording: "Optional[RecordSettingsRequest]" = dc_field( default=None, metadata=dc_config(field_name="recording") ) @@ -3584,7 +3758,13 @@ class CallSettingsResponse(DataClassJsonMixin): 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") + ) recording: "RecordSettingsResponse" = dc_field( metadata=dc_config(field_name="recording") ) @@ -3643,16 +3823,77 @@ class CallStatsLocation(DataClassJsonMixin): @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") +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: "Optional[CallStatsLocation]" = dc_field( + default=None, metadata=dc_config(field_name="location") ) - latest_activity_at: Optional[datetime] = dc_field( - default=None, - metadata=dc_config( - field_name="latest_activity_at", - encoder=encode_datetime, + + +@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") + ) + name: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="name")) + publisher_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="publisher_type") + ) + location: "Optional[CallStatsLocation]" = 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") + ) + + +@dataclass +class CallStatsMapSFUs(DataClassJsonMixin): + locations: "List[SFULocationResponse]" = dc_field( + metadata=dc_config(field_name="locations") + ) + + +@dataclass +class CallStatsMapSubscriber(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")) + name: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="name")) + location: "Optional[CallStatsLocation]" = 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: "Optional[List[CallStatsMapSubscriber]]" = 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: Optional[datetime] = 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"), ), @@ -3938,7 +4179,7 @@ class CallTypeResponse(DataClassJsonMixin): ) ) grants: "Dict[str, List[str]]" = dc_field(metadata=dc_config(field_name="grants")) - notification_settings: "NotificationSettings" = dc_field( + notification_settings: "NotificationSettingsResponse" = dc_field( metadata=dc_config(field_name="notification_settings") ) settings: "CallSettingsResponse" = dc_field( @@ -4085,6 +4326,7 @@ class CampaignCompletedEvent(DataClassJsonMixin): @dataclass class CampaignMessageTemplate(DataClassJsonMixin): poll_id: str = dc_field(metadata=dc_config(field_name="poll_id")) + searchable: bool = dc_field(metadata=dc_config(field_name="searchable")) text: str = dc_field(metadata=dc_config(field_name="text")) attachments: "List[Attachment]" = dc_field( metadata=dc_config(field_name="attachments") @@ -4228,11 +4470,15 @@ class CastPollVoteRequest(DataClassJsonMixin): @dataclass -class Channel(DataClassJsonMixin): - auto_translation_language: str = dc_field( - metadata=dc_config(field_name="auto_translation_language") +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"), + ) ) - cid: str = dc_field(metadata=dc_config(field_name="cid")) created_at: datetime = dc_field( metadata=dc_config( field_name="created_at", @@ -4241,88 +4487,85 @@ class Channel(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) - disabled: bool = dc_field(metadata=dc_config(field_name="disabled")) - frozen: bool = dc_field(metadata=dc_config(field_name="frozen")) - id: str = dc_field(metadata=dc_config(field_name="id")) - type: str = dc_field(metadata=dc_config(field_name="type")) - updated_at: datetime = dc_field( + finished_at: datetime = dc_field( metadata=dc_config( - field_name="updated_at", + field_name="finished_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")) - auto_translation_enabled: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="auto_translation_enabled") + 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") ) - cooldown: Optional[int] = dc_field( - default=None, metadata=dc_config(field_name="cooldown") + 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") ) - deleted_at: Optional[datetime] = dc_field( + 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: Optional[datetime] = dc_field( default=None, metadata=dc_config( - field_name="deleted_at", + field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"), ), ) - last_campaigns: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="last_campaigns") - ) - last_message_at: Optional[datetime] = dc_field( - default=None, + + +@dataclass +class ChannelBatchStartedEvent(DataClassJsonMixin): + batch_created_at: datetime = dc_field( metadata=dc_config( - field_name="last_message_at", + field_name="batch_created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"), - ), - ) - member_count: Optional[int] = dc_field( - default=None, metadata=dc_config(field_name="member_count") - ) - message_count: Optional[int] = dc_field( - default=None, metadata=dc_config(field_name="message_count") + ) ) - message_count_updated_at: Optional[datetime] = dc_field( - default=None, + created_at: datetime = dc_field( metadata=dc_config( - field_name="message_count_updated_at", + field_name="created_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"), - ), - ) - team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) - active_live_locations: "Optional[List[SharedLocation]]" = dc_field( - default=None, metadata=dc_config(field_name="active_live_locations") - ) - filter_tags: Optional[List[str]] = dc_field( - default=None, metadata=dc_config(field_name="filter_tags") - ) - invites: "Optional[List[ChannelMember]]" = dc_field( - default=None, metadata=dc_config(field_name="invites") - ) - members: "Optional[List[ChannelMember]]" = dc_field( - default=None, metadata=dc_config(field_name="members") + ) ) - config: "Optional[ChannelConfig]" = dc_field( - default=None, metadata=dc_config(field_name="config") + 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"), + ) ) - config_overrides: "Optional[ConfigOverrides]" = dc_field( - default=None, metadata=dc_config(field_name="config_overrides") + 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") ) - created_by: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="created_by") + 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") ) - members_lookup: "Optional[Dict[str, Optional[ChannelMemberLookup]]]" = dc_field( - default=None, metadata=dc_config(field_name="members_lookup") + 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") ) - truncated_by: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="truncated_by") + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), ) @@ -4388,7 +4631,7 @@ class ChannelConfig(DataClassJsonMixin): partition_size: Optional[int] = dc_field( default=None, metadata=dc_config(field_name="partition_size") ) - partition_ttl: Optional[int] = dc_field( + partition_ttl: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="partition_ttl") ) allowed_flag_reasons: Optional[List[str]] = dc_field( @@ -4491,19 +4734,44 @@ class ChannelCreatedEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) type: str = dc_field( default="channel.created", metadata=dc_config(field_name="type") ) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + user: "Optional[UserResponseCommonFields]" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) @dataclass class ChannelDeletedEvent(DataClassJsonMixin): - channel_id: str = dc_field(metadata=dc_config(field_name="channel_id")) - channel_member_count: int = dc_field( - metadata=dc_config(field_name="channel_member_count") - ) - 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", @@ -4512,12 +4780,39 @@ class ChannelDeletedEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) type: str = dc_field( default="channel.deleted", metadata=dc_config(field_name="type") ) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) - channel: "Optional[ChannelResponse]" = dc_field( - default=None, metadata=dc_config(field_name="channel") + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + user: "Optional[UserResponseCommonFields]" = dc_field( + default=None, metadata=dc_config(field_name="user") ) @@ -4548,9 +4843,6 @@ class ChannelExport(DataClassJsonMixin): @dataclass class ChannelFrozenEvent(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", @@ -4559,9 +4851,26 @@ class ChannelFrozenEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) type: str = dc_field( default="channel.frozen", metadata=dc_config(field_name="type") ) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + received_at: Optional[datetime] = dc_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 @@ -4591,12 +4900,6 @@ class ChannelGetOrCreateRequest(DataClassJsonMixin): @dataclass class ChannelHiddenEvent(DataClassJsonMixin): - channel_id: str = dc_field(metadata=dc_config(field_name="channel_id")) - channel_member_count: int = dc_field( - metadata=dc_config(field_name="channel_member_count") - ) - channel_type: str = dc_field(metadata=dc_config(field_name="channel_type")) - cid: str = dc_field(metadata=dc_config(field_name="cid")) clear_history: bool = dc_field(metadata=dc_config(field_name="clear_history")) created_at: datetime = dc_field( metadata=dc_config( @@ -4606,33 +4909,58 @@ class ChannelHiddenEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) type: str = dc_field( default="channel.hidden", metadata=dc_config(field_name="type") ) - channel: "Optional[ChannelResponse]" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - - -@dataclass -class ChannelInput(DataClassJsonMixin): - auto_translation_enabled: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="auto_translation_enabled") + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") ) - auto_translation_language: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="auto_translation_language") + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") ) - created_by_id: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="created_by_id") + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") ) - disabled: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="disabled") + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") ) - frozen: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="frozen") + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + user: "Optional[UserResponseCommonFields]" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + + +@dataclass +class ChannelInput(DataClassJsonMixin): + auto_translation_enabled: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="auto_translation_enabled") + ) + auto_translation_language: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="auto_translation_language") + ) + created_by_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="created_by_id") + ) + disabled: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="disabled") + ) + frozen: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="frozen") ) team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) truncated_by_id: Optional[str] = dc_field( @@ -4659,147 +4987,34 @@ class ChannelInput(DataClassJsonMixin): @dataclass -class ChannelMember(DataClassJsonMixin): - banned: bool = dc_field(metadata=dc_config(field_name="banned")) - channel_role: str = dc_field(metadata=dc_config(field_name="channel_role")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - is_global_banned: bool = dc_field(metadata=dc_config(field_name="is_global_banned")) - notifications_muted: bool = dc_field( - metadata=dc_config(field_name="notifications_muted") - ) - 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"), - ) - ) - custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - archived_at: Optional[datetime] = 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"), - ), - ) - ban_expires: Optional[datetime] = 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"), - ), - ) - blocked: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="blocked") - ) - deleted_at: Optional[datetime] = 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"), - ), - ) - hidden: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="hidden") - ) - invite_accepted_at: Optional[datetime] = 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_rejected_at: Optional[datetime] = 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"), - ), - ) - invited: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="invited") - ) - is_moderator: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="is_moderator") - ) - pinned_at: Optional[datetime] = 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"), - ), +class ChannelInputRequest(DataClassJsonMixin): + auto_translation_enabled: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="auto_translation_enabled") ) - status: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="status") + auto_translation_language: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="auto_translation_language") ) - user_id: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="user_id") + disabled: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="disabled") ) - deleted_messages: Optional[List[str]] = dc_field( - default=None, metadata=dc_config(field_name="deleted_messages") + frozen: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="frozen") ) - channel: "Optional[DenormalizedChannelFields]" = dc_field( - default=None, metadata=dc_config(field_name="channel") + team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) + invites: "Optional[List[ChannelMemberRequest]]" = dc_field( + default=None, metadata=dc_config(field_name="invites") ) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") + members: "Optional[List[ChannelMemberRequest]]" = dc_field( + default=None, metadata=dc_config(field_name="members") ) - - -@dataclass -class ChannelMemberLookup(DataClassJsonMixin): - archived: bool = dc_field(metadata=dc_config(field_name="archived")) - banned: bool = dc_field(metadata=dc_config(field_name="banned")) - blocked: bool = dc_field(metadata=dc_config(field_name="blocked")) - hidden: bool = dc_field(metadata=dc_config(field_name="hidden")) - pinned: bool = dc_field(metadata=dc_config(field_name="pinned")) - archived_at: Optional[datetime] = 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"), - ), + config_overrides: "Optional[ConfigOverridesRequest]" = dc_field( + default=None, metadata=dc_config(field_name="config_overrides") ) - ban_expires: Optional[datetime] = 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"), - ), + created_by: "Optional[UserRequest]" = dc_field( + default=None, metadata=dc_config(field_name="created_by") ) - pinned_at: Optional[datetime] = 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"), - ), + custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="custom") ) @@ -4918,11 +5133,11 @@ class ChannelMemberResponse(DataClassJsonMixin): @dataclass -class ChannelMessages(DataClassJsonMixin): - messages: "List[Message]" = dc_field(metadata=dc_config(field_name="messages")) - channel: "Optional[ChannelResponse]" = dc_field( - default=None, metadata=dc_config(field_name="channel") +class ChannelMessagesResponse(DataClassJsonMixin): + messages: "List[MessageResponse]" = dc_field( + metadata=dc_config(field_name="messages") ) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) @dataclass @@ -4970,7 +5185,26 @@ class ChannelMutedEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) type: str = dc_field(default="channel.muted", metadata=dc_config(field_name="type")) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + mutes: "Optional[List[ChannelMute]]" = dc_field( + default=None, metadata=dc_config(field_name="mutes") + ) + mute: "Optional[ChannelMute]" = dc_field( + default=None, metadata=dc_config(field_name="mute") + ) + user: "Optional[UserResponseCommonFields]" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) ChannelOwnCapabilityType = NewType("ChannelOwnCapabilityType", str) @@ -5019,7 +5253,7 @@ class ChannelOwnCapability: @dataclass -class ChannelPushPreferences(DataClassJsonMixin): +class ChannelPushPreferencesResponse(DataClassJsonMixin): chat_level: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="chat_level") ) @@ -5199,7 +5433,7 @@ class ChannelStateResponse(DataClassJsonMixin): membership: "Optional[ChannelMemberResponse]" = dc_field( default=None, metadata=dc_config(field_name="membership") ) - push_preferences: "Optional[ChannelPushPreferences]" = dc_field( + push_preferences: "Optional[ChannelPushPreferencesResponse]" = dc_field( default=None, metadata=dc_config(field_name="push_preferences") ) @@ -5254,19 +5488,13 @@ class ChannelStateResponseFields(DataClassJsonMixin): membership: "Optional[ChannelMemberResponse]" = dc_field( default=None, metadata=dc_config(field_name="membership") ) - push_preferences: "Optional[ChannelPushPreferences]" = dc_field( + push_preferences: "Optional[ChannelPushPreferencesResponse]" = dc_field( default=None, metadata=dc_config(field_name="push_preferences") ) @dataclass class ChannelTruncatedEvent(DataClassJsonMixin): - channel_id: str = dc_field(metadata=dc_config(field_name="channel_id")) - channel_member_count: int = dc_field( - metadata=dc_config(field_name="channel_member_count") - ) - 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", @@ -5275,11 +5503,45 @@ class ChannelTruncatedEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) type: str = dc_field( default="channel.truncated", metadata=dc_config(field_name="type") ) - channel: "Optional[ChannelResponse]" = dc_field( - default=None, metadata=dc_config(field_name="channel") + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + message_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="message_id") + ) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + message: "Optional[MessageResponse]" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + user: "Optional[UserResponseCommonFields]" = dc_field( + default=None, metadata=dc_config(field_name="user") ) @@ -5365,9 +5627,6 @@ class ChannelTypeConfig(DataClassJsonMixin): @dataclass class ChannelUnFrozenEvent(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", @@ -5376,34 +5635,64 @@ class ChannelUnFrozenEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) type: str = dc_field( default="channel.unfrozen", metadata=dc_config(field_name="type") ) - - -@dataclass -class ChannelUnmutedEvent(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + received_at: Optional[datetime] = dc_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): + created_at: 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.unmuted", metadata=dc_config(field_name="type") ) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + mutes: "Optional[List[ChannelMute]]" = dc_field( + default=None, metadata=dc_config(field_name="mutes") + ) + mute: "Optional[ChannelMute]" = dc_field( + default=None, metadata=dc_config(field_name="mute") + ) + user: "Optional[UserResponseCommonFields]" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) @dataclass class ChannelUpdatedEvent(DataClassJsonMixin): - channel_id: str = dc_field(metadata=dc_config(field_name="channel_id")) - channel_member_count: int = dc_field( - metadata=dc_config(field_name="channel_member_count") - ) - 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", @@ -5412,26 +5701,50 @@ class ChannelUpdatedEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) type: str = dc_field( default="channel.updated", metadata=dc_config(field_name="type") ) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + message_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="message_id") + ) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) - channel: "Optional[ChannelResponse]" = dc_field( - default=None, metadata=dc_config(field_name="channel") + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") ) - message: "Optional[Message]" = dc_field( + message: "Optional[MessageResponse]" = dc_field( default=None, metadata=dc_config(field_name="message") ) - user: "Optional[User]" = dc_field( + user: "Optional[UserResponseCommonFields]" = dc_field( default=None, metadata=dc_config(field_name="user") ) @dataclass class ChannelVisibleEvent(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", @@ -5440,10 +5753,38 @@ class ChannelVisibleEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) type: str = dc_field( default="channel.visible", metadata=dc_config(field_name="type") ) - user: "Optional[User]" = dc_field( + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + user: "Optional[UserResponseCommonFields]" = dc_field( default=None, metadata=dc_config(field_name="user") ) @@ -5670,6 +6011,46 @@ class CollectUserFeedbackResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) +@dataclass +class CollectionRequest(DataClassJsonMixin): + name: str = dc_field(metadata=dc_config(field_name="name")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + id: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="id")) + user_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + + +@dataclass +class CollectionResponse(DataClassJsonMixin): + id: str = dc_field(metadata=dc_config(field_name="id")) + name: str = dc_field(metadata=dc_config(field_name="name")) + created_at: Optional[datetime] = 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: Optional[datetime] = 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: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + + @dataclass class Command(DataClassJsonMixin): args: str = dc_field(metadata=dc_config(field_name="args")) @@ -5935,7 +6316,7 @@ class CommentResponse(DataClassJsonMixin): moderation: "Optional[ModerationV2Response]" = dc_field( default=None, metadata=dc_config(field_name="moderation") ) - reaction_groups: "Optional[Dict[str, Optional[ReactionGroupResponse]]]" = dc_field( + reaction_groups: "Optional[Dict[str, FeedsReactionGroupResponse]]" = dc_field( default=None, metadata=dc_config(field_name="reaction_groups") ) @@ -5979,9 +6360,12 @@ class CommitMessageRequest(DataClassJsonMixin): @dataclass -class ConfigOverrides(DataClassJsonMixin): - commands: List[str] = dc_field(metadata=dc_config(field_name="commands")) - grants: "Dict[str, List[str]]" = dc_field(metadata=dc_config(field_name="grants")) +class CompositeRecordingResponse(DataClassJsonMixin): + status: str = dc_field(metadata=dc_config(field_name="status")) + + +@dataclass +class ConfigOverridesRequest(DataClassJsonMixin): blocklist: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="blocklist") ) @@ -6018,6 +6402,12 @@ class ConfigOverrides(DataClassJsonMixin): user_message_reminders: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="user_message_reminders") ) + commands: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="commands") + ) + grants: "Optional[Dict[str, List[str]]]" = dc_field( + default=None, metadata=dc_config(field_name="grants") + ) @dataclass @@ -6090,6 +6480,12 @@ class ContentCountRuleParameters(DataClassJsonMixin): ) +@dataclass +class CoordinatesResponse(DataClassJsonMixin): + latitude: float = dc_field(metadata=dc_config(field_name="latitude")) + longitude: float = dc_field(metadata=dc_config(field_name="longitude")) + + @dataclass class CountByMinuteResponse(DataClassJsonMixin): count: int = dc_field(metadata=dc_config(field_name="count")) @@ -6134,7 +6530,7 @@ class CreateCallTypeRequest(DataClassJsonMixin): grants: "Optional[Dict[str, List[str]]]" = dc_field( default=None, metadata=dc_config(field_name="grants") ) - notification_settings: "Optional[NotificationSettings]" = dc_field( + notification_settings: "Optional[NotificationSettingsRequest]" = dc_field( default=None, metadata=dc_config(field_name="notification_settings") ) settings: "Optional[CallSettingsRequest]" = dc_field( @@ -6163,7 +6559,7 @@ class CreateCallTypeResponse(DataClassJsonMixin): ) ) grants: "Dict[str, List[str]]" = dc_field(metadata=dc_config(field_name="grants")) - notification_settings: "NotificationSettings" = dc_field( + notification_settings: "NotificationSettingsResponse" = dc_field( metadata=dc_config(field_name="notification_settings") ) settings: "CallSettingsResponse" = dc_field( @@ -6347,6 +6743,27 @@ class CreateChannelTypeResponse(DataClassJsonMixin): ) +@dataclass +class CreateCollectionsRequest(DataClassJsonMixin): + collections: "List[CollectionRequest]" = dc_field( + metadata=dc_config(field_name="collections") + ) + user_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + user: "Optional[UserRequest]" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + + +@dataclass +class CreateCollectionsResponse(DataClassJsonMixin): + duration: str = dc_field(metadata=dc_config(field_name="duration")) + collections: "List[CollectionResponse]" = dc_field( + metadata=dc_config(field_name="collections") + ) + + @dataclass class CreateCommandRequest(DataClassJsonMixin): description: str = dc_field(metadata=dc_config(field_name="description")) @@ -6514,6 +6931,48 @@ class CreateImportURLResponse(DataClassJsonMixin): 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: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + user: "Optional[UserRequest]" = 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"), + ) + ) + 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") + ) + + @dataclass class CreateMembershipLevelRequest(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) @@ -6638,7 +7097,7 @@ class CreateSIPTrunkResponse(DataClassJsonMixin): @dataclass -class CustomActionRequest(DataClassJsonMixin): +class CustomActionRequestPayload(DataClassJsonMixin): id: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="id")) options: Optional[Dict[str, object]] = dc_field( default=None, metadata=dc_config(field_name="options") @@ -6670,7 +7129,7 @@ class CustomCheckRequest(DataClassJsonMixin): user_id: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="user_id") ) - moderation_payload: "Optional[ModerationPayload]" = dc_field( + moderation_payload: "Optional[ModerationPayloadRequest]" = dc_field( default=None, metadata=dc_config(field_name="moderation_payload") ) user: "Optional[UserRequest]" = dc_field( @@ -6688,6 +7147,29 @@ class CustomCheckResponse(DataClassJsonMixin): ) +@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"), + ) + ) + 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: Optional[datetime] = dc_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")) @@ -6860,7 +7342,7 @@ class DeleteActivityReactionResponse(DataClassJsonMixin): @dataclass -class DeleteActivityRequest(DataClassJsonMixin): +class DeleteActivityRequestPayload(DataClassJsonMixin): hard_delete: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="hard_delete") ) @@ -6934,6 +7416,11 @@ class DeleteChannelsResultResponse(DataClassJsonMixin): ) +@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")) @@ -6950,7 +7437,7 @@ class DeleteCommentReactionResponse(DataClassJsonMixin): @dataclass -class DeleteCommentRequest(DataClassJsonMixin): +class DeleteCommentRequestPayload(DataClassJsonMixin): hard_delete: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="hard_delete") ) @@ -6983,18 +7470,16 @@ class DeleteFeedResponse(DataClassJsonMixin): @dataclass -class DeleteFeedUserDataResponse(DataClassJsonMixin): - deleted_activities: int = dc_field( - metadata=dc_config(field_name="deleted_activities") - ) - deleted_bookmarks: int = dc_field( - metadata=dc_config(field_name="deleted_bookmarks") - ) - deleted_comments: int = dc_field(metadata=dc_config(field_name="deleted_comments")) - deleted_reactions: int = dc_field( - metadata=dc_config(field_name="deleted_reactions") +class DeleteFeedUserDataRequest(DataClassJsonMixin): + hard_delete: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="hard_delete") ) + + +@dataclass +class DeleteFeedUserDataResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + task_id: str = dc_field(metadata=dc_config(field_name="task_id")) @dataclass @@ -7003,7 +7488,26 @@ class DeleteFeedViewResponse(DataClassJsonMixin): @dataclass -class DeleteMessageRequest(DataClassJsonMixin): +class DeleteFeedsBatchRequest(DataClassJsonMixin): + feeds: List[str] = dc_field(metadata=dc_config(field_name="feeds")) + hard_delete: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="hard_delete") + ) + + +@dataclass +class DeleteFeedsBatchResponse(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 DeleteImportV2TaskResponse(DataClassJsonMixin): + duration: str = dc_field(metadata=dc_config(field_name="duration")) + + +@dataclass +class DeleteMessageRequestPayload(DataClassJsonMixin): hard_delete: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="hard_delete") ) @@ -7034,7 +7538,7 @@ class DeleteModerationTemplateResponse(DataClassJsonMixin): @dataclass -class DeleteReactionRequest(DataClassJsonMixin): +class DeleteReactionRequestPayload(DataClassJsonMixin): hard_delete: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="hard_delete") ) @@ -7081,7 +7585,7 @@ class DeleteTranscriptionResponse(DataClassJsonMixin): @dataclass -class DeleteUserRequest(DataClassJsonMixin): +class DeleteUserRequestPayload(DataClassJsonMixin): delete_conversation_channels: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="delete_conversation_channels") ) @@ -7130,8 +7634,9 @@ class DeleteUsersResponse(DataClassJsonMixin): @dataclass -class DeliveryReceipts(DataClassJsonMixin): - enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) +class DeliveredMessagePayload(DataClassJsonMixin): + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + id: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="id")) @dataclass @@ -7141,62 +7646,6 @@ class DeliveryReceiptsResponse(DataClassJsonMixin): ) -@dataclass -class DenormalizedChannelFields(DataClassJsonMixin): - created_at: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="created_at") - ) - created_by_id: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="created_by_id") - ) - disabled: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="disabled") - ) - frozen: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="frozen") - ) - id: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="id")) - last_message_at: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="last_message_at") - ) - member_count: Optional[int] = dc_field( - default=None, metadata=dc_config(field_name="member_count") - ) - team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) - type: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="type")) - updated_at: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="updated_at") - ) - custom: Optional[Dict[str, object]] = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - - -@dataclass -class Device(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"), - ) - ) - id: str = dc_field(metadata=dc_config(field_name="id")) - push_provider: str = dc_field(metadata=dc_config(field_name="push_provider")) - user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - disabled: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="disabled") - ) - disabled_reason: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="disabled_reason") - ) - push_provider_name: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="push_provider_name") - ) - voip: Optional[bool] = dc_field(default=None, metadata=dc_config(field_name="voip")) - - @dataclass class DeviceDataResponse(DataClassJsonMixin): name: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="name")) @@ -7339,12 +7788,21 @@ class EgressRTMPResponse(DataClassJsonMixin): 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: "Optional[CompositeRecordingResponse]" = dc_field( + default=None, metadata=dc_config(field_name="composite_recording") + ) frame_recording: "Optional[FrameRecordingResponse]" = dc_field( default=None, metadata=dc_config(field_name="frame_recording") ) hls: "Optional[EgressHLSResponse]" = dc_field( default=None, metadata=dc_config(field_name="hls") ) + individual_recording: "Optional[IndividualRecordingResponse]" = dc_field( + default=None, metadata=dc_config(field_name="individual_recording") + ) + raw_recording: "Optional[RawRecordingResponse]" = dc_field( + default=None, metadata=dc_config(field_name="raw_recording") + ) @dataclass @@ -7393,6 +7851,37 @@ class EnrichedActivity(DataClassJsonMixin): ) +@dataclass +class EnrichedCollectionResponse(DataClassJsonMixin): + 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")) + created_at: Optional[datetime] = 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: Optional[datetime] = 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: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + + @dataclass class EnrichedReaction(DataClassJsonMixin): activity_id: str = dc_field(metadata=dc_config(field_name="activity_id")) @@ -7428,6 +7917,64 @@ class EnrichedReaction(DataClassJsonMixin): ) +@dataclass +class EnrichmentOptions(DataClassJsonMixin): + enrich_own_followings: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="enrich_own_followings") + ) + skip_activity: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_activity") + ) + skip_activity_collections: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_collections") + ) + skip_activity_comments: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_comments") + ) + skip_activity_current_feed: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_current_feed") + ) + skip_activity_mentioned_users: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_mentioned_users") + ) + skip_activity_own_bookmarks: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_own_bookmarks") + ) + skip_activity_parents: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_parents") + ) + skip_activity_poll: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_poll") + ) + skip_activity_reactions: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_reactions") + ) + skip_activity_refresh_image_urls: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_activity_refresh_image_urls") + ) + skip_all: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_all") + ) + skip_feed_member_user: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_feed_member_user") + ) + skip_followers: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_followers") + ) + skip_following: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_following") + ) + skip_own_capabilities: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_own_capabilities") + ) + skip_own_follows: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_own_follows") + ) + skip_pins: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_pins") + ) + + @dataclass class EntityCreatorResponse(DataClassJsonMixin): ban_count: int = dc_field(metadata=dc_config(field_name="ban_count")) @@ -7561,9 +8108,16 @@ class EventHook(DataClassJsonMixin): product: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="product") ) + should_send_custom_events: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="should_send_custom_events") + ) sns_auth_type: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="sns_auth_type") ) + sns_event_based_message_group_id_enabled: Optional[bool] = dc_field( + default=None, + metadata=dc_config(field_name="sns_event_based_message_group_id_enabled"), + ) sns_key: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="sns_key") ) @@ -7627,6 +8181,26 @@ class EventNotificationSettings(DataClassJsonMixin): fcm: "FCM" = dc_field(metadata=dc_config(field_name="fcm")) +@dataclass +class EventNotificationSettingsRequest(DataClassJsonMixin): + enabled: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + apns: "Optional[APNSPayload]" = dc_field( + default=None, metadata=dc_config(field_name="apns") + ) + fcm: "Optional[FCMPayload]" = 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")) + + @dataclass class EventRequest(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) @@ -7729,6 +8303,19 @@ class FCM(DataClassJsonMixin): ) +@dataclass +class FCMPayload(DataClassJsonMixin): + data: Optional[Dict[str, object]] = 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): created_at: datetime = dc_field( @@ -8209,6 +8796,22 @@ class FeedOwnCapability: UPDATE_OWN_COMMENT: Final[FeedOwnCapabilityType] = "update-own-comment" +@dataclass +class FeedOwnData(DataClassJsonMixin): + own_capabilities: "Optional[List[FeedOwnCapability]]" = dc_field( + default=None, metadata=dc_config(field_name="own_capabilities") + ) + own_followings: "Optional[List[FollowResponse]]" = dc_field( + default=None, metadata=dc_config(field_name="own_followings") + ) + own_follows: "Optional[List[FollowResponse]]" = dc_field( + default=None, metadata=dc_config(field_name="own_follows") + ) + own_membership: "Optional[FeedMemberResponse]" = dc_field( + default=None, metadata=dc_config(field_name="own_membership") + ) + + @dataclass class FeedRequest(DataClassJsonMixin): feed_group_id: str = dc_field(metadata=dc_config(field_name="feed_group_id")) @@ -8236,6 +8839,7 @@ class FeedRequest(DataClassJsonMixin): @dataclass class FeedResponse(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", @@ -8280,6 +8884,9 @@ class FeedResponse(DataClassJsonMixin): own_capabilities: "Optional[List[FeedOwnCapability]]" = dc_field( default=None, metadata=dc_config(field_name="own_capabilities") ) + own_followings: "Optional[List[FollowResponse]]" = dc_field( + default=None, metadata=dc_config(field_name="own_followings") + ) own_follows: "Optional[List[FollowResponse]]" = dc_field( default=None, metadata=dc_config(field_name="own_follows") ) @@ -8293,6 +8900,7 @@ class FeedResponse(DataClassJsonMixin): @dataclass class FeedSuggestionResponse(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", @@ -8343,6 +8951,9 @@ class FeedSuggestionResponse(DataClassJsonMixin): own_capabilities: "Optional[List[FeedOwnCapability]]" = dc_field( default=None, metadata=dc_config(field_name="own_capabilities") ) + own_followings: "Optional[List[FollowResponse]]" = dc_field( + default=None, metadata=dc_config(field_name="own_followings") + ) own_follows: "Optional[List[FollowResponse]]" = dc_field( default=None, metadata=dc_config(field_name="own_follows") ) @@ -8423,7 +9034,7 @@ class FeedVisibilityResponse(DataClassJsonMixin): @dataclass -class FeedsModerationTemplateConfig(DataClassJsonMixin): +class FeedsModerationTemplateConfigPayload(DataClassJsonMixin): config_key: str = dc_field(metadata=dc_config(field_name="config_key")) data_types: "Dict[str, str]" = dc_field(metadata=dc_config(field_name="data_types")) @@ -8436,6 +9047,34 @@ class FeedsPreferences(DataClassJsonMixin): comment_reaction: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="comment_reaction") ) + comment_reply: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="comment_reply") + ) + follow: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="follow") + ) + mention: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="mention") + ) + reaction: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="reaction") + ) + custom_activity_types: "Optional[Dict[str, str]]" = dc_field( + default=None, metadata=dc_config(field_name="custom_activity_types") + ) + + +@dataclass +class FeedsPreferencesResponse(DataClassJsonMixin): + comment: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="comment") + ) + comment_reaction: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="comment_reaction") + ) + comment_reply: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="comment_reply") + ) follow: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="follow") ) @@ -8450,6 +9089,27 @@ class FeedsPreferences(DataClassJsonMixin): ) +@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"), + ) + ) + + @dataclass class FeedsReactionResponse(DataClassJsonMixin): activity_id: str = dc_field(metadata=dc_config(field_name="activity_id")) @@ -8520,6 +9180,14 @@ class FileUploadResponse(DataClassJsonMixin): ) +@dataclass +class FilterConfigResponse(DataClassJsonMixin): + llm_labels: List[str] = dc_field(metadata=dc_config(field_name="llm_labels")) + ai_text_labels: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="ai_text_labels") + ) + + @dataclass class FirebaseConfig(DataClassJsonMixin): apn_template: Optional[str] = dc_field( @@ -8563,7 +9231,25 @@ class FirebaseConfigFields(DataClassJsonMixin): @dataclass -class Flag(DataClassJsonMixin): +class FlagCountRuleParameters(DataClassJsonMixin): + threshold: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="threshold") + ) + + +@dataclass +class FlagDetailsResponse(DataClassJsonMixin): + original_text: str = dc_field(metadata=dc_config(field_name="original_text")) + automod: "Optional[AutomodDetailsResponse]" = dc_field( + default=None, metadata=dc_config(field_name="automod") + ) + extra: Optional[Dict[str, object]] = 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", @@ -8572,103 +9258,20 @@ class Flag(DataClassJsonMixin): 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"), - ) + message_id: str = dc_field(metadata=dc_config(field_name="message_id")) + labels: "List[LabelResponse]" = dc_field(metadata=dc_config(field_name="labels")) + + +@dataclass +class FlagMessageDetailsResponse(DataClassJsonMixin): + pin_changed: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="pin_changed") ) - approved_at: Optional[datetime] = 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"), - ), + should_enrich: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="should_enrich") ) - reason: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="reason") - ) - rejected_at: Optional[datetime] = 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: Optional[datetime] = 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: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="reviewed_by") - ) - target_message_id: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="target_message_id") - ) - custom: Optional[Dict[str, object]] = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - details: "Optional[FlagDetails]" = dc_field( - default=None, metadata=dc_config(field_name="details") - ) - target_message: "Optional[Message]" = dc_field( - default=None, metadata=dc_config(field_name="target_message") - ) - target_user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="target_user") - ) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - - -@dataclass -class FlagDetails(DataClassJsonMixin): - original_text: str = dc_field(metadata=dc_config(field_name="original_text")) - extra: Dict[str, object] = dc_field(metadata=dc_config(field_name="Extra")) - automod: "Optional[AutomodDetails]" = dc_field( - default=None, metadata=dc_config(field_name="automod") - ) - - -@dataclass -class FlagFeedback(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"), - ) - ) - message_id: str = dc_field(metadata=dc_config(field_name="message_id")) - labels: "List[Label]" = dc_field(metadata=dc_config(field_name="labels")) - - -@dataclass -class FlagMessageDetails(DataClassJsonMixin): - pin_changed: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="pin_changed") - ) - should_enrich: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="should_enrich") - ) - skip_push: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="skip_push") + skip_push: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_push") ) updated_by_id: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="updated_by_id") @@ -8752,6 +9355,7 @@ class FollowBatchRequest(DataClassJsonMixin): @dataclass class FollowBatchResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + created: "List[FollowResponse]" = dc_field(metadata=dc_config(field_name="created")) follows: "List[FollowResponse]" = dc_field(metadata=dc_config(field_name="follows")) @@ -9119,6 +9723,14 @@ class GetActivityResponse(DataClassJsonMixin): 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: "Optional[AppealItemResponse]" = dc_field( + default=None, metadata=dc_config(field_name="item") + ) + + @dataclass class GetApplicationResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) @@ -9210,7 +9822,7 @@ class GetCallTypeResponse(DataClassJsonMixin): ) ) grants: "Dict[str, List[str]]" = dc_field(metadata=dc_config(field_name="grants")) - notification_settings: "NotificationSettings" = dc_field( + notification_settings: "NotificationSettingsResponse" = dc_field( metadata=dc_config(field_name="notification_settings") ) settings: "CallSettingsResponse" = dc_field( @@ -9417,16 +10029,16 @@ class GetFeedVisibilityResponse(DataClassJsonMixin): @dataclass class GetFeedsRateLimitsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - android: "Optional[Dict[str, LimitInfo]]" = dc_field( + android: "Optional[Dict[str, LimitInfoResponse]]" = dc_field( default=None, metadata=dc_config(field_name="android") ) - ios: "Optional[Dict[str, LimitInfo]]" = dc_field( + ios: "Optional[Dict[str, LimitInfoResponse]]" = dc_field( default=None, metadata=dc_config(field_name="ios") ) - server_side: "Optional[Dict[str, LimitInfo]]" = dc_field( + server_side: "Optional[Dict[str, LimitInfoResponse]]" = dc_field( default=None, metadata=dc_config(field_name="server_side") ) - web: "Optional[Dict[str, LimitInfo]]" = dc_field( + web: "Optional[Dict[str, LimitInfoResponse]]" = dc_field( default=None, metadata=dc_config(field_name="web") ) @@ -9450,6 +10062,34 @@ class GetImportResponse(DataClassJsonMixin): ) +@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"), + ) + ) + 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") + ) + + @dataclass class GetManyMessagesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) @@ -9612,6 +10252,9 @@ class GetOrCreateFeedGroupResponse(DataClassJsonMixin): @dataclass class GetOrCreateFeedRequest(DataClassJsonMixin): + id_around: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="id_around") + ) limit: Optional[int] = dc_field( default=None, metadata=dc_config(field_name="limit") ) @@ -9627,6 +10270,9 @@ class GetOrCreateFeedRequest(DataClassJsonMixin): data: "Optional[FeedInput]" = dc_field( default=None, metadata=dc_config(field_name="data") ) + enrichment_options: "Optional[EnrichmentOptions]" = dc_field( + default=None, metadata=dc_config(field_name="enrichment_options") + ) external_ranking: Optional[Dict[str, object]] = dc_field( default=None, metadata=dc_config(field_name="external_ranking") ) @@ -9712,7 +10358,7 @@ class GetOrCreateFeedViewResponse(DataClassJsonMixin): @dataclass class GetPushTemplatesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - templates: "List[PushTemplate]" = dc_field( + templates: "List[PushTemplateResponse]" = dc_field( metadata=dc_config(field_name="templates") ) @@ -9720,16 +10366,16 @@ class GetPushTemplatesResponse(DataClassJsonMixin): @dataclass class GetRateLimitsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - android: "Optional[Dict[str, LimitInfo]]" = dc_field( + android: "Optional[Dict[str, LimitInfoResponse]]" = dc_field( default=None, metadata=dc_config(field_name="android") ) - ios: "Optional[Dict[str, LimitInfo]]" = dc_field( + ios: "Optional[Dict[str, LimitInfoResponse]]" = dc_field( default=None, metadata=dc_config(field_name="ios") ) - server_side: "Optional[Dict[str, LimitInfo]]" = dc_field( + server_side: "Optional[Dict[str, LimitInfoResponse]]" = dc_field( default=None, metadata=dc_config(field_name="server_side") ) - web: "Optional[Dict[str, LimitInfo]]" = dc_field( + web: "Optional[Dict[str, LimitInfoResponse]]" = dc_field( default=None, metadata=dc_config(field_name="web") ) @@ -9737,7 +10383,9 @@ class GetRateLimitsResponse(DataClassJsonMixin): @dataclass class GetReactionsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - reactions: "List[Reaction]" = dc_field(metadata=dc_config(field_name="reactions")) + reactions: "List[ReactionResponse]" = dc_field( + metadata=dc_config(field_name="reactions") + ) @dataclass @@ -9807,9 +10455,18 @@ class GoLiveRequest(DataClassJsonMixin): start_closed_caption: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="start_closed_caption") ) + start_composite_recording: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="start_composite_recording") + ) start_hls: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="start_hls") ) + start_individual_recording: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="start_individual_recording") + ) + start_raw_recording: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="start_raw_recording") + ) start_recording: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="start_recording") ) @@ -10062,6 +10719,74 @@ class ImportTaskHistory(DataClassJsonMixin): 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"), + ) + ) + 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") + ) + + +@dataclass +class ImportV2TaskSettings(DataClassJsonMixin): + skip_references_check: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_references_check") + ) + s3: "Optional[ImportV2TaskSettingsS3]" = dc_field( + default=None, metadata=dc_config(field_name="s3") + ) + + +@dataclass +class ImportV2TaskSettingsS3(DataClassJsonMixin): + bucket: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="bucket") + ) + dir: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="dir")) + region: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="region") + ) + + +@dataclass +class IndividualRecordSettings(DataClassJsonMixin): + mode: str = dc_field(metadata=dc_config(field_name="mode")) + + +@dataclass +class IndividualRecordingResponse(DataClassJsonMixin): + status: str = dc_field(metadata=dc_config(field_name="status")) + + +@dataclass +class IndividualRecordingSettingsRequest(DataClassJsonMixin): + mode: str = dc_field(metadata=dc_config(field_name="mode")) + + +@dataclass +class IndividualRecordingSettingsResponse(DataClassJsonMixin): + mode: str = dc_field(metadata=dc_config(field_name="mode")) + + @dataclass class IngressAudioEncodingOptions(DataClassJsonMixin): bitrate: int = dc_field(metadata=dc_config(field_name="bitrate")) @@ -10274,7 +10999,7 @@ class LLMRule(DataClassJsonMixin): @dataclass -class Label(DataClassJsonMixin): +class LabelResponse(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) harm_labels: Optional[List[str]] = dc_field( default=None, metadata=dc_config(field_name="harm_labels") @@ -10338,7 +11063,7 @@ class LayoutSettingsResponse(DataClassJsonMixin): @dataclass -class LimitInfo(DataClassJsonMixin): +class LimitInfoResponse(DataClassJsonMixin): limit: int = dc_field(metadata=dc_config(field_name="limit")) remaining: int = dc_field(metadata=dc_config(field_name="remaining")) reset: int = dc_field(metadata=dc_config(field_name="reset")) @@ -10460,6 +11185,16 @@ class ListFeedVisibilitiesResponse(DataClassJsonMixin): ) +@dataclass +class ListImportV2TasksResponse(DataClassJsonMixin): + duration: str = dc_field(metadata=dc_config(field_name="duration")) + import_tasks: "List[ImportV2TaskItem]" = dc_field( + metadata=dc_config(field_name="import_tasks") + ) + next: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="next")) + prev: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="prev")) + + @dataclass class ListImportsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) @@ -10522,6 +11257,15 @@ class ListTranscriptionsResponse(DataClassJsonMixin): ) +@dataclass +class LocationResponse(DataClassJsonMixin): + continent_code: str = dc_field(metadata=dc_config(field_name="continent_code")) + country_iso_code: str = dc_field(metadata=dc_config(field_name="country_iso_code")) + subdivision_iso_code: str = dc_field( + metadata=dc_config(field_name="subdivision_iso_code") + ) + + @dataclass class MarkActivityRequest(DataClassJsonMixin): mark_all_read: Optional[bool] = dc_field( @@ -10560,6 +11304,18 @@ class MarkChannelsReadRequest(DataClassJsonMixin): ) +@dataclass +class MarkDeliveredRequest(DataClassJsonMixin): + latest_delivered_messages: "Optional[List[DeliveredMessagePayload]]" = dc_field( + default=None, metadata=dc_config(field_name="latest_delivered_messages") + ) + + +@dataclass +class MarkDeliveredResponse(DataClassJsonMixin): + duration: str = dc_field(metadata=dc_config(field_name="duration")) + + @dataclass class MarkReadRequest(DataClassJsonMixin): message_id: Optional[str] = dc_field( @@ -10579,16 +11335,57 @@ class MarkReadRequest(DataClassJsonMixin): @dataclass class MarkReadResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - event: "Optional[MessageReadEvent]" = dc_field( + event: "Optional[MarkReadResponseEvent]" = dc_field( default=None, metadata=dc_config(field_name="event") ) @dataclass -class MarkReviewedRequest(DataClassJsonMixin): +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"), + ) + ) + type: str = dc_field(metadata=dc_config(field_name="type")) + channel_last_message_at: Optional[datetime] = 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: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="last_read_message_id") + ) + team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) + channel: "Optional[ChannelResponse]" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) + thread: "Optional[ThreadResponse]" = dc_field( + default=None, metadata=dc_config(field_name="thread") + ) + user: "Optional[UserResponseCommonFields]" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + + +@dataclass +class MarkReviewedRequestPayload(DataClassJsonMixin): content_to_mark_as_reviewed_limit: Optional[int] = dc_field( default=None, metadata=dc_config(field_name="content_to_mark_as_reviewed_limit") ) + decision_reason: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="decision_reason") + ) disable_marking_content_as_reviewed: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="disable_marking_content_as_reviewed"), @@ -10600,6 +11397,15 @@ class MarkUnreadRequest(DataClassJsonMixin): message_id: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="message_id") ) + message_timestamp: Optional[datetime] = 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"), + ), + ) thread_id: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="thread_id") ) @@ -10612,10 +11418,7 @@ class MarkUnreadRequest(DataClassJsonMixin): @dataclass -class MemberAddedEvent(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")) +class MaxStreakChangedEvent(DataClassJsonMixin): created_at: datetime = dc_field( metadata=dc_config( field_name="created_at", @@ -10624,21 +11427,23 @@ class MemberAddedEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) - type: str = dc_field(default="member.added", metadata=dc_config(field_name="type")) - team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) - member: "Optional[ChannelMember]" = dc_field( - default=None, metadata=dc_config(field_name="member") + 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") ) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") + received_at: Optional[datetime] = dc_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 MemberRemovedEvent(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")) +class MemberAddedEvent(DataClassJsonMixin): created_at: datetime = dc_field( metadata=dc_config( field_name="created_at", @@ -10647,14 +11452,85 @@ class MemberRemovedEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) - type: str = dc_field( - default="member.removed", metadata=dc_config(field_name="type") + 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")) + type: str = dc_field(default="member.added", metadata=dc_config(field_name="type")) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") ) - member: "Optional[ChannelMember]" = dc_field( - default=None, metadata=dc_config(field_name="member") + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") ) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + user: "Optional[UserResponseCommonFields]" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + + +@dataclass +class MemberRemovedEvent(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"), + ) + ) + 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")) + type: str = dc_field( + default="member.removed", metadata=dc_config(field_name="type") + ) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + user: "Optional[UserResponseCommonFields]" = dc_field( + default=None, metadata=dc_config(field_name="user") ) @@ -10702,9 +11578,6 @@ class MemberResponse(DataClassJsonMixin): @dataclass class MemberUpdatedEvent(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", @@ -10713,14 +11586,39 @@ class MemberUpdatedEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + 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")) type: str = dc_field( default="member.updated", metadata=dc_config(field_name="type") ) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) - member: "Optional[ChannelMember]" = dc_field( - default=None, metadata=dc_config(field_name="member") + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") ) - user: "Optional[User]" = dc_field( + user: "Optional[UserResponseCommonFields]" = dc_field( default=None, metadata=dc_config(field_name="user") ) @@ -10763,154 +11661,6 @@ class MembershipLevelResponse(DataClassJsonMixin): ) -@dataclass -class Message(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") - ) - html: str = dc_field(metadata=dc_config(field_name="html")) - id: str = dc_field(metadata=dc_config(field_name="id")) - pinned: bool = dc_field(metadata=dc_config(field_name="pinned")) - reply_count: int = dc_field(metadata=dc_config(field_name="reply_count")) - shadowed: bool = dc_field(metadata=dc_config(field_name="shadowed")) - 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[Reaction]" = dc_field( - metadata=dc_config(field_name="latest_reactions") - ) - mentioned_users: "List[User]" = dc_field( - metadata=dc_config(field_name="mentioned_users") - ) - own_reactions: "List[Reaction]" = 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_groups: "Dict[str, Optional[ReactionGroupResponse]]" = dc_field( - metadata=dc_config(field_name="reaction_groups") - ) - reaction_scores: "Dict[str, int]" = dc_field( - metadata=dc_config(field_name="reaction_scores") - ) - before_message_send_failed: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="before_message_send_failed") - ) - command: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="command") - ) - deleted_at: Optional[datetime] = 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: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="deleted_for_me") - ) - message_text_updated_at: Optional[datetime] = 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: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="mml")) - parent_id: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="parent_id") - ) - pin_expires: Optional[datetime] = 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: Optional[datetime] = 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: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="poll_id") - ) - quoted_message_id: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="quoted_message_id") - ) - show_in_channel: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="show_in_channel") - ) - thread_participants: "Optional[List[User]]" = dc_field( - default=None, metadata=dc_config(field_name="thread_participants") - ) - i18n: "Optional[Dict[str, str]]" = dc_field( - default=None, metadata=dc_config(field_name="i18n") - ) - image_labels: "Optional[Dict[str, List[str]]]" = dc_field( - default=None, metadata=dc_config(field_name="image_labels") - ) - member: "Optional[ChannelMember]" = dc_field( - default=None, metadata=dc_config(field_name="member") - ) - moderation: "Optional[ModerationV2Response]" = dc_field( - default=None, metadata=dc_config(field_name="moderation") - ) - pinned_by: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="pinned_by") - ) - poll: "Optional[Poll]" = dc_field( - default=None, metadata=dc_config(field_name="poll") - ) - quoted_message: "Optional[Message]" = dc_field( - default=None, metadata=dc_config(field_name="quoted_message") - ) - reminder: "Optional[MessageReminder]" = dc_field( - default=None, metadata=dc_config(field_name="reminder") - ) - shared_location: "Optional[SharedLocation]" = dc_field( - default=None, metadata=dc_config(field_name="shared_location") - ) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - - @dataclass class MessageActionRequest(DataClassJsonMixin): form_data: "Dict[str, str]" = dc_field(metadata=dc_config(field_name="form_data")) @@ -10922,6 +11672,14 @@ class MessageActionRequest(DataClassJsonMixin): ) +@dataclass +class MessageActionResponse(DataClassJsonMixin): + duration: str = dc_field(metadata=dc_config(field_name="duration")) + message: "Optional[MessageResponse]" = dc_field( + default=None, metadata=dc_config(field_name="message") + ) + + @dataclass class MessageChangeSet(DataClassJsonMixin): attachments: bool = dc_field(metadata=dc_config(field_name="attachments")) @@ -10941,9 +11699,6 @@ class MessageChangeSet(DataClassJsonMixin): @dataclass class MessageDeletedEvent(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", @@ -10953,20 +11708,42 @@ class MessageDeletedEvent(DataClassJsonMixin): ) ) 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")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) type: str = dc_field( default="message.deleted", metadata=dc_config(field_name="type") ) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) deleted_for_me: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="deleted_for_me") ) - team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) - thread_participants: "Optional[List[User]]" = dc_field( - default=None, metadata=dc_config(field_name="thread_participants") + received_at: Optional[datetime] = dc_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: "Optional[Message]" = dc_field( - default=None, metadata=dc_config(field_name="message") + team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") ) - user: "Optional[User]" = dc_field( + user: "Optional[UserResponseCommonFields]" = dc_field( default=None, metadata=dc_config(field_name="user") ) @@ -11025,13 +11802,13 @@ class MessageFlagResponse(DataClassJsonMixin): custom: Optional[Dict[str, object]] = dc_field( default=None, metadata=dc_config(field_name="custom") ) - details: "Optional[FlagDetails]" = dc_field( + details: "Optional[FlagDetailsResponse]" = dc_field( default=None, metadata=dc_config(field_name="details") ) - message: "Optional[Message]" = dc_field( + message: "Optional[MessageResponse]" = dc_field( default=None, metadata=dc_config(field_name="message") ) - moderation_feedback: "Optional[FlagFeedback]" = dc_field( + moderation_feedback: "Optional[FlagFeedbackResponse]" = dc_field( default=None, metadata=dc_config(field_name="moderation_feedback") ) moderation_result: "Optional[MessageModerationResult]" = dc_field( @@ -11047,7 +11824,6 @@ class MessageFlagResponse(DataClassJsonMixin): @dataclass class MessageFlaggedEvent(DataClassJsonMixin): - cid: str = dc_field(metadata=dc_config(field_name="cid")) created_at: datetime = dc_field( metadata=dc_config( field_name="created_at", @@ -11056,19 +11832,53 @@ class MessageFlaggedEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + message_id: str = dc_field(metadata=dc_config(field_name="message_id")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) type: str = dc_field( default="message.flagged", metadata=dc_config(field_name="type") ) - thread_participants: "Optional[List[User]]" = dc_field( - default=None, metadata=dc_config(field_name="thread_participants") + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") ) - flag: "Optional[Flag]" = dc_field( - default=None, metadata=dc_config(field_name="flag") + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") ) - message: "Optional[Message]" = dc_field( - default=None, metadata=dc_config(field_name="message") + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") ) - user: "Optional[User]" = dc_field( + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + reason: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="reason") + ) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) + total_flags: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="total_flags") + ) + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + details: "Optional[MessageModerationResult]" = dc_field( + default=None, metadata=dc_config(field_name="details") + ) + flag: "Optional[FlagResponse]" = dc_field( + default=None, metadata=dc_config(field_name="flag") + ) + user: "Optional[UserResponseCommonFields]" = dc_field( default=None, metadata=dc_config(field_name="user") ) @@ -11136,9 +11946,6 @@ class MessageModerationResult(DataClassJsonMixin): @dataclass class MessageNewEvent(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", @@ -11147,16 +11954,56 @@ class MessageNewEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + message_id: str = dc_field(metadata=dc_config(field_name="message_id")) watcher_count: int = dc_field(metadata=dc_config(field_name="watcher_count")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) type: str = dc_field(default="message.new", metadata=dc_config(field_name="type")) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + parent_author: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="parent_author") + ) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) - thread_participants: "Optional[List[User]]" = dc_field( + total_unread_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="total_unread_count") + ) + unread_channels: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="unread_channels") + ) + unread_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="unread_count") + ) + thread_participants: "Optional[List[UserResponseCommonFields]]" = dc_field( default=None, metadata=dc_config(field_name="thread_participants") ) - message: "Optional[Message]" = dc_field( - default=None, metadata=dc_config(field_name="message") + channel: "Optional[ChannelResponse]" = dc_field( + default=None, metadata=dc_config(field_name="channel") ) - user: "Optional[User]" = dc_field( + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + user: "Optional[UserResponseCommonFields]" = dc_field( default=None, metadata=dc_config(field_name="user") ) @@ -11237,9 +12084,6 @@ class MessagePaginationParams(DataClassJsonMixin): @dataclass class MessageReadEvent(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", @@ -11248,69 +12092,44 @@ class MessageReadEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) type: str = dc_field(default="message.read", metadata=dc_config(field_name="type")) - channel_last_message_at: Optional[datetime] = 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: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="last_read_message_id") - ) - team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) - channel: "Optional[ChannelResponse]" = dc_field( - default=None, metadata=dc_config(field_name="channel") + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") ) - thread: "Optional[ThreadResponse]" = dc_field( - default=None, metadata=dc_config(field_name="thread") + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") ) - user: "Optional[UserResponseCommonFields]" = dc_field( - default=None, metadata=dc_config(field_name="user") + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") ) - - -@dataclass -class MessageReminder(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"), - ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") ) - message_id: str = dc_field(metadata=dc_config(field_name="message_id")) - 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"), - ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + last_read_message_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="last_read_message_id") ) - user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - remind_at: Optional[datetime] = dc_field( + received_at: Optional[datetime] = dc_field( default=None, metadata=dc_config( - field_name="remind_at", + field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"), ), ) - channel: "Optional[Channel]" = dc_field( + team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) + channel: "Optional[ChannelResponse]" = dc_field( default=None, metadata=dc_config(field_name="channel") ) - message: "Optional[Message]" = dc_field( - default=None, metadata=dc_config(field_name="message") + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") ) - user: "Optional[User]" = dc_field( + thread: "Optional[ThreadResponse]" = dc_field( + default=None, metadata=dc_config(field_name="thread") + ) + user: "Optional[UserResponseCommonFields]" = dc_field( default=None, metadata=dc_config(field_name="user") ) @@ -11536,7 +12355,6 @@ class MessageStatsResponse(DataClassJsonMixin): @dataclass class MessageUnblockedEvent(DataClassJsonMixin): - cid: str = dc_field(metadata=dc_config(field_name="cid")) created_at: datetime = dc_field( metadata=dc_config( field_name="created_at", @@ -11545,45 +12363,68 @@ class MessageUnblockedEvent(DataClassJsonMixin): 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")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) type: str = dc_field( default="message.unblocked", metadata=dc_config(field_name="type") ) - thread_participants: "Optional[List[User]]" = dc_field( - default=None, metadata=dc_config(field_name="thread_participants") + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + received_at: Optional[datetime] = dc_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: "Optional[Message]" = dc_field( - default=None, metadata=dc_config(field_name="message") + user: "Optional[UserResponseCommonFields]" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + + +@dataclass +class MessageUndeletedEvent(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"), + ) + ) + message_id: str = dc_field(metadata=dc_config(field_name="message_id")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) + type: str = dc_field( + default="message.undeleted", metadata=dc_config(field_name="type") + ) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") ) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") ) - - -@dataclass -class MessageUndeletedEvent(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( + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + received_at: Optional[datetime] = dc_field( + default=None, metadata=dc_config( - field_name="created_at", + field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"), - ) - ) - type: str = dc_field( - default="message.undeleted", metadata=dc_config(field_name="type") + ), ) team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) - thread_participants: "Optional[List[User]]" = dc_field( - default=None, metadata=dc_config(field_name="thread_participants") - ) - message: "Optional[Message]" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") ) @@ -11599,9 +12440,6 @@ class MessageUpdate(DataClassJsonMixin): @dataclass class MessageUpdatedEvent(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", @@ -11610,17 +12448,42 @@ class MessageUpdatedEvent(DataClassJsonMixin): 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")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) type: str = dc_field( default="message.updated", metadata=dc_config(field_name="type") ) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) - thread_participants: "Optional[List[User]]" = dc_field( - default=None, metadata=dc_config(field_name="thread_participants") + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") ) - message: "Optional[Message]" = dc_field( - default=None, metadata=dc_config(field_name="message") + message_update: "Optional[MessageUpdate]" = dc_field( + default=None, metadata=dc_config(field_name="message_update") ) - user: "Optional[User]" = dc_field( + user: "Optional[UserResponseCommonFields]" = dc_field( default=None, metadata=dc_config(field_name="user") ) @@ -11795,13 +12658,15 @@ class MetricThreshold(DataClassJsonMixin): @dataclass -class ModerationActionConfig(DataClassJsonMixin): +class ModerationActionConfigResponse(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) description: str = dc_field(metadata=dc_config(field_name="description")) entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) icon: str = dc_field(metadata=dc_config(field_name="icon")) order: int = dc_field(metadata=dc_config(field_name="order")) - custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) @dataclass @@ -12001,7 +12866,7 @@ class ModerationFlagResponse(DataClassJsonMixin): custom: Optional[Dict[str, object]] = dc_field( default=None, metadata=dc_config(field_name="custom") ) - moderation_payload: "Optional[ModerationPayload]" = dc_field( + moderation_payload: "Optional[ModerationPayloadResponse]" = dc_field( default=None, metadata=dc_config(field_name="moderation_payload") ) review_queue_item: "Optional[ReviewQueueItemResponse]" = dc_field( @@ -12014,6 +12879,7 @@ class ModerationFlagResponse(DataClassJsonMixin): @dataclass class ModerationFlaggedEvent(DataClassJsonMixin): + content_type: str = dc_field(metadata=dc_config(field_name="content_type")) created_at: datetime = dc_field( metadata=dc_config( field_name="created_at", @@ -12022,15 +12888,19 @@ class ModerationFlaggedEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + 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") ) - item: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="item")) - object_id: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="object_id") - ) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), ) @@ -12079,6 +12949,38 @@ class ModerationPayload(DataClassJsonMixin): ) +@dataclass +class ModerationPayloadRequest(DataClassJsonMixin): + images: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="images") + ) + texts: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="texts") + ) + videos: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="videos") + ) + custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + + +@dataclass +class ModerationPayloadResponse(DataClassJsonMixin): + images: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="images") + ) + texts: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="texts") + ) + videos: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="videos") + ) + custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + + @dataclass class ModerationResponse(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) @@ -12173,7 +13075,7 @@ class MuteChannelResponse(DataClassJsonMixin): channel_mute: "Optional[ChannelMute]" = dc_field( default=None, metadata=dc_config(field_name="channel_mute") ) - own_user: "Optional[OwnUser]" = dc_field( + own_user: "Optional[OwnUserResponse]" = dc_field( default=None, metadata=dc_config(field_name="own_user") ) @@ -12195,13 +13097,13 @@ class MuteRequest(DataClassJsonMixin): @dataclass class MuteResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - mutes: "Optional[List[UserMute]]" = dc_field( + mutes: "Optional[List[UserMuteResponse]]" = dc_field( default=None, metadata=dc_config(field_name="mutes") ) non_existing_users: Optional[List[str]] = dc_field( default=None, metadata=dc_config(field_name="non_existing_users") ) - own_user: "Optional[OwnUser]" = dc_field( + own_user: "Optional[OwnUserResponse]" = dc_field( default=None, metadata=dc_config(field_name="own_user") ) @@ -12260,8 +13162,21 @@ 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: "Optional[List[Attachment]]" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) + + @dataclass class NotificationConfig(DataClassJsonMixin): + deduplication_window: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="deduplication_window") + ) track_read: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="track_read") ) @@ -12320,12 +13235,6 @@ class NotificationFeedUpdatedEvent(DataClassJsonMixin): @dataclass class NotificationMarkUnreadEvent(DataClassJsonMixin): - channel_id: str = dc_field(metadata=dc_config(field_name="channel_id")) - channel_member_count: int = dc_field( - metadata=dc_config(field_name="channel_member_count") - ) - 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", @@ -12334,38 +13243,76 @@ class NotificationMarkUnreadEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) - first_unread_message_id: str = dc_field( - metadata=dc_config(field_name="first_unread_message_id") + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + type: str = dc_field( + default="notification.mark_unread", metadata=dc_config(field_name="type") + ) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") ) - last_read_at: datetime = dc_field( + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + first_unread_message_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="first_unread_message_id") + ) + last_read_at: Optional[datetime] = 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"), - ) - ) - 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_messages: int = dc_field(metadata=dc_config(field_name="unread_messages")) - unread_threads: int = dc_field(metadata=dc_config(field_name="unread_threads")) - type: str = dc_field( - default="notification.mark_unread", metadata=dc_config(field_name="type") + ), ) last_read_message_id: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="last_read_message_id") ) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) thread_id: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="thread_id") ) + total_unread_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="total_unread_count") + ) + unread_channels: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="unread_channels") + ) + unread_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="unread_count") + ) + unread_messages: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="unread_messages") + ) + unread_thread_messages: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="unread_thread_messages") + ) + unread_threads: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="unread_threads") + ) channel: "Optional[ChannelResponse]" = dc_field( default=None, metadata=dc_config(field_name="channel") ) - user: "Optional[User]" = dc_field( + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + user: "Optional[UserResponseCommonFields]" = dc_field( default=None, metadata=dc_config(field_name="user") ) @@ -12390,6 +13337,48 @@ class NotificationSettings(DataClassJsonMixin): ) +@dataclass +class NotificationSettingsRequest(DataClassJsonMixin): + enabled: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="enabled") + ) + call_live_started: "Optional[EventNotificationSettingsRequest]" = dc_field( + default=None, metadata=dc_config(field_name="call_live_started") + ) + call_missed: "Optional[EventNotificationSettingsRequest]" = dc_field( + default=None, metadata=dc_config(field_name="call_missed") + ) + call_notification: "Optional[EventNotificationSettingsRequest]" = dc_field( + default=None, metadata=dc_config(field_name="call_notification") + ) + call_ring: "Optional[EventNotificationSettingsRequest]" = dc_field( + default=None, metadata=dc_config(field_name="call_ring") + ) + session_started: "Optional[EventNotificationSettingsRequest]" = 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") + ) + + @dataclass class NotificationStatusResponse(DataClassJsonMixin): unread: int = dc_field(metadata=dc_config(field_name="unread")) @@ -12432,12 +13421,77 @@ class NotificationTarget(DataClassJsonMixin): attachments: "Optional[List[Attachment]]" = dc_field( default=None, metadata=dc_config(field_name="attachments") ) + comment: "Optional[NotificationComment]" = dc_field( + default=None, metadata=dc_config(field_name="comment") + ) + + +@dataclass +class NotificationThreadMessageNewEvent(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"), + ) + ) + message_id: str = dc_field(metadata=dc_config(field_name="message_id")) + thread_id: str = dc_field(metadata=dc_config(field_name="thread_id")) + watcher_count: int = dc_field(metadata=dc_config(field_name="watcher_count")) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) + type: str = dc_field( + default="notification.thread_message_new", metadata=dc_config(field_name="type") + ) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + parent_author: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="parent_author") + ) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) + unread_thread_messages: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="unread_thread_messages") + ) + unread_threads: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="unread_threads") + ) + thread_participants: "Optional[List[UserResponseCommonFields]]" = dc_field( + default=None, metadata=dc_config(field_name="thread_participants") + ) + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) @dataclass class NotificationTrigger(DataClassJsonMixin): text: str = dc_field(metadata=dc_config(field_name="text")) type: str = dc_field(metadata=dc_config(field_name="type")) + comment: "Optional[NotificationComment]" = dc_field( + default=None, metadata=dc_config(field_name="comment") + ) @dataclass @@ -12462,22 +13516,23 @@ class OverviewDashboardConfig(DataClassJsonMixin): @dataclass -class OwnCapabilitiesBatchRequest(DataClassJsonMixin): +class OwnBatchRequest(DataClassJsonMixin): feeds: List[str] = dc_field(metadata=dc_config(field_name="feeds")) user_id: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="user_id") ) + fields: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="fields") + ) user: "Optional[UserRequest]" = dc_field( default=None, metadata=dc_config(field_name="user") ) @dataclass -class OwnCapabilitiesBatchResponse(DataClassJsonMixin): +class OwnBatchResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - capabilities: "Dict[str, List[FeedOwnCapability]]" = dc_field( - metadata=dc_config(field_name="capabilities") - ) + data: "Dict[str, FeedOwnData]" = dc_field(metadata=dc_config(field_name="data")) OwnCapabilityType = NewType("OwnCapabilityType", str) @@ -12505,11 +13560,19 @@ class OwnCapability: 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" @@ -12518,106 +13581,6 @@ class OwnCapability: UPDATE_CALL_SETTINGS: Final[OwnCapabilityType] = "update-call-settings" -@dataclass -class OwnUser(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"), - ) - ) - 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")) - 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[Device]" = dc_field(metadata=dc_config(field_name="devices")) - mutes: "List[UserMute]" = dc_field(metadata=dc_config(field_name="mutes")) - custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - total_unread_count_by_team: "Dict[str, int]" = dc_field( - metadata=dc_config(field_name="total_unread_count_by_team") - ) - avg_response_time: Optional[int] = dc_field( - default=None, metadata=dc_config(field_name="avg_response_time") - ) - deactivated_at: Optional[datetime] = 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: Optional[datetime] = 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"), - ), - ) - invisible: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="invisible") - ) - last_active: Optional[datetime] = 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_engaged_at: Optional[datetime] = dc_field( - default=None, - metadata=dc_config( - field_name="last_engaged_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - blocked_user_ids: Optional[List[str]] = dc_field( - default=None, metadata=dc_config(field_name="blocked_user_ids") - ) - latest_hidden_channels: Optional[List[str]] = dc_field( - default=None, metadata=dc_config(field_name="latest_hidden_channels") - ) - teams: Optional[List[str]] = dc_field( - default=None, metadata=dc_config(field_name="teams") - ) - privacy_settings: "Optional[PrivacySettings]" = dc_field( - default=None, metadata=dc_config(field_name="privacy_settings") - ) - push_preferences: "Optional[PushPreferences]" = dc_field( - default=None, metadata=dc_config(field_name="push_preferences") - ) - teams_role: "Optional[Dict[str, str]]" = dc_field( - default=None, metadata=dc_config(field_name="teams_role") - ) - - @dataclass class OwnUserResponse(DataClassJsonMixin): banned: bool = dc_field(metadata=dc_config(field_name="banned")) @@ -12707,7 +13670,7 @@ class OwnUserResponse(DataClassJsonMixin): privacy_settings: "Optional[PrivacySettingsResponse]" = dc_field( default=None, metadata=dc_config(field_name="privacy_settings") ) - push_preferences: "Optional[PushPreferences]" = dc_field( + push_preferences: "Optional[PushPreferencesResponse]" = dc_field( default=None, metadata=dc_config(field_name="push_preferences") ) teams_role: "Optional[Dict[str, str]]" = dc_field( @@ -12939,16 +13902,16 @@ class PendingMessageEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ), ) - channel: "Optional[Channel]" = dc_field( + channel: "Optional[ChannelResponse]" = dc_field( default=None, metadata=dc_config(field_name="channel") ) - message: "Optional[Message]" = dc_field( + message: "Optional[MessageResponse]" = dc_field( default=None, metadata=dc_config(field_name="message") ) metadata: "Optional[Dict[str, str]]" = dc_field( default=None, metadata=dc_config(field_name="metadata") ) - user: "Optional[User]" = dc_field( + user: "Optional[UserResponse]" = dc_field( default=None, metadata=dc_config(field_name="user") ) @@ -13089,70 +14052,6 @@ class PolicyRequest(DataClassJsonMixin): roles: List[str] = dc_field(metadata=dc_config(field_name="roles")) -@dataclass -class Poll(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") - ) - 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_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") - ) - 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"), - ) - ) - vote_count: int = dc_field(metadata=dc_config(field_name="vote_count")) - latest_answers: "List[PollVote]" = dc_field( - metadata=dc_config(field_name="latest_answers") - ) - options: "List[PollOption]" = dc_field(metadata=dc_config(field_name="options")) - own_votes: "List[PollVote]" = 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[PollVote]]" = 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: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="is_closed") - ) - max_votes_allowed: Optional[int] = dc_field( - default=None, metadata=dc_config(field_name="max_votes_allowed") - ) - voting_visibility: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="voting_visibility") - ) - created_by: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="created_by") - ) - - -@dataclass -class PollOption(DataClassJsonMixin): - id: str = dc_field(metadata=dc_config(field_name="id")) - text: str = dc_field(metadata=dc_config(field_name="text")) - custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - - @dataclass class PollOptionInput(DataClassJsonMixin): text: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="text")) @@ -13252,44 +14151,12 @@ class PollResponseData(DataClassJsonMixin): ) -@dataclass -class PollVote(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"), - ) - ) - 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: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="answer_text") - ) - is_answer: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="is_answer") - ) - user_id: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="user_id") - ) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - - @dataclass class PollVoteResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + poll: "Optional[PollResponseData]" = dc_field( + default=None, metadata=dc_config(field_name="poll") + ) vote: "Optional[PollVoteResponseData]" = dc_field( default=None, metadata=dc_config(field_name="vote") ) @@ -13340,19 +14207,6 @@ class PollVotesResponse(DataClassJsonMixin): prev: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="prev")) -@dataclass -class PrivacySettings(DataClassJsonMixin): - delivery_receipts: "Optional[DeliveryReceipts]" = dc_field( - default=None, metadata=dc_config(field_name="delivery_receipts") - ) - read_receipts: "Optional[ReadReceipts]" = dc_field( - default=None, metadata=dc_config(field_name="read_receipts") - ) - typing_indicators: "Optional[TypingIndicators]" = dc_field( - default=None, metadata=dc_config(field_name="typing_indicators") - ) - - @dataclass class PrivacySettingsResponse(DataClassJsonMixin): delivery_receipts: "Optional[DeliveryReceiptsResponse]" = dc_field( @@ -13515,7 +14369,7 @@ class PushPreferenceInput(DataClassJsonMixin): @dataclass -class PushPreferences(DataClassJsonMixin): +class PushPreferencesResponse(DataClassJsonMixin): call_level: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="call_level") ) @@ -13534,7 +14388,7 @@ class PushPreferences(DataClassJsonMixin): feeds_level: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="feeds_level") ) - feeds_preferences: "Optional[FeedsPreferences]" = dc_field( + feeds_preferences: "Optional[FeedsPreferencesResponse]" = dc_field( default=None, metadata=dc_config(field_name="feeds_preferences") ) @@ -13764,6 +14618,34 @@ class PushTemplate(DataClassJsonMixin): ) +@dataclass +class PushTemplateResponse(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"), + ) + ) + enable_push: bool = dc_field(metadata=dc_config(field_name="enable_push")) + event_type: str = dc_field(metadata=dc_config(field_name="event_type")) + push_provider_internal_id: str = dc_field( + metadata=dc_config(field_name="push_provider_internal_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"), + ) + ) + template: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="template") + ) + + @dataclass class QualityScoreReport(DataClassJsonMixin): histogram: "List[ReportByHistogramBucket]" = dc_field( @@ -13780,17 +14662,26 @@ class QualityScoreReportResponse(DataClassJsonMixin): @dataclass class QueryActivitiesRequest(DataClassJsonMixin): + include_private_activities: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="include_private_activities") + ) limit: Optional[int] = dc_field( default=None, metadata=dc_config(field_name="limit") ) next: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="next")) prev: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="prev")) + user_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) sort: "Optional[List[SortParamRequest]]" = dc_field( default=None, metadata=dc_config(field_name="sort") ) filter: Optional[Dict[str, object]] = dc_field( default=None, metadata=dc_config(field_name="filter") ) + user: "Optional[UserRequest]" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) @dataclass @@ -13865,6 +14756,35 @@ class QueryAggregateCallStatsResponse(DataClassJsonMixin): ) +@dataclass +class QueryAppealsRequest(DataClassJsonMixin): + limit: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="limit") + ) + next: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="next")) + prev: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="prev")) + user_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + sort: "Optional[List[SortParamRequest]]" = dc_field( + default=None, metadata=dc_config(field_name="sort") + ) + filter: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="filter") + ) + user: "Optional[UserRequest]" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + + +@dataclass +class QueryAppealsResponse(DataClassJsonMixin): + duration: str = dc_field(metadata=dc_config(field_name="duration")) + items: "List[AppealItemResponse]" = dc_field(metadata=dc_config(field_name="items")) + next: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="next")) + prev: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="prev")) + + @dataclass class QueryBannedUsersPayload(DataClassJsonMixin): filter_conditions: Dict[str, object] = dc_field( @@ -14044,6 +14964,74 @@ class QueryCallSessionParticipantStatsTimelineResponse(DataClassJsonMixin): ) +@dataclass +class QueryCallStatsMapResponse(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")) + duration: str = dc_field(metadata=dc_config(field_name="duration")) + counts: "CallStatsParticipantCounts" = dc_field( + metadata=dc_config(field_name="counts") + ) + call_ended_at: Optional[datetime] = 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: Optional[datetime] = 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: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="data_source") + ) + end_time: Optional[datetime] = 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: Optional[datetime] = 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: Optional[datetime] = 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: "Optional[CallStatsMapPublishers]" = dc_field( + default=None, metadata=dc_config(field_name="publishers") + ) + sfus: "Optional[CallStatsMapSFUs]" = dc_field( + default=None, metadata=dc_config(field_name="sfus") + ) + subscribers: "Optional[CallStatsMapSubscribers]" = dc_field( + default=None, metadata=dc_config(field_name="subscribers") + ) + + @dataclass class QueryCallStatsRequest(DataClassJsonMixin): limit: Optional[int] = dc_field( @@ -14280,7 +15268,7 @@ class QueryFeedModerationTemplate(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) - config: "Optional[FeedsModerationTemplateConfig]" = dc_field( + config: "Optional[FeedsModerationTemplateConfigPayload]" = dc_field( default=None, metadata=dc_config(field_name="config") ) @@ -14509,7 +15497,7 @@ class QueryModerationFlagsRequest(DataClassJsonMixin): ) next: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="next")) prev: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="prev")) - sort: "Optional[List[SortParam]]" = dc_field( + sort: "Optional[List[SortParamRequest]]" = dc_field( default=None, metadata=dc_config(field_name="sort") ) filter: Optional[Dict[str, object]] = dc_field( @@ -14729,12 +15717,15 @@ class QueryReviewQueueResponse(DataClassJsonMixin): items: "List[ReviewQueueItemResponse]" = dc_field( metadata=dc_config(field_name="items") ) - action_config: "Dict[str, List[ModerationActionConfig]]" = dc_field( + action_config: "Dict[str, List[ModerationActionConfigResponse]]" = dc_field( metadata=dc_config(field_name="action_config") ) stats: Dict[str, object] = dc_field(metadata=dc_config(field_name="stats")) next: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="next")) prev: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="prev")) + filter_config: "Optional[FilterConfigResponse]" = dc_field( + default=None, metadata=dc_config(field_name="filter_config") + ) @dataclass @@ -14959,8 +15950,29 @@ class RankingConfig(DataClassJsonMixin): ) +@dataclass +class RawRecordSettings(DataClassJsonMixin): + mode: str = dc_field(metadata=dc_config(field_name="mode")) + + +@dataclass +class RawRecordingResponse(DataClassJsonMixin): + status: str = dc_field(metadata=dc_config(field_name="status")) + + +@dataclass +class RawRecordingSettingsRequest(DataClassJsonMixin): + mode: str = dc_field(metadata=dc_config(field_name="mode")) + + +@dataclass +class RawRecordingSettingsResponse(DataClassJsonMixin): + mode: str = dc_field(metadata=dc_config(field_name="mode")) + + @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", @@ -14969,9 +15981,7 @@ class Reaction(DataClassJsonMixin): 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")) + kind: str = dc_field(metadata=dc_config(field_name="kind")) updated_at: datetime = dc_field( metadata=dc_config( field_name="updated_at", @@ -14980,9 +15990,43 @@ class Reaction(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) - custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - user_id: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="user_id") + user_id: str = dc_field(metadata=dc_config(field_name="user_id")) + deleted_at: Optional[datetime] = 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: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="id")) + parent: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="parent") + ) + score: Optional[float] = dc_field( + default=None, metadata=dc_config(field_name="score") + ) + target_feeds: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="target_feeds") + ) + children_counts: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="children_counts") + ) + data: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="data") + ) + latest_children: "Optional[Dict[str, List[Reaction]]]" = dc_field( + default=None, metadata=dc_config(field_name="latest_children") + ) + moderation: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="moderation") + ) + own_children: "Optional[Dict[str, List[Reaction]]]" = dc_field( + default=None, metadata=dc_config(field_name="own_children") + ) + target_feeds_extra_data: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="target_feeds_extra_data") ) user: "Optional[User]" = dc_field( default=None, metadata=dc_config(field_name="user") @@ -14991,9 +16035,6 @@ class Reaction(DataClassJsonMixin): @dataclass class ReactionDeletedEvent(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", @@ -15002,20 +16043,50 @@ class ReactionDeletedEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) type: str = dc_field( default="reaction.deleted", metadata=dc_config(field_name="type") ) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + message_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="message_id") + ) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) - thread_participants: "Optional[List[User]]" = dc_field( + thread_participants: "Optional[List[UserResponseCommonFields]]" = dc_field( default=None, metadata=dc_config(field_name="thread_participants") ) - message: "Optional[Message]" = dc_field( + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + message: "Optional[MessageResponse]" = dc_field( default=None, metadata=dc_config(field_name="message") ) - reaction: "Optional[Reaction]" = dc_field( + reaction: "Optional[ReactionResponse]" = dc_field( default=None, metadata=dc_config(field_name="reaction") ) - user: "Optional[User]" = dc_field( + user: "Optional[UserResponseCommonFields]" = dc_field( default=None, metadata=dc_config(field_name="user") ) @@ -15044,9 +16115,6 @@ class ReactionGroupResponse(DataClassJsonMixin): @dataclass class ReactionNewEvent(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", @@ -15055,18 +16123,48 @@ class ReactionNewEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) type: str = dc_field(default="reaction.new", metadata=dc_config(field_name="type")) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + message_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="message_id") + ) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) - thread_participants: "Optional[List[User]]" = dc_field( + thread_participants: "Optional[List[UserResponseCommonFields]]" = dc_field( default=None, metadata=dc_config(field_name="thread_participants") ) - message: "Optional[Message]" = dc_field( + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + message: "Optional[MessageResponse]" = dc_field( default=None, metadata=dc_config(field_name="message") ) - reaction: "Optional[Reaction]" = dc_field( + reaction: "Optional[ReactionResponse]" = dc_field( default=None, metadata=dc_config(field_name="reaction") ) - user: "Optional[User]" = dc_field( + user: "Optional[UserResponseCommonFields]" = dc_field( default=None, metadata=dc_config(field_name="user") ) @@ -15134,9 +16232,6 @@ class ReactionResponse(DataClassJsonMixin): @dataclass class ReactionUpdatedEvent(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", @@ -15145,13 +16240,43 @@ class ReactionUpdatedEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) - message: "Message" = dc_field(metadata=dc_config(field_name="message")) - reaction: "Reaction" = dc_field(metadata=dc_config(field_name="reaction")) + message_id: str = dc_field(metadata=dc_config(field_name="message_id")) + channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + message: "MessageResponse" = dc_field(metadata=dc_config(field_name="message")) type: str = dc_field( default="reaction.updated", metadata=dc_config(field_name="type") ) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) - user: "Optional[User]" = dc_field( + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + reaction: "Optional[ReactionResponse]" = dc_field( + default=None, metadata=dc_config(field_name="reaction") + ) + user: "Optional[UserResponseCommonFields]" = dc_field( default=None, metadata=dc_config(field_name="user") ) @@ -15196,8 +16321,11 @@ class ReactivateUsersResponse(DataClassJsonMixin): @dataclass -class ReadReceipts(DataClassJsonMixin): - enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) +class ReadCollectionsResponse(DataClassJsonMixin): + duration: str = dc_field(metadata=dc_config(field_name="duration")) + collections: "List[CollectionResponse]" = dc_field( + metadata=dc_config(field_name="collections") + ) @dataclass @@ -15272,6 +16400,11 @@ class RecordSettingsResponse(DataClassJsonMixin): layout: "LayoutSettingsResponse" = dc_field(metadata=dc_config(field_name="layout")) +@dataclass +class RejectAppealRequestPayload(DataClassJsonMixin): + decision_reason: str = dc_field(metadata=dc_config(field_name="decision_reason")) + + @dataclass class RejectFeedMemberInviteRequest(DataClassJsonMixin): user_id: Optional[str] = dc_field( @@ -15435,10 +16568,10 @@ class ReminderResponseData(DataClassJsonMixin): channel: "Optional[ChannelResponse]" = dc_field( default=None, metadata=dc_config(field_name="channel") ) - message: "Optional[Message]" = dc_field( + message: "Optional[MessageResponse]" = dc_field( default=None, metadata=dc_config(field_name="message") ) - user: "Optional[User]" = dc_field( + user: "Optional[UserResponse]" = dc_field( default=None, metadata=dc_config(field_name="user") ) @@ -15517,7 +16650,9 @@ class ResolveSipInboundRequest(DataClassJsonMixin): metadata=dc_config(field_name="sip_caller_number") ) sip_trunk_number: str = dc_field(metadata=dc_config(field_name="sip_trunk_number")) - challenge: "SIPChallenge" = dc_field(metadata=dc_config(field_name="challenge")) + challenge: "SIPChallengeRequest" = dc_field( + metadata=dc_config(field_name="challenge") + ) sip_headers: "Optional[Dict[str, str]]" = dc_field( default=None, metadata=dc_config(field_name="sip_headers") ) @@ -15543,8 +16678,10 @@ class Response(DataClassJsonMixin): @dataclass -class RestoreActionRequest(DataClassJsonMixin): - pass +class RestoreActionRequestPayload(DataClassJsonMixin): + decision_reason: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="decision_reason") + ) @dataclass @@ -15621,7 +16758,7 @@ class ReviewQueueItemResponse(DataClassJsonMixin): actions: "List[ActionLogResponse]" = dc_field( metadata=dc_config(field_name="actions") ) - bans: "List[Ban]" = dc_field(metadata=dc_config(field_name="bans")) + bans: "List[BanInfoResponse]" = dc_field(metadata=dc_config(field_name="bans")) flags: "List[ModerationFlagResponse]" = dc_field( metadata=dc_config(field_name="flags") ) @@ -15656,6 +16793,9 @@ class ReviewQueueItemResponse(DataClassJsonMixin): activity: "Optional[EnrichedActivity]" = dc_field( default=None, metadata=dc_config(field_name="activity") ) + appeal: "Optional[AppealItemResponse]" = dc_field( + default=None, metadata=dc_config(field_name="appeal") + ) assigned_to: "Optional[UserResponse]" = dc_field( default=None, metadata=dc_config(field_name="assigned_to") ) @@ -15680,7 +16820,7 @@ class ReviewQueueItemResponse(DataClassJsonMixin): message: "Optional[MessageResponse]" = dc_field( default=None, metadata=dc_config(field_name="message") ) - moderation_payload: "Optional[ModerationPayload]" = dc_field( + moderation_payload: "Optional[ModerationPayloadResponse]" = dc_field( default=None, metadata=dc_config(field_name="moderation_payload") ) reaction: "Optional[Reaction]" = dc_field( @@ -15820,6 +16960,9 @@ class RuleBuilderCondition(DataClassJsonMixin): content_count_rule_params: "Optional[ContentCountRuleParameters]" = dc_field( default=None, metadata=dc_config(field_name="content_count_rule_params") ) + content_flag_count_rule_params: "Optional[FlagCountRuleParameters]" = dc_field( + default=None, metadata=dc_config(field_name="content_flag_count_rule_params") + ) image_content_params: "Optional[ImageContentParameters]" = dc_field( default=None, metadata=dc_config(field_name="image_content_params") ) @@ -15838,6 +16981,16 @@ class RuleBuilderCondition(DataClassJsonMixin): user_custom_property_params: "Optional[UserCustomPropertyParameters]" = dc_field( default=None, metadata=dc_config(field_name="user_custom_property_params") ) + user_flag_count_rule_params: "Optional[FlagCountRuleParameters]" = dc_field( + default=None, metadata=dc_config(field_name="user_flag_count_rule_params") + ) + user_identical_content_count_params: "Optional[UserIdenticalContentCountParameters]" = dc_field( + default=None, + metadata=dc_config(field_name="user_identical_content_count_params"), + ) + user_role_params: "Optional[UserRoleParameters]" = dc_field( + default=None, metadata=dc_config(field_name="user_role_params") + ) user_rule_params: "Optional[UserRuleParameters]" = dc_field( default=None, metadata=dc_config(field_name="user_rule_params") ) @@ -15916,6 +17069,19 @@ class SDKUsageReportResponse(DataClassJsonMixin): ) +@dataclass +class SFULocationResponse(DataClassJsonMixin): + datacenter: str = dc_field(metadata=dc_config(field_name="datacenter")) + id: str = dc_field(metadata=dc_config(field_name="id")) + coordinates: "CoordinatesResponse" = dc_field( + metadata=dc_config(field_name="coordinates") + ) + location: "LocationResponse" = dc_field(metadata=dc_config(field_name="location")) + count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="count") + ) + + @dataclass class SIPCallConfigsRequest(DataClassJsonMixin): custom_data: Optional[Dict[str, object]] = dc_field( @@ -15947,7 +17113,7 @@ class SIPCallerConfigsResponse(DataClassJsonMixin): @dataclass -class SIPChallenge(DataClassJsonMixin): +class SIPChallengeRequest(DataClassJsonMixin): a1: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="a1")) algorithm: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="algorithm") @@ -16215,6 +17381,12 @@ class SearchPayload(DataClassJsonMixin): filter_conditions: Dict[str, object] = dc_field( metadata=dc_config(field_name="filter_conditions") ) + force_default_search: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="force_default_search") + ) + force_sql_v2_backend: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="force_sql_v2_backend") + ) limit: Optional[int] = dc_field( default=None, metadata=dc_config(field_name="limit") ) @@ -16662,7 +17834,7 @@ class SessionSettingsResponse(DataClassJsonMixin): @dataclass -class ShadowBlockActionRequest(DataClassJsonMixin): +class ShadowBlockActionRequestPayload(DataClassJsonMixin): reason: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="reason") ) @@ -16670,28 +17842,11 @@ class ShadowBlockActionRequest(DataClassJsonMixin): @dataclass class SharedLocation(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") - ) - 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"), - ) + latitude: float = dc_field(metadata=dc_config(field_name="latitude")) + longitude: float = dc_field(metadata=dc_config(field_name="longitude")) + created_by_device_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="created_by_device_id") ) - user_id: str = dc_field(metadata=dc_config(field_name="user_id")) end_at: Optional[datetime] = dc_field( default=None, metadata=dc_config( @@ -16701,18 +17856,6 @@ class SharedLocation(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ), ) - latitude: Optional[float] = dc_field( - default=None, metadata=dc_config(field_name="latitude") - ) - longitude: Optional[float] = dc_field( - default=None, metadata=dc_config(field_name="longitude") - ) - channel: "Optional[Channel]" = dc_field( - default=None, metadata=dc_config(field_name="channel") - ) - message: "Optional[Message]" = dc_field( - default=None, metadata=dc_config(field_name="message") - ) @dataclass @@ -16845,16 +17988,6 @@ class SipInboundCredentials(DataClassJsonMixin): ) -@dataclass -class SortParam(DataClassJsonMixin): - direction: Optional[int] = dc_field( - default=None, metadata=dc_config(field_name="direction") - ) - field: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="field") - ) - - @dataclass class SortParamRequest(DataClassJsonMixin): direction: Optional[int] = dc_field( @@ -16863,6 +17996,7 @@ class SortParamRequest(DataClassJsonMixin): field: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="field") ) + type: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="type")) @dataclass @@ -17046,9 +18180,18 @@ class StopLiveRequest(DataClassJsonMixin): continue_closed_caption: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="continue_closed_caption") ) + continue_composite_recording: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="continue_composite_recording") + ) continue_hls: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="continue_hls") ) + continue_individual_recording: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="continue_individual_recording") + ) + continue_raw_recording: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="continue_raw_recording") + ) continue_recording: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="continue_recording") ) @@ -17149,43 +18292,57 @@ class StoriesFeedUpdatedEvent(DataClassJsonMixin): @dataclass class SubmitActionRequest(DataClassJsonMixin): action_type: str = dc_field(metadata=dc_config(field_name="action_type")) - item_id: str = dc_field(metadata=dc_config(field_name="item_id")) + appeal_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="appeal_id") + ) + item_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="item_id") + ) user_id: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="user_id") ) - ban: "Optional[BanActionRequest]" = dc_field( + ban: "Optional[BanActionRequestPayload]" = dc_field( default=None, metadata=dc_config(field_name="ban") ) - block: "Optional[BlockActionRequest]" = dc_field( + block: "Optional[BlockActionRequestPayload]" = dc_field( default=None, metadata=dc_config(field_name="block") ) - custom: "Optional[CustomActionRequest]" = dc_field( + custom: "Optional[CustomActionRequestPayload]" = dc_field( default=None, metadata=dc_config(field_name="custom") ) - delete_activity: "Optional[DeleteActivityRequest]" = dc_field( + delete_activity: "Optional[DeleteActivityRequestPayload]" = dc_field( default=None, metadata=dc_config(field_name="delete_activity") ) - delete_comment: "Optional[DeleteCommentRequest]" = dc_field( + delete_comment: "Optional[DeleteCommentRequestPayload]" = dc_field( default=None, metadata=dc_config(field_name="delete_comment") ) - delete_message: "Optional[DeleteMessageRequest]" = dc_field( + delete_message: "Optional[DeleteMessageRequestPayload]" = dc_field( default=None, metadata=dc_config(field_name="delete_message") ) - delete_reaction: "Optional[DeleteReactionRequest]" = dc_field( + delete_reaction: "Optional[DeleteReactionRequestPayload]" = dc_field( default=None, metadata=dc_config(field_name="delete_reaction") ) - delete_user: "Optional[DeleteUserRequest]" = dc_field( + delete_user: "Optional[DeleteUserRequestPayload]" = dc_field( default=None, metadata=dc_config(field_name="delete_user") ) - mark_reviewed: "Optional[MarkReviewedRequest]" = dc_field( + mark_reviewed: "Optional[MarkReviewedRequestPayload]" = dc_field( default=None, metadata=dc_config(field_name="mark_reviewed") ) - shadow_block: "Optional[ShadowBlockActionRequest]" = dc_field( + reject_appeal: "Optional[RejectAppealRequestPayload]" = dc_field( + default=None, metadata=dc_config(field_name="reject_appeal") + ) + restore: "Optional[RestoreActionRequestPayload]" = dc_field( + default=None, metadata=dc_config(field_name="restore") + ) + shadow_block: "Optional[ShadowBlockActionRequestPayload]" = dc_field( default=None, metadata=dc_config(field_name="shadow_block") ) - unban: "Optional[UnbanActionRequest]" = dc_field( + unban: "Optional[UnbanActionRequestPayload]" = dc_field( default=None, metadata=dc_config(field_name="unban") ) + unblock: "Optional[UnblockActionRequestPayload]" = dc_field( + default=None, metadata=dc_config(field_name="unblock") + ) user: "Optional[UserRequest]" = dc_field( default=None, metadata=dc_config(field_name="user") ) @@ -17194,6 +18351,9 @@ class SubmitActionRequest(DataClassJsonMixin): @dataclass class SubmitActionResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) + appeal_item: "Optional[AppealItemResponse]" = dc_field( + default=None, metadata=dc_config(field_name="appeal_item") + ) item: "Optional[ReviewQueueItemResponse]" = dc_field( default=None, metadata=dc_config(field_name="item") ) @@ -17285,6 +18445,9 @@ class TextRuleParameters(DataClassJsonMixin): contains_url: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="contains_url") ) + semantic_filter_min_threshold: Optional[float] = dc_field( + default=None, metadata=dc_config(field_name="semantic_filter_min_threshold") + ) severity: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="severity") ) @@ -17300,6 +18463,9 @@ class TextRuleParameters(DataClassJsonMixin): harm_labels: Optional[List[str]] = dc_field( default=None, metadata=dc_config(field_name="harm_labels") ) + semantic_filter_names: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="semantic_filter_names") + ) llm_harm_labels: "Optional[Dict[str, str]]" = dc_field( default=None, metadata=dc_config(field_name="llm_harm_labels") ) @@ -17502,9 +18668,6 @@ class ThreadStateResponse(DataClassJsonMixin): @dataclass class ThreadUpdatedEvent(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", @@ -17513,15 +18676,29 @@ class ThreadUpdatedEvent(DataClassJsonMixin): 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: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + received_at: Optional[datetime] = dc_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: "Optional[ThreadResponse]" = dc_field( default=None, metadata=dc_config(field_name="thread") ) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) @dataclass @@ -17595,7 +18772,7 @@ class ThreadedCommentResponse(DataClassJsonMixin): moderation: "Optional[ModerationV2Response]" = dc_field( default=None, metadata=dc_config(field_name="moderation") ) - reaction_groups: "Optional[Dict[str, Optional[ReactionGroupResponse]]]" = dc_field( + reaction_groups: "Optional[Dict[str, FeedsReactionGroupResponse]]" = dc_field( default=None, metadata=dc_config(field_name="reaction_groups") ) @@ -17746,11 +18923,6 @@ class TruncateChannelResponse(DataClassJsonMixin): ) -@dataclass -class TypingIndicators(DataClassJsonMixin): - enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) - - @dataclass class TypingIndicatorsResponse(DataClassJsonMixin): enabled: Optional[bool] = dc_field( @@ -17759,8 +18931,13 @@ class TypingIndicatorsResponse(DataClassJsonMixin): @dataclass -class UnbanActionRequest(DataClassJsonMixin): - pass +class UnbanActionRequestPayload(DataClassJsonMixin): + channel_cid: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_cid") + ) + decision_reason: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="decision_reason") + ) @dataclass @@ -17779,8 +18956,10 @@ class UnbanResponse(DataClassJsonMixin): @dataclass -class UnblockActionRequest(DataClassJsonMixin): - pass +class UnblockActionRequestPayload(DataClassJsonMixin): + decision_reason: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="decision_reason") + ) @dataclass @@ -18011,6 +19190,9 @@ class UpdateActivityRequest(DataClassJsonMixin): restrict_replies: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="restrict_replies") ) + skip_enrich_url: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_enrich_url") + ) text: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="text")) user_id: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="user_id") @@ -18018,9 +19200,15 @@ class UpdateActivityRequest(DataClassJsonMixin): visibility: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="visibility") ) + visibility_tag: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="visibility_tag") + ) attachments: "Optional[List[Attachment]]" = dc_field( default=None, metadata=dc_config(field_name="attachments") ) + collection_refs: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="collection_refs") + ) feeds: Optional[List[str]] = dc_field( default=None, metadata=dc_config(field_name="feeds") ) @@ -18030,6 +19218,9 @@ class UpdateActivityRequest(DataClassJsonMixin): interest_tags: Optional[List[str]] = dc_field( default=None, metadata=dc_config(field_name="interest_tags") ) + mentioned_user_ids: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="mentioned_user_ids") + ) custom: Optional[Dict[str, object]] = dc_field( default=None, metadata=dc_config(field_name="custom") ) @@ -18326,7 +19517,7 @@ class UpdateCallTypeRequest(DataClassJsonMixin): grants: "Optional[Dict[str, List[str]]]" = dc_field( default=None, metadata=dc_config(field_name="grants") ) - notification_settings: "Optional[NotificationSettings]" = dc_field( + notification_settings: "Optional[NotificationSettingsRequest]" = dc_field( default=None, metadata=dc_config(field_name="notification_settings") ) settings: "Optional[CallSettingsRequest]" = dc_field( @@ -18355,7 +19546,7 @@ class UpdateCallTypeResponse(DataClassJsonMixin): ) ) grants: "Dict[str, List[str]]" = dc_field(metadata=dc_config(field_name="grants")) - notification_settings: "NotificationSettings" = dc_field( + notification_settings: "NotificationSettingsResponse" = dc_field( metadata=dc_config(field_name="notification_settings") ) settings: "CallSettingsResponse" = dc_field( @@ -18446,7 +19637,7 @@ class UpdateChannelRequest(DataClassJsonMixin): remove_members: Optional[List[str]] = dc_field( default=None, metadata=dc_config(field_name="remove_members") ) - data: "Optional[ChannelInput]" = dc_field( + data: "Optional[ChannelInputRequest]" = dc_field( default=None, metadata=dc_config(field_name="data") ) message: "Optional[MessageRequest]" = dc_field( @@ -18652,6 +19843,34 @@ class UpdateChannelTypeResponse(DataClassJsonMixin): ) +@dataclass +class UpdateCollectionRequest(DataClassJsonMixin): + id: str = dc_field(metadata=dc_config(field_name="id")) + name: str = dc_field(metadata=dc_config(field_name="name")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + + +@dataclass +class UpdateCollectionsRequest(DataClassJsonMixin): + collections: "List[UpdateCollectionRequest]" = dc_field( + metadata=dc_config(field_name="collections") + ) + user_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="user_id") + ) + user: "Optional[UserRequest]" = dc_field( + default=None, metadata=dc_config(field_name="user") + ) + + +@dataclass +class UpdateCollectionsResponse(DataClassJsonMixin): + duration: str = dc_field(metadata=dc_config(field_name="duration")) + collections: "List[CollectionResponse]" = dc_field( + metadata=dc_config(field_name="collections") + ) + + @dataclass class UpdateCommandRequest(DataClassJsonMixin): description: str = dc_field(metadata=dc_config(field_name="description")) @@ -18672,12 +19891,18 @@ class UpdateCommentRequest(DataClassJsonMixin): comment: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="comment") ) + skip_enrich_url: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="skip_enrich_url") + ) skip_push: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="skip_push") ) user_id: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="user_id") ) + attachments: "Optional[List[Attachment]]" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) custom: Optional[Dict[str, object]] = dc_field( default=None, metadata=dc_config(field_name="custom") ) @@ -18784,6 +20009,13 @@ class UpdateFeedRequest(DataClassJsonMixin): created_by_id: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="created_by_id") ) + description: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="description") + ) + name: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="name")) + filter_tags: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="filter_tags") + ) custom: Optional[Dict[str, object]] = dc_field( default=None, metadata=dc_config(field_name="custom") ) @@ -19268,6 +20500,21 @@ class UpsertActivitiesResponse(DataClassJsonMixin): ) +@dataclass +class UpsertCollectionsRequest(DataClassJsonMixin): + 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")) + collections: "List[CollectionResponse]" = dc_field( + metadata=dc_config(field_name="collections") + ) + + @dataclass class UpsertConfigRequest(DataClassJsonMixin): key: str = dc_field(metadata=dc_config(field_name="key")) @@ -19377,7 +20624,7 @@ class UpsertModerationRuleResponse(DataClassJsonMixin): @dataclass class UpsertModerationTemplateRequest(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) - config: "FeedsModerationTemplateConfig" = dc_field( + config: "FeedsModerationTemplateConfigPayload" = dc_field( metadata=dc_config(field_name="config") ) @@ -19402,7 +20649,7 @@ class UpsertModerationTemplateResponse(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) - config: "Optional[FeedsModerationTemplateConfig]" = dc_field( + config: "Optional[FeedsModerationTemplateConfigPayload]" = dc_field( default=None, metadata=dc_config(field_name="config") ) @@ -19417,10 +20664,10 @@ class UpsertPushPreferencesRequest(DataClassJsonMixin): @dataclass class UpsertPushPreferencesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - user_channel_preferences: "Dict[str, Dict[str, Optional[ChannelPushPreferences]]]" = dc_field( + user_channel_preferences: "Dict[str, Dict[str, Optional[ChannelPushPreferencesResponse]]]" = dc_field( metadata=dc_config(field_name="user_channel_preferences") ) - user_preferences: "Dict[str, Optional[PushPreferences]]" = dc_field( + user_preferences: "Dict[str, Optional[PushPreferencesResponse]]" = dc_field( metadata=dc_config(field_name="user_preferences") ) @@ -19447,126 +20694,34 @@ class UpsertPushTemplateRequest(DataClassJsonMixin): metadata=dc_config(field_name="push_provider_type") ) enable_push: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="enable_push") - ) - push_provider_name: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="push_provider_name") - ) - template: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="template") - ) - - -@dataclass -class UpsertPushTemplateResponse(DataClassJsonMixin): - duration: str = dc_field(metadata=dc_config(field_name="duration")) - template: "Optional[PushTemplate]" = dc_field( - default=None, metadata=dc_config(field_name="template") - ) - - -@dataclass -class User(DataClassJsonMixin): - banned: bool = dc_field(metadata=dc_config(field_name="banned")) - id: str = dc_field(metadata=dc_config(field_name="id")) - online: bool = dc_field(metadata=dc_config(field_name="online")) - role: str = dc_field(metadata=dc_config(field_name="role")) - custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - teams_role: "Dict[str, str]" = dc_field(metadata=dc_config(field_name="teams_role")) - avg_response_time: Optional[int] = dc_field( - default=None, metadata=dc_config(field_name="avg_response_time") - ) - ban_expires: Optional[datetime] = 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"), - ), - ) - created_at: Optional[datetime] = 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"), - ), - ) - deactivated_at: Optional[datetime] = 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: Optional[datetime] = 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"), - ), - ) - invisible: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="invisible") - ) - language: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="language") - ) - last_active: Optional[datetime] = 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_engaged_at: Optional[datetime] = dc_field( - default=None, - metadata=dc_config( - field_name="last_engaged_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ), - ) - revoke_tokens_issued_before: Optional[datetime] = 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"), - ), - ) - updated_at: Optional[datetime] = 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"), - ), + default=None, metadata=dc_config(field_name="enable_push") ) - teams: Optional[List[str]] = dc_field( - default=None, metadata=dc_config(field_name="teams") + push_provider_name: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="push_provider_name") ) - privacy_settings: "Optional[PrivacySettings]" = dc_field( - default=None, metadata=dc_config(field_name="privacy_settings") + template: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="template") + ) + + +@dataclass +class UpsertPushTemplateResponse(DataClassJsonMixin): + duration: str = dc_field(metadata=dc_config(field_name="duration")) + template: "Optional[PushTemplateResponse]" = dc_field( + default=None, metadata=dc_config(field_name="template") + ) + + +@dataclass +class User(DataClassJsonMixin): + id: str = dc_field(metadata=dc_config(field_name="id")) + data: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="data") ) @dataclass class UserBannedEvent(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", @@ -19575,9 +20730,22 @@ class UserBannedEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) - shadow: bool = dc_field(metadata=dc_config(field_name="shadow")) - created_by: "User" = dc_field(metadata=dc_config(field_name="created_by")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) type: str = dc_field(default="user.banned", metadata=dc_config(field_name="type")) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) expiration: Optional[datetime] = dc_field( default=None, metadata=dc_config( @@ -19590,9 +20758,27 @@ class UserBannedEvent(DataClassJsonMixin): reason: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="reason") ) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + shadow: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="shadow") + ) team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") + total_bans: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="total_bans") + ) + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + created_by: "Optional[UserResponseCommonFields]" = dc_field( + default=None, metadata=dc_config(field_name="created_by") ) @@ -19631,12 +20817,22 @@ class UserDeactivatedEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) - created_by: "User" = dc_field(metadata=dc_config(field_name="created_by")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) type: str = dc_field( default="user.deactivated", metadata=dc_config(field_name="type") ) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") + received_at: Optional[datetime] = dc_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: "Optional[UserResponseCommonFields]" = dc_field( + default=None, metadata=dc_config(field_name="created_by") ) @@ -19650,16 +20846,29 @@ class UserDeletedEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + delete_conversation: str = dc_field( + metadata=dc_config(field_name="delete_conversation") + ) delete_conversation_channels: bool = dc_field( metadata=dc_config(field_name="delete_conversation_channels") ) + delete_messages: str = dc_field(metadata=dc_config(field_name="delete_messages")) + delete_user: str = dc_field(metadata=dc_config(field_name="delete_user")) hard_delete: bool = dc_field(metadata=dc_config(field_name="hard_delete")) 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")) type: str = dc_field(default="user.deleted", metadata=dc_config(field_name="type")) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), ) @@ -19705,15 +20914,34 @@ class UserFlaggedEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + reason: str = dc_field(metadata=dc_config(field_name="reason")) + total_flags: int = dc_field(metadata=dc_config(field_name="total_flags")) + user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) type: str = dc_field(default="user.flagged", metadata=dc_config(field_name="type")) - target_user: Optional[str] = dc_field( + received_at: Optional[datetime] = dc_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: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + target_user: "Optional[UserResponseCommonFields]" = dc_field( default=None, metadata=dc_config(field_name="target_user") ) - target_users: Optional[List[str]] = dc_field( - default=None, metadata=dc_config(field_name="target_users") + + +@dataclass +class UserIdenticalContentCountParameters(DataClassJsonMixin): + threshold: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="threshold") ) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") + time_window: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="time_window") ) @@ -19764,7 +20992,7 @@ class UserMessagesDeletedEvent(DataClassJsonMixin): @dataclass -class UserMute(DataClassJsonMixin): +class UserMuteResponse(DataClassJsonMixin): created_at: datetime = dc_field( metadata=dc_config( field_name="created_at", @@ -19790,16 +21018,16 @@ class UserMute(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ), ) - target: "Optional[User]" = dc_field( + target: "Optional[UserResponse]" = dc_field( default=None, metadata=dc_config(field_name="target") ) - user: "Optional[User]" = dc_field( + user: "Optional[UserResponse]" = dc_field( default=None, metadata=dc_config(field_name="user") ) @dataclass -class UserMuteResponse(DataClassJsonMixin): +class UserMutedEvent(DataClassJsonMixin): created_at: datetime = dc_field( metadata=dc_config( field_name="created_at", @@ -19808,50 +21036,23 @@ class UserMuteResponse(DataClassJsonMixin): 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: Optional[datetime] = dc_field( + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) + type: str = dc_field(default="user.muted", metadata=dc_config(field_name="type")) + received_at: Optional[datetime] = dc_field( default=None, metadata=dc_config( - field_name="expires", + field_name="received_at", encoder=encode_datetime, decoder=datetime_from_unix_ns, mm_field=fields.DateTime(format="iso"), ), ) - target: "Optional[UserResponse]" = dc_field( - default=None, metadata=dc_config(field_name="target") - ) - user: "Optional[UserResponse]" = dc_field( - default=None, metadata=dc_config(field_name="user") - ) - - -@dataclass -class UserMutedEvent(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="user.muted", metadata=dc_config(field_name="type")) - target_user: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="target_user") - ) - target_users: Optional[List[str]] = dc_field( + target_users: "Optional[List[UserResponseCommonFields]]" = dc_field( default=None, metadata=dc_config(field_name="target_users") ) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") + target_user: "Optional[UserResponseCommonFields]" = dc_field( + default=None, metadata=dc_config(field_name="target_user") ) @@ -19871,11 +21072,22 @@ class UserReactivatedEvent(DataClassJsonMixin): 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")) type: str = dc_field( default="user.reactivated", metadata=dc_config(field_name="type") ) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") + received_at: Optional[datetime] = dc_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: "Optional[UserResponseCommonFields]" = dc_field( + default=None, metadata=dc_config(field_name="created_by") ) @@ -20161,6 +21373,14 @@ class UserResponsePrivacyFields(DataClassJsonMixin): ) +@dataclass +class UserRoleParameters(DataClassJsonMixin): + operator: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="operator") + ) + role: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="role")) + + @dataclass class UserRuleParameters(DataClassJsonMixin): max_age: Optional[str] = dc_field( @@ -20170,9 +21390,6 @@ class UserRuleParameters(DataClassJsonMixin): @dataclass class UserUnbannedEvent(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", @@ -20181,11 +21398,40 @@ class UserUnbannedEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) - shadow: bool = dc_field(metadata=dc_config(field_name="shadow")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + user: "UserResponseCommonFields" = dc_field(metadata=dc_config(field_name="user")) type: str = dc_field(default="user.unbanned", metadata=dc_config(field_name="type")) + channel_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_id") + ) + channel_member_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_member_count") + ) + channel_message_count: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="channel_message_count") + ) + channel_type: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_type") + ) + cid: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="cid")) + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), + ) + shadow: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="shadow") + ) team: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="team")) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") + channel_custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="channel_custom") + ) + created_by: "Optional[UserResponseCommonFields]" = dc_field( + default=None, metadata=dc_config(field_name="created_by") ) @@ -20199,15 +21445,23 @@ class UserUnmutedEvent(DataClassJsonMixin): 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")) type: str = dc_field(default="user.unmuted", metadata=dc_config(field_name="type")) - target_user: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="target_user") + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), ) - target_users: Optional[List[str]] = dc_field( + target_users: "Optional[List[UserResponseCommonFields]]" = dc_field( default=None, metadata=dc_config(field_name="target_users") ) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") + target_user: "Optional[UserResponseCommonFields]" = dc_field( + default=None, metadata=dc_config(field_name="target_user") ) @@ -20221,14 +21475,22 @@ class UserUnreadReminderEvent(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) - channels: "Dict[str, Optional[ChannelMessages]]" = dc_field( + channels: "Dict[str, Optional[ChannelMessagesResponse]]" = 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")) type: str = dc_field( default="user.unread_message_reminder", metadata=dc_config(field_name="type") ) - user: "Optional[User]" = dc_field( - default=None, metadata=dc_config(field_name="user") + received_at: Optional[datetime] = dc_field( + default=None, + metadata=dc_config( + field_name="received_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ), ) @@ -20346,12 +21608,12 @@ class VideoContentParameters(DataClassJsonMixin): @dataclass -class VideoEndCallRequest(DataClassJsonMixin): +class VideoEndCallRequestPayload(DataClassJsonMixin): pass @dataclass -class VideoKickUserRequest(DataClassJsonMixin): +class VideoKickUserRequestPayload(DataClassJsonMixin): pass @@ -20362,6 +21624,18 @@ class VideoReactionOverTimeResponse(DataClassJsonMixin): ) +@dataclass +class VideoReactionResponse(DataClassJsonMixin): + type: str = dc_field(metadata=dc_config(field_name="type")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + emoji_code: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="emoji_code") + ) + custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + + @dataclass class VideoReactionsResponse(DataClassJsonMixin): reaction: str = dc_field(metadata=dc_config(field_name="reaction")) @@ -20442,6 +21716,11 @@ class VoteData(DataClassJsonMixin): ) +@dataclass +class WHEvent(DataClassJsonMixin): + type: str = dc_field(metadata=dc_config(field_name="type")) + + @dataclass class WHIPIngress(DataClassJsonMixin): address: str = dc_field(metadata=dc_config(field_name="address")) @@ -20535,11 +21814,6 @@ class WSEvent(DataClassJsonMixin): ) -@dataclass -class WebhookEvent(DataClassJsonMixin): - type: str = dc_field(metadata=dc_config(field_name="type")) - - @dataclass class WrappedUnreadCountsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) diff --git a/getstream/moderation/async_rest_client.py b/getstream/moderation/async_rest_client.py index 92a30d64..120e5f86 100644 --- a/getstream/moderation/async_rest_client.py +++ b/getstream/moderation/async_rest_client.py @@ -31,6 +31,59 @@ def __init__( user_agent=user_agent, ) + @telemetry.operation_name("getstream.api.moderation.appeal") + async def appeal( + self, + appeal_reason: str, + entity_id: str, + entity_type: str, + user_id: Optional[str] = None, + attachments: Optional[List[str]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[AppealResponse]: + json = build_body_dict( + appeal_reason=appeal_reason, + entity_id=entity_id, + entity_type=entity_type, + user_id=user_id, + attachments=attachments, + user=user, + ) + 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, + } + 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 = build_body_dict( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ) + return await self.post( + "/api/v2/moderation/appeals", QueryAppealsResponse, json=json + ) + @telemetry.operation_name("getstream.api.moderation.ban") async def ban( self, @@ -210,7 +263,7 @@ async def custom_check( flags: List[CustomCheckFlag], entity_creator_id: Optional[str] = None, user_id: Optional[str] = None, - moderation_payload: Optional[ModerationPayload] = None, + moderation_payload: Optional[ModerationPayloadRequest] = None, user: Optional[UserRequest] = None, ) -> StreamResponse[CustomCheckResponse]: json = build_body_dict( @@ -246,7 +299,7 @@ async def v2_query_templates( @telemetry.operation_name("getstream.api.moderation.v2_upsert_template") async def v2_upsert_template( - self, name: str, config: FeedsModerationTemplateConfig + self, name: str, config: FeedsModerationTemplateConfigPayload ) -> StreamResponse[UpsertModerationTemplateResponse]: json = build_body_dict(name=name, config=config) return await self.post( @@ -285,7 +338,7 @@ async def query_moderation_flags( limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, - sort: Optional[List[SortParam]] = None, + sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, ) -> StreamResponse[QueryModerationFlagsResponse]: json = build_body_dict( @@ -455,23 +508,28 @@ async def get_review_queue_item( async def submit_action( self, action_type: str, - item_id: str, + appeal_id: Optional[str] = None, + item_id: Optional[str] = None, user_id: Optional[str] = None, - ban: Optional[BanActionRequest] = None, - block: Optional[BlockActionRequest] = None, - custom: Optional[CustomActionRequest] = None, - delete_activity: Optional[DeleteActivityRequest] = None, - delete_comment: Optional[DeleteCommentRequest] = None, - delete_message: Optional[DeleteMessageRequest] = None, - delete_reaction: Optional[DeleteReactionRequest] = None, - delete_user: Optional[DeleteUserRequest] = None, - mark_reviewed: Optional[MarkReviewedRequest] = None, - shadow_block: Optional[ShadowBlockActionRequest] = None, - unban: Optional[UnbanActionRequest] = None, + ban: Optional[BanActionRequestPayload] = None, + block: Optional[BlockActionRequestPayload] = 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, + 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 = build_body_dict( action_type=action_type, + appeal_id=appeal_id, item_id=item_id, user_id=user_id, ban=ban, @@ -483,8 +541,11 @@ async def submit_action( delete_reaction=delete_reaction, delete_user=delete_user, mark_reviewed=mark_reviewed, + reject_appeal=reject_appeal, + restore=restore, shadow_block=shadow_block, unban=unban, + unblock=unblock, user=user, ) return await self.post( diff --git a/getstream/moderation/rest_client.py b/getstream/moderation/rest_client.py index e8cebd38..3b65c0b2 100644 --- a/getstream/moderation/rest_client.py +++ b/getstream/moderation/rest_client.py @@ -31,6 +31,57 @@ def __init__( user_agent=user_agent, ) + @telemetry.operation_name("getstream.api.moderation.appeal") + def appeal( + self, + appeal_reason: str, + entity_id: str, + entity_type: str, + user_id: Optional[str] = None, + attachments: Optional[List[str]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[AppealResponse]: + json = build_body_dict( + appeal_reason=appeal_reason, + entity_id=entity_id, + entity_type=entity_type, + user_id=user_id, + attachments=attachments, + user=user, + ) + 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, + } + 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 = build_body_dict( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ) + return self.post("/api/v2/moderation/appeals", QueryAppealsResponse, json=json) + @telemetry.operation_name("getstream.api.moderation.ban") def ban( self, @@ -208,7 +259,7 @@ def custom_check( flags: List[CustomCheckFlag], entity_creator_id: Optional[str] = None, user_id: Optional[str] = None, - moderation_payload: Optional[ModerationPayload] = None, + moderation_payload: Optional[ModerationPayloadRequest] = None, user: Optional[UserRequest] = None, ) -> StreamResponse[CustomCheckResponse]: json = build_body_dict( @@ -242,7 +293,7 @@ def v2_query_templates( @telemetry.operation_name("getstream.api.moderation.v2_upsert_template") def v2_upsert_template( - self, name: str, config: FeedsModerationTemplateConfig + self, name: str, config: FeedsModerationTemplateConfigPayload ) -> StreamResponse[UpsertModerationTemplateResponse]: json = build_body_dict(name=name, config=config) return self.post( @@ -281,7 +332,7 @@ def query_moderation_flags( limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, - sort: Optional[List[SortParam]] = None, + sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, ) -> StreamResponse[QueryModerationFlagsResponse]: json = build_body_dict( @@ -449,23 +500,28 @@ def get_review_queue_item( def submit_action( self, action_type: str, - item_id: str, + appeal_id: Optional[str] = None, + item_id: Optional[str] = None, user_id: Optional[str] = None, - ban: Optional[BanActionRequest] = None, - block: Optional[BlockActionRequest] = None, - custom: Optional[CustomActionRequest] = None, - delete_activity: Optional[DeleteActivityRequest] = None, - delete_comment: Optional[DeleteCommentRequest] = None, - delete_message: Optional[DeleteMessageRequest] = None, - delete_reaction: Optional[DeleteReactionRequest] = None, - delete_user: Optional[DeleteUserRequest] = None, - mark_reviewed: Optional[MarkReviewedRequest] = None, - shadow_block: Optional[ShadowBlockActionRequest] = None, - unban: Optional[UnbanActionRequest] = None, + ban: Optional[BanActionRequestPayload] = None, + block: Optional[BlockActionRequestPayload] = 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, + 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 = build_body_dict( action_type=action_type, + appeal_id=appeal_id, item_id=item_id, user_id=user_id, ban=ban, @@ -477,8 +533,11 @@ def submit_action( delete_reaction=delete_reaction, delete_user=delete_user, mark_reviewed=mark_reviewed, + reject_appeal=reject_appeal, + restore=restore, shadow_block=shadow_block, unban=unban, + unblock=unblock, user=user, ) return self.post( diff --git a/getstream/video/async_call.py b/getstream/video/async_call.py index 1c7e9c7a..2fe0b7ea 100644 --- a/getstream/video/async_call.py +++ b/getstream/video/async_call.py @@ -151,7 +151,10 @@ 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, @@ -161,7 +164,10 @@ async def go_live( 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, @@ -422,7 +428,10 @@ async def stop_frame_recording(self) -> StreamResponse[StopFrameRecordingRespons 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, @@ -431,7 +440,10 @@ async def 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, @@ -440,8 +452,13 @@ async def stop_live( return response @attach_call_cid_async - async def stop_recording(self) -> StreamResponse[StopRecordingResponse]: - response = await self.client.stop_recording(type=self.call_type, id=self.id) + async def stop_recording( + self, + ) -> StreamResponse[StopRecordingResponse]: + response = await self.client.stop_recording( + type=self.call_type, + id=self.id, + ) self._sync_from_response(response.data) return response diff --git a/getstream/video/async_rest_client.py b/getstream/video/async_rest_client.py index 5485bec6..667082cb 100644 --- a/getstream/video/async_rest_client.py +++ b/getstream/video/async_rest_client.py @@ -312,7 +312,10 @@ async def go_live( 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, @@ -324,7 +327,10 @@ async def go_live( json = build_body_dict( 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, @@ -715,7 +721,10 @@ async def stop_live( 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, @@ -726,7 +735,10 @@ async def stop_live( } json = build_body_dict( 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, @@ -740,16 +752,20 @@ async def stop_live( @telemetry.operation_name("getstream.api.video.stop_recording") async def stop_recording( - self, type: str, id: str + self, + type: str, + id: str, ) -> StreamResponse[StopRecordingResponse]: path_params = { "type": type, "id": id, } + json = build_body_dict() return await self.post( "/api/v2/video/call/{type}/{id}/stop_recording", StopRecordingResponse, path_params=path_params, + json=json, ) @telemetry.operation_name("getstream.api.video.stop_transcription") @@ -871,6 +887,37 @@ async def delete_transcription( path_params=path_params, ) + @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, + ) + path_params = { + "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" ) @@ -910,10 +957,19 @@ async def query_call_session_participant_stats( 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(sort=sort, filter_conditions=filter_conditions) + 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, @@ -985,7 +1041,7 @@ async def create_call_type( name: str, external_storage: Optional[str] = None, grants: Optional[Dict[str, List[str]]] = None, - notification_settings: Optional[NotificationSettings] = None, + notification_settings: Optional[NotificationSettingsRequest] = None, settings: Optional[CallSettingsRequest] = None, ) -> StreamResponse[CreateCallTypeResponse]: json = build_body_dict( @@ -1025,7 +1081,7 @@ async def update_call_type( name: str, external_storage: Optional[str] = None, grants: Optional[Dict[str, List[str]]] = None, - notification_settings: Optional[NotificationSettings] = None, + notification_settings: Optional[NotificationSettingsRequest] = None, settings: Optional[CallSettingsRequest] = None, ) -> StreamResponse[UpdateCallTypeResponse]: path_params = { @@ -1053,7 +1109,7 @@ async def resolve_sip_inbound( self, sip_caller_number: str, sip_trunk_number: str, - challenge: SIPChallenge, + challenge: SIPChallengeRequest, sip_headers: Optional[Dict[str, str]] = None, ) -> StreamResponse[ResolveSipInboundResponse]: json = build_body_dict( diff --git a/getstream/video/call.py b/getstream/video/call.py index ed64664a..5dfef99d 100644 --- a/getstream/video/call.py +++ b/getstream/video/call.py @@ -147,7 +147,10 @@ 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, @@ -157,7 +160,10 @@ def go_live( 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, @@ -402,7 +408,10 @@ def stop_frame_recording(self) -> StreamResponse[StopFrameRecordingResponse]: 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, @@ -411,7 +420,10 @@ def 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, @@ -420,8 +432,13 @@ def stop_live( return response @attach_call_cid - def stop_recording(self) -> StreamResponse[StopRecordingResponse]: - response = self.client.stop_recording(type=self.call_type, id=self.id) + def stop_recording( + self, + ) -> StreamResponse[StopRecordingResponse]: + response = self.client.stop_recording( + type=self.call_type, + id=self.id, + ) self._sync_from_response(response.data) return response diff --git a/getstream/video/rest_client.py b/getstream/video/rest_client.py index ced4d3fa..e6a13c66 100644 --- a/getstream/video/rest_client.py +++ b/getstream/video/rest_client.py @@ -308,7 +308,10 @@ def go_live( 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, @@ -320,7 +323,10 @@ def go_live( json = build_body_dict( 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, @@ -711,7 +717,10 @@ def stop_live( 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, @@ -722,7 +731,10 @@ def stop_live( } json = build_body_dict( 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, @@ -736,16 +748,20 @@ def stop_live( @telemetry.operation_name("getstream.api.video.stop_recording") def stop_recording( - self, type: str, id: str + self, + type: str, + id: str, ) -> StreamResponse[StopRecordingResponse]: path_params = { "type": type, "id": id, } + json = build_body_dict() return self.post( "/api/v2/video/call/{type}/{id}/stop_recording", StopRecordingResponse, path_params=path_params, + json=json, ) @telemetry.operation_name("getstream.api.video.stop_transcription") @@ -867,6 +883,37 @@ def delete_transcription( path_params=path_params, ) + @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, + ) + path_params = { + "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" ) @@ -906,10 +953,19 @@ def query_call_session_participant_stats( 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(sort=sort, filter_conditions=filter_conditions) + 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, @@ -981,7 +1037,7 @@ def create_call_type( name: str, external_storage: Optional[str] = None, grants: Optional[Dict[str, List[str]]] = None, - notification_settings: Optional[NotificationSettings] = None, + notification_settings: Optional[NotificationSettingsRequest] = None, settings: Optional[CallSettingsRequest] = None, ) -> StreamResponse[CreateCallTypeResponse]: json = build_body_dict( @@ -1019,7 +1075,7 @@ def update_call_type( name: str, external_storage: Optional[str] = None, grants: Optional[Dict[str, List[str]]] = None, - notification_settings: Optional[NotificationSettings] = None, + notification_settings: Optional[NotificationSettingsRequest] = None, settings: Optional[CallSettingsRequest] = None, ) -> StreamResponse[UpdateCallTypeResponse]: path_params = { @@ -1047,7 +1103,7 @@ def resolve_sip_inbound( self, sip_caller_number: str, sip_trunk_number: str, - challenge: SIPChallenge, + challenge: SIPChallengeRequest, sip_headers: Optional[Dict[str, str]] = None, ) -> StreamResponse[ResolveSipInboundResponse]: json = build_body_dict( diff --git a/getstream/webhook.py b/getstream/webhook.py new file mode 100644 index 00000000..8dd9316c --- /dev/null +++ b/getstream/webhook.py @@ -0,0 +1,565 @@ +# Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +import hmac +import hashlib +import json +from typing import Union, Any, Dict +from .models.custom_event import CustomEvent +from .models.appeal_accepted_event import AppealAcceptedEvent +from .models.appeal_created_event import AppealCreatedEvent +from .models.appeal_rejected_event import AppealRejectedEvent +from .models.call_accepted_event import CallAcceptedEvent +from .models.blocked_user_event import BlockedUserEvent +from .models.closed_caption_event import ClosedCaptionEvent +from .models.call_closed_captions_failed_event import CallClosedCaptionsFailedEvent +from .models.call_closed_captions_started_event import CallClosedCaptionsStartedEvent +from .models.call_closed_captions_stopped_event import CallClosedCaptionsStoppedEvent +from .models.call_created_event import CallCreatedEvent +from .models.call_deleted_event import CallDeletedEvent +from .models.call_ended_event import CallEndedEvent +from .models.call_frame_recording_failed_event import CallFrameRecordingFailedEvent +from .models.call_frame_recording_frame_ready_event import ( + CallFrameRecordingFrameReadyEvent, +) +from .models.call_frame_recording_started_event import CallFrameRecordingStartedEvent +from .models.call_frame_recording_stopped_event import CallFrameRecordingStoppedEvent +from .models.call_hls_broadcasting_failed_event import CallHLSBroadcastingFailedEvent +from .models.call_hls_broadcasting_started_event import CallHLSBroadcastingStartedEvent +from .models.call_hls_broadcasting_stopped_event import CallHLSBroadcastingStoppedEvent +from .models.kicked_user_event import KickedUserEvent +from .models.call_live_started_event import CallLiveStartedEvent +from .models.call_member_added_event import CallMemberAddedEvent +from .models.call_member_removed_event import CallMemberRemovedEvent +from .models.call_member_updated_event import CallMemberUpdatedEvent +from .models.call_member_updated_permission_event import ( + CallMemberUpdatedPermissionEvent, +) +from .models.call_missed_event import CallMissedEvent +from .models.call_moderation_blur_event import CallModerationBlurEvent +from .models.call_moderation_warning_event import CallModerationWarningEvent +from .models.call_notification_event import CallNotificationEvent +from .models.permission_request_event import PermissionRequestEvent +from .models.updated_call_permissions_event import UpdatedCallPermissionsEvent +from .models.call_reaction_event import CallReactionEvent +from .models.call_recording_failed_event import CallRecordingFailedEvent +from .models.call_recording_ready_event import CallRecordingReadyEvent +from .models.call_recording_started_event import CallRecordingStartedEvent +from .models.call_recording_stopped_event import CallRecordingStoppedEvent +from .models.call_rejected_event import CallRejectedEvent +from .models.call_ring_event import CallRingEvent +from .models.call_rtmp_broadcast_failed_event import CallRtmpBroadcastFailedEvent +from .models.call_rtmp_broadcast_started_event import CallRtmpBroadcastStartedEvent +from .models.call_rtmp_broadcast_stopped_event import CallRtmpBroadcastStoppedEvent +from .models.call_session_ended_event import CallSessionEndedEvent +from .models.call_session_participant_counts_updated_event import ( + CallSessionParticipantCountsUpdatedEvent, +) +from .models.call_session_participant_joined_event import ( + CallSessionParticipantJoinedEvent, +) +from .models.call_session_participant_left_event import CallSessionParticipantLeftEvent +from .models.call_session_started_event import CallSessionStartedEvent +from .models.call_stats_report_ready_event import CallStatsReportReadyEvent +from .models.call_transcription_failed_event import CallTranscriptionFailedEvent +from .models.call_transcription_ready_event import CallTranscriptionReadyEvent +from .models.call_transcription_started_event import CallTranscriptionStartedEvent +from .models.call_transcription_stopped_event import CallTranscriptionStoppedEvent +from .models.unblocked_user_event import UnblockedUserEvent +from .models.call_updated_event import CallUpdatedEvent +from .models.call_user_feedback_submitted_event import CallUserFeedbackSubmittedEvent +from .models.call_user_muted_event import CallUserMutedEvent +from .models.campaign_completed_event import CampaignCompletedEvent +from .models.campaign_started_event import CampaignStartedEvent +from .models.channel_created_event import ChannelCreatedEvent +from .models.channel_deleted_event import ChannelDeletedEvent +from .models.channel_frozen_event import ChannelFrozenEvent +from .models.channel_hidden_event import ChannelHiddenEvent +from .models.max_streak_changed_event import MaxStreakChangedEvent +from .models.channel_muted_event import ChannelMutedEvent +from .models.channel_truncated_event import ChannelTruncatedEvent +from .models.channel_un_frozen_event import ChannelUnFrozenEvent +from .models.channel_unmuted_event import ChannelUnmutedEvent +from .models.channel_updated_event import ChannelUpdatedEvent +from .models.channel_visible_event import ChannelVisibleEvent +from .models.channel_batch_completed_event import ChannelBatchCompletedEvent +from .models.channel_batch_started_event import ChannelBatchStartedEvent +from .models.custom_video_event import CustomVideoEvent +from .models.async_export_error_event import AsyncExportErrorEvent +from .models.async_bulk_image_moderation_event import AsyncBulkImageModerationEvent +from .models.async_export_channels_event import AsyncExportChannelsEvent +from .models.async_export_moderation_logs_event import AsyncExportModerationLogsEvent +from .models.async_export_users_event import AsyncExportUsersEvent +from .models.activity_added_event import ActivityAddedEvent +from .models.activity_deleted_event import ActivityDeletedEvent +from .models.activity_feedback_event import ActivityFeedbackEvent +from .models.activity_mark_event import ActivityMarkEvent +from .models.activity_pinned_event import ActivityPinnedEvent +from .models.activity_reaction_added_event import ActivityReactionAddedEvent +from .models.activity_reaction_deleted_event import ActivityReactionDeletedEvent +from .models.activity_reaction_updated_event import ActivityReactionUpdatedEvent +from .models.activity_removed_from_feed_event import ActivityRemovedFromFeedEvent +from .models.activity_unpinned_event import ActivityUnpinnedEvent +from .models.activity_updated_event import ActivityUpdatedEvent +from .models.bookmark_added_event import BookmarkAddedEvent +from .models.bookmark_deleted_event import BookmarkDeletedEvent +from .models.bookmark_updated_event import BookmarkUpdatedEvent +from .models.bookmark_folder_deleted_event import BookmarkFolderDeletedEvent +from .models.bookmark_folder_updated_event import BookmarkFolderUpdatedEvent +from .models.comment_added_event import CommentAddedEvent +from .models.comment_deleted_event import CommentDeletedEvent +from .models.comment_reaction_added_event import CommentReactionAddedEvent +from .models.comment_reaction_deleted_event import CommentReactionDeletedEvent +from .models.comment_reaction_updated_event import CommentReactionUpdatedEvent +from .models.comment_updated_event import CommentUpdatedEvent +from .models.feed_created_event import FeedCreatedEvent +from .models.feed_deleted_event import FeedDeletedEvent +from .models.feed_updated_event import FeedUpdatedEvent +from .models.feed_group_changed_event import FeedGroupChangedEvent +from .models.feed_group_deleted_event import FeedGroupDeletedEvent +from .models.feed_member_added_event import FeedMemberAddedEvent +from .models.feed_member_removed_event import FeedMemberRemovedEvent +from .models.feed_member_updated_event import FeedMemberUpdatedEvent +from .models.follow_created_event import FollowCreatedEvent +from .models.follow_deleted_event import FollowDeletedEvent +from .models.follow_updated_event import FollowUpdatedEvent +from .models.notification_feed_updated_event import NotificationFeedUpdatedEvent +from .models.stories_feed_updated_event import StoriesFeedUpdatedEvent +from .models.flag_updated_event import FlagUpdatedEvent +from .models.member_added_event import MemberAddedEvent +from .models.member_removed_event import MemberRemovedEvent +from .models.member_updated_event import MemberUpdatedEvent +from .models.message_deleted_event import MessageDeletedEvent +from .models.message_flagged_event import MessageFlaggedEvent +from .models.message_new_event import MessageNewEvent +from .models.pending_message_event import PendingMessageEvent +from .models.message_read_event import MessageReadEvent +from .models.message_unblocked_event import MessageUnblockedEvent +from .models.message_undeleted_event import MessageUndeletedEvent +from .models.message_updated_event import MessageUpdatedEvent +from .models.moderation_custom_action_event import ModerationCustomActionEvent +from .models.moderation_flagged_event import ModerationFlaggedEvent +from .models.moderation_mark_reviewed_event import ModerationMarkReviewedEvent +from .models.moderation_check_completed_event import ModerationCheckCompletedEvent +from .models.notification_mark_unread_event import NotificationMarkUnreadEvent +from .models.reminder_notification_event import ReminderNotificationEvent +from .models.notification_thread_message_new_event import ( + NotificationThreadMessageNewEvent, +) +from .models.reaction_deleted_event import ReactionDeletedEvent +from .models.reaction_new_event import ReactionNewEvent +from .models.reaction_updated_event import ReactionUpdatedEvent +from .models.reminder_created_event import ReminderCreatedEvent +from .models.reminder_deleted_event import ReminderDeletedEvent +from .models.reminder_updated_event import ReminderUpdatedEvent +from .models.review_queue_item_new_event import ReviewQueueItemNewEvent +from .models.review_queue_item_updated_event import ReviewQueueItemUpdatedEvent +from .models.thread_updated_event import ThreadUpdatedEvent +from .models.user_banned_event import UserBannedEvent +from .models.user_deactivated_event import UserDeactivatedEvent +from .models.user_deleted_event import UserDeletedEvent +from .models.user_flagged_event import UserFlaggedEvent +from .models.user_messages_deleted_event import UserMessagesDeletedEvent +from .models.user_muted_event import UserMutedEvent +from .models.user_reactivated_event import UserReactivatedEvent +from .models.user_unbanned_event import UserUnbannedEvent +from .models.user_unmuted_event import UserUnmutedEvent +from .models.user_unread_reminder_event import UserUnreadReminderEvent +from .models.user_updated_event import UserUpdatedEvent + + +# Webhook event type constants +EVENT_TYPE_WILDCARD = "*" +EVENT_TYPE_APPEAL_ACCEPTED = "appeal.accepted" +EVENT_TYPE_APPEAL_CREATED = "appeal.created" +EVENT_TYPE_APPEAL_REJECTED = "appeal.rejected" +EVENT_TYPE_CALL_ACCEPTED = "call.accepted" +EVENT_TYPE_CALL_BLOCKED_USER = "call.blocked_user" +EVENT_TYPE_CALL_CLOSED_CAPTION = "call.closed_caption" +EVENT_TYPE_CALL_CLOSED_CAPTIONS_FAILED = "call.closed_captions_failed" +EVENT_TYPE_CALL_CLOSED_CAPTIONS_STARTED = "call.closed_captions_started" +EVENT_TYPE_CALL_CLOSED_CAPTIONS_STOPPED = "call.closed_captions_stopped" +EVENT_TYPE_CALL_CREATED = "call.created" +EVENT_TYPE_CALL_DELETED = "call.deleted" +EVENT_TYPE_CALL_ENDED = "call.ended" +EVENT_TYPE_CALL_FRAME_RECORDING_FAILED = "call.frame_recording_failed" +EVENT_TYPE_CALL_FRAME_RECORDING_READY = "call.frame_recording_ready" +EVENT_TYPE_CALL_FRAME_RECORDING_STARTED = "call.frame_recording_started" +EVENT_TYPE_CALL_FRAME_RECORDING_STOPPED = "call.frame_recording_stopped" +EVENT_TYPE_CALL_HLS_BROADCASTING_FAILED = "call.hls_broadcasting_failed" +EVENT_TYPE_CALL_HLS_BROADCASTING_STARTED = "call.hls_broadcasting_started" +EVENT_TYPE_CALL_HLS_BROADCASTING_STOPPED = "call.hls_broadcasting_stopped" +EVENT_TYPE_CALL_KICKED_USER = "call.kicked_user" +EVENT_TYPE_CALL_LIVE_STARTED = "call.live_started" +EVENT_TYPE_CALL_MEMBER_ADDED = "call.member_added" +EVENT_TYPE_CALL_MEMBER_REMOVED = "call.member_removed" +EVENT_TYPE_CALL_MEMBER_UPDATED = "call.member_updated" +EVENT_TYPE_CALL_MEMBER_UPDATED_PERMISSION = "call.member_updated_permission" +EVENT_TYPE_CALL_MISSED = "call.missed" +EVENT_TYPE_CALL_MODERATION_BLUR = "call.moderation_blur" +EVENT_TYPE_CALL_MODERATION_WARNING = "call.moderation_warning" +EVENT_TYPE_CALL_NOTIFICATION = "call.notification" +EVENT_TYPE_CALL_PERMISSION_REQUEST = "call.permission_request" +EVENT_TYPE_CALL_PERMISSIONS_UPDATED = "call.permissions_updated" +EVENT_TYPE_CALL_REACTION_NEW = "call.reaction_new" +EVENT_TYPE_CALL_RECORDING_FAILED = "call.recording_failed" +EVENT_TYPE_CALL_RECORDING_READY = "call.recording_ready" +EVENT_TYPE_CALL_RECORDING_STARTED = "call.recording_started" +EVENT_TYPE_CALL_RECORDING_STOPPED = "call.recording_stopped" +EVENT_TYPE_CALL_REJECTED = "call.rejected" +EVENT_TYPE_CALL_RING = "call.ring" +EVENT_TYPE_CALL_RTMP_BROADCAST_FAILED = "call.rtmp_broadcast_failed" +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_JOINED = "call.session_participant_joined" +EVENT_TYPE_CALL_SESSION_PARTICIPANT_LEFT = "call.session_participant_left" +EVENT_TYPE_CALL_SESSION_STARTED = "call.session_started" +EVENT_TYPE_CALL_STATS_REPORT_READY = "call.stats_report_ready" +EVENT_TYPE_CALL_TRANSCRIPTION_FAILED = "call.transcription_failed" +EVENT_TYPE_CALL_TRANSCRIPTION_READY = "call.transcription_ready" +EVENT_TYPE_CALL_TRANSCRIPTION_STARTED = "call.transcription_started" +EVENT_TYPE_CALL_TRANSCRIPTION_STOPPED = "call.transcription_stopped" +EVENT_TYPE_CALL_UNBLOCKED_USER = "call.unblocked_user" +EVENT_TYPE_CALL_UPDATED = "call.updated" +EVENT_TYPE_CALL_USER_FEEDBACK_SUBMITTED = "call.user_feedback_submitted" +EVENT_TYPE_CALL_USER_MUTED = "call.user_muted" +EVENT_TYPE_CAMPAIGN_COMPLETED = "campaign.completed" +EVENT_TYPE_CAMPAIGN_STARTED = "campaign.started" +EVENT_TYPE_CHANNEL_CREATED = "channel.created" +EVENT_TYPE_CHANNEL_DELETED = "channel.deleted" +EVENT_TYPE_CHANNEL_FROZEN = "channel.frozen" +EVENT_TYPE_CHANNEL_HIDDEN = "channel.hidden" +EVENT_TYPE_CHANNEL_MAX_STREAK_CHANGED = "channel.max_streak_changed" +EVENT_TYPE_CHANNEL_MUTED = "channel.muted" +EVENT_TYPE_CHANNEL_TRUNCATED = "channel.truncated" +EVENT_TYPE_CHANNEL_UNFROZEN = "channel.unfrozen" +EVENT_TYPE_CHANNEL_UNMUTED = "channel.unmuted" +EVENT_TYPE_CHANNEL_UPDATED = "channel.updated" +EVENT_TYPE_CHANNEL_VISIBLE = "channel.visible" +EVENT_TYPE_CHANNEL_BATCH_UPDATE_COMPLETED = "channel_batch_update.completed" +EVENT_TYPE_CHANNEL_BATCH_UPDATE_STARTED = "channel_batch_update.started" +EVENT_TYPE_CUSTOM = "custom" +EVENT_TYPE_EXPORT_BULK_IMAGE_MODERATION_ERROR = "export.bulk_image_moderation.error" +EVENT_TYPE_EXPORT_BULK_IMAGE_MODERATION_SUCCESS = "export.bulk_image_moderation.success" +EVENT_TYPE_EXPORT_CHANNELS_ERROR = "export.channels.error" +EVENT_TYPE_EXPORT_CHANNELS_SUCCESS = "export.channels.success" +EVENT_TYPE_EXPORT_MODERATION_LOGS_ERROR = "export.moderation_logs.error" +EVENT_TYPE_EXPORT_MODERATION_LOGS_SUCCESS = "export.moderation_logs.success" +EVENT_TYPE_EXPORT_USERS_ERROR = "export.users.error" +EVENT_TYPE_EXPORT_USERS_SUCCESS = "export.users.success" +EVENT_TYPE_FEEDS_ACTIVITY_ADDED = "feeds.activity.added" +EVENT_TYPE_FEEDS_ACTIVITY_DELETED = "feeds.activity.deleted" +EVENT_TYPE_FEEDS_ACTIVITY_FEEDBACK = "feeds.activity.feedback" +EVENT_TYPE_FEEDS_ACTIVITY_MARKED = "feeds.activity.marked" +EVENT_TYPE_FEEDS_ACTIVITY_PINNED = "feeds.activity.pinned" +EVENT_TYPE_FEEDS_ACTIVITY_REACTION_ADDED = "feeds.activity.reaction.added" +EVENT_TYPE_FEEDS_ACTIVITY_REACTION_DELETED = "feeds.activity.reaction.deleted" +EVENT_TYPE_FEEDS_ACTIVITY_REACTION_UPDATED = "feeds.activity.reaction.updated" +EVENT_TYPE_FEEDS_ACTIVITY_REMOVED_FROM_FEED = "feeds.activity.removed_from_feed" +EVENT_TYPE_FEEDS_ACTIVITY_UNPINNED = "feeds.activity.unpinned" +EVENT_TYPE_FEEDS_ACTIVITY_UPDATED = "feeds.activity.updated" +EVENT_TYPE_FEEDS_BOOKMARK_ADDED = "feeds.bookmark.added" +EVENT_TYPE_FEEDS_BOOKMARK_DELETED = "feeds.bookmark.deleted" +EVENT_TYPE_FEEDS_BOOKMARK_UPDATED = "feeds.bookmark.updated" +EVENT_TYPE_FEEDS_BOOKMARK_FOLDER_DELETED = "feeds.bookmark_folder.deleted" +EVENT_TYPE_FEEDS_BOOKMARK_FOLDER_UPDATED = "feeds.bookmark_folder.updated" +EVENT_TYPE_FEEDS_COMMENT_ADDED = "feeds.comment.added" +EVENT_TYPE_FEEDS_COMMENT_DELETED = "feeds.comment.deleted" +EVENT_TYPE_FEEDS_COMMENT_REACTION_ADDED = "feeds.comment.reaction.added" +EVENT_TYPE_FEEDS_COMMENT_REACTION_DELETED = "feeds.comment.reaction.deleted" +EVENT_TYPE_FEEDS_COMMENT_REACTION_UPDATED = "feeds.comment.reaction.updated" +EVENT_TYPE_FEEDS_COMMENT_UPDATED = "feeds.comment.updated" +EVENT_TYPE_FEEDS_FEED_CREATED = "feeds.feed.created" +EVENT_TYPE_FEEDS_FEED_DELETED = "feeds.feed.deleted" +EVENT_TYPE_FEEDS_FEED_UPDATED = "feeds.feed.updated" +EVENT_TYPE_FEEDS_FEED_GROUP_CHANGED = "feeds.feed_group.changed" +EVENT_TYPE_FEEDS_FEED_GROUP_DELETED = "feeds.feed_group.deleted" +EVENT_TYPE_FEEDS_FEED_MEMBER_ADDED = "feeds.feed_member.added" +EVENT_TYPE_FEEDS_FEED_MEMBER_REMOVED = "feeds.feed_member.removed" +EVENT_TYPE_FEEDS_FEED_MEMBER_UPDATED = "feeds.feed_member.updated" +EVENT_TYPE_FEEDS_FOLLOW_CREATED = "feeds.follow.created" +EVENT_TYPE_FEEDS_FOLLOW_DELETED = "feeds.follow.deleted" +EVENT_TYPE_FEEDS_FOLLOW_UPDATED = "feeds.follow.updated" +EVENT_TYPE_FEEDS_NOTIFICATION_FEED_UPDATED = "feeds.notification_feed.updated" +EVENT_TYPE_FEEDS_STORIES_FEED_UPDATED = "feeds.stories_feed.updated" +EVENT_TYPE_FLAG_UPDATED = "flag.updated" +EVENT_TYPE_MEMBER_ADDED = "member.added" +EVENT_TYPE_MEMBER_REMOVED = "member.removed" +EVENT_TYPE_MEMBER_UPDATED = "member.updated" +EVENT_TYPE_MESSAGE_DELETED = "message.deleted" +EVENT_TYPE_MESSAGE_FLAGGED = "message.flagged" +EVENT_TYPE_MESSAGE_NEW = "message.new" +EVENT_TYPE_MESSAGE_PENDING = "message.pending" +EVENT_TYPE_MESSAGE_READ = "message.read" +EVENT_TYPE_MESSAGE_UNBLOCKED = "message.unblocked" +EVENT_TYPE_MESSAGE_UNDELETED = "message.undeleted" +EVENT_TYPE_MESSAGE_UPDATED = "message.updated" +EVENT_TYPE_MODERATION_CUSTOM_ACTION = "moderation.custom_action" +EVENT_TYPE_MODERATION_FLAGGED = "moderation.flagged" +EVENT_TYPE_MODERATION_MARK_REVIEWED = "moderation.mark_reviewed" +EVENT_TYPE_MODERATION_CHECK_COMPLETED = "moderation_check.completed" +EVENT_TYPE_NOTIFICATION_MARK_UNREAD = "notification.mark_unread" +EVENT_TYPE_NOTIFICATION_REMINDER_DUE = "notification.reminder_due" +EVENT_TYPE_NOTIFICATION_THREAD_MESSAGE_NEW = "notification.thread_message_new" +EVENT_TYPE_REACTION_DELETED = "reaction.deleted" +EVENT_TYPE_REACTION_NEW = "reaction.new" +EVENT_TYPE_REACTION_UPDATED = "reaction.updated" +EVENT_TYPE_REMINDER_CREATED = "reminder.created" +EVENT_TYPE_REMINDER_DELETED = "reminder.deleted" +EVENT_TYPE_REMINDER_UPDATED = "reminder.updated" +EVENT_TYPE_REVIEW_QUEUE_ITEM_NEW = "review_queue_item.new" +EVENT_TYPE_REVIEW_QUEUE_ITEM_UPDATED = "review_queue_item.updated" +EVENT_TYPE_THREAD_UPDATED = "thread.updated" +EVENT_TYPE_USER_BANNED = "user.banned" +EVENT_TYPE_USER_DEACTIVATED = "user.deactivated" +EVENT_TYPE_USER_DELETED = "user.deleted" +EVENT_TYPE_USER_FLAGGED = "user.flagged" +EVENT_TYPE_USER_MESSAGES_DELETED = "user.messages.deleted" +EVENT_TYPE_USER_MUTED = "user.muted" +EVENT_TYPE_USER_REACTIVATED = "user.reactivated" +EVENT_TYPE_USER_UNBANNED = "user.unbanned" +EVENT_TYPE_USER_UNMUTED = "user.unmuted" +EVENT_TYPE_USER_UNREAD_MESSAGE_REMINDER = "user.unread_message_reminder" +EVENT_TYPE_USER_UPDATED = "user.updated" + + +def get_event_type(raw_event: Union[bytes, str, Dict[str, Any]]) -> str: + """ + Extract the event type from a raw webhook payload. + + Args: + raw_event: The raw webhook payload + + Returns: + The event type string (e.g., "message.new"), or empty string if parsing fails + """ + if isinstance(raw_event, dict): + return raw_event.get("type", "") + + try: + if isinstance(raw_event, bytes): + raw_event = raw_event.decode("utf-8") + data = json.loads(raw_event) + return data.get("type", "") + except (json.JSONDecodeError, UnicodeDecodeError, AttributeError): + return "" + + +def parse_webhook_event(raw_event: Union[bytes, str, Dict[str, Any]]) -> Any: + """ + Deserialize a raw webhook payload into a typed event object. + + Args: + raw_event: The raw webhook payload + + Returns: + A typed event object corresponding to the event type + + Raises: + ValueError: If the event type is unknown or deserialization fails + """ + try: + if isinstance(raw_event, dict): + data = raw_event + elif isinstance(raw_event, bytes): + 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}") + + event_type = data.get("type") + if not event_type: + raise ValueError("Webhook payload missing 'type' field") + + event_class = _get_event_class(event_type) + if event_class is None: + raise ValueError(f"Unknown webhook event type: {event_type}") + + return event_class(**data) + + +def _get_event_class(event_type: str): + """Map event type to event class.""" + event_map = { + "*": CustomEvent, + "appeal.accepted": AppealAcceptedEvent, + "appeal.created": AppealCreatedEvent, + "appeal.rejected": AppealRejectedEvent, + "call.accepted": CallAcceptedEvent, + "call.blocked_user": BlockedUserEvent, + "call.closed_caption": ClosedCaptionEvent, + "call.closed_captions_failed": CallClosedCaptionsFailedEvent, + "call.closed_captions_started": CallClosedCaptionsStartedEvent, + "call.closed_captions_stopped": CallClosedCaptionsStoppedEvent, + "call.created": CallCreatedEvent, + "call.deleted": CallDeletedEvent, + "call.ended": CallEndedEvent, + "call.frame_recording_failed": CallFrameRecordingFailedEvent, + "call.frame_recording_ready": CallFrameRecordingFrameReadyEvent, + "call.frame_recording_started": CallFrameRecordingStartedEvent, + "call.frame_recording_stopped": CallFrameRecordingStoppedEvent, + "call.hls_broadcasting_failed": CallHLSBroadcastingFailedEvent, + "call.hls_broadcasting_started": CallHLSBroadcastingStartedEvent, + "call.hls_broadcasting_stopped": CallHLSBroadcastingStoppedEvent, + "call.kicked_user": KickedUserEvent, + "call.live_started": CallLiveStartedEvent, + "call.member_added": CallMemberAddedEvent, + "call.member_removed": CallMemberRemovedEvent, + "call.member_updated": CallMemberUpdatedEvent, + "call.member_updated_permission": CallMemberUpdatedPermissionEvent, + "call.missed": CallMissedEvent, + "call.moderation_blur": CallModerationBlurEvent, + "call.moderation_warning": CallModerationWarningEvent, + "call.notification": CallNotificationEvent, + "call.permission_request": PermissionRequestEvent, + "call.permissions_updated": UpdatedCallPermissionsEvent, + "call.reaction_new": CallReactionEvent, + "call.recording_failed": CallRecordingFailedEvent, + "call.recording_ready": CallRecordingReadyEvent, + "call.recording_started": CallRecordingStartedEvent, + "call.recording_stopped": CallRecordingStoppedEvent, + "call.rejected": CallRejectedEvent, + "call.ring": CallRingEvent, + "call.rtmp_broadcast_failed": CallRtmpBroadcastFailedEvent, + "call.rtmp_broadcast_started": CallRtmpBroadcastStartedEvent, + "call.rtmp_broadcast_stopped": CallRtmpBroadcastStoppedEvent, + "call.session_ended": CallSessionEndedEvent, + "call.session_participant_count_updated": CallSessionParticipantCountsUpdatedEvent, + "call.session_participant_joined": CallSessionParticipantJoinedEvent, + "call.session_participant_left": CallSessionParticipantLeftEvent, + "call.session_started": CallSessionStartedEvent, + "call.stats_report_ready": CallStatsReportReadyEvent, + "call.transcription_failed": CallTranscriptionFailedEvent, + "call.transcription_ready": CallTranscriptionReadyEvent, + "call.transcription_started": CallTranscriptionStartedEvent, + "call.transcription_stopped": CallTranscriptionStoppedEvent, + "call.unblocked_user": UnblockedUserEvent, + "call.updated": CallUpdatedEvent, + "call.user_feedback_submitted": CallUserFeedbackSubmittedEvent, + "call.user_muted": CallUserMutedEvent, + "campaign.completed": CampaignCompletedEvent, + "campaign.started": CampaignStartedEvent, + "channel.created": ChannelCreatedEvent, + "channel.deleted": ChannelDeletedEvent, + "channel.frozen": ChannelFrozenEvent, + "channel.hidden": ChannelHiddenEvent, + "channel.max_streak_changed": MaxStreakChangedEvent, + "channel.muted": ChannelMutedEvent, + "channel.truncated": ChannelTruncatedEvent, + "channel.unfrozen": ChannelUnFrozenEvent, + "channel.unmuted": ChannelUnmutedEvent, + "channel.updated": ChannelUpdatedEvent, + "channel.visible": ChannelVisibleEvent, + "channel_batch_update.completed": ChannelBatchCompletedEvent, + "channel_batch_update.started": ChannelBatchStartedEvent, + "custom": CustomVideoEvent, + "export.bulk_image_moderation.error": AsyncExportErrorEvent, + "export.bulk_image_moderation.success": AsyncBulkImageModerationEvent, + "export.channels.error": AsyncExportErrorEvent, + "export.channels.success": AsyncExportChannelsEvent, + "export.moderation_logs.error": AsyncExportErrorEvent, + "export.moderation_logs.success": AsyncExportModerationLogsEvent, + "export.users.error": AsyncExportErrorEvent, + "export.users.success": AsyncExportUsersEvent, + "feeds.activity.added": ActivityAddedEvent, + "feeds.activity.deleted": ActivityDeletedEvent, + "feeds.activity.feedback": ActivityFeedbackEvent, + "feeds.activity.marked": ActivityMarkEvent, + "feeds.activity.pinned": ActivityPinnedEvent, + "feeds.activity.reaction.added": ActivityReactionAddedEvent, + "feeds.activity.reaction.deleted": ActivityReactionDeletedEvent, + "feeds.activity.reaction.updated": ActivityReactionUpdatedEvent, + "feeds.activity.removed_from_feed": ActivityRemovedFromFeedEvent, + "feeds.activity.unpinned": ActivityUnpinnedEvent, + "feeds.activity.updated": ActivityUpdatedEvent, + "feeds.bookmark.added": BookmarkAddedEvent, + "feeds.bookmark.deleted": BookmarkDeletedEvent, + "feeds.bookmark.updated": BookmarkUpdatedEvent, + "feeds.bookmark_folder.deleted": BookmarkFolderDeletedEvent, + "feeds.bookmark_folder.updated": BookmarkFolderUpdatedEvent, + "feeds.comment.added": CommentAddedEvent, + "feeds.comment.deleted": CommentDeletedEvent, + "feeds.comment.reaction.added": CommentReactionAddedEvent, + "feeds.comment.reaction.deleted": CommentReactionDeletedEvent, + "feeds.comment.reaction.updated": CommentReactionUpdatedEvent, + "feeds.comment.updated": CommentUpdatedEvent, + "feeds.feed.created": FeedCreatedEvent, + "feeds.feed.deleted": FeedDeletedEvent, + "feeds.feed.updated": FeedUpdatedEvent, + "feeds.feed_group.changed": FeedGroupChangedEvent, + "feeds.feed_group.deleted": FeedGroupDeletedEvent, + "feeds.feed_member.added": FeedMemberAddedEvent, + "feeds.feed_member.removed": FeedMemberRemovedEvent, + "feeds.feed_member.updated": FeedMemberUpdatedEvent, + "feeds.follow.created": FollowCreatedEvent, + "feeds.follow.deleted": FollowDeletedEvent, + "feeds.follow.updated": FollowUpdatedEvent, + "feeds.notification_feed.updated": NotificationFeedUpdatedEvent, + "feeds.stories_feed.updated": StoriesFeedUpdatedEvent, + "flag.updated": FlagUpdatedEvent, + "member.added": MemberAddedEvent, + "member.removed": MemberRemovedEvent, + "member.updated": MemberUpdatedEvent, + "message.deleted": MessageDeletedEvent, + "message.flagged": MessageFlaggedEvent, + "message.new": MessageNewEvent, + "message.pending": PendingMessageEvent, + "message.read": MessageReadEvent, + "message.unblocked": MessageUnblockedEvent, + "message.undeleted": MessageUndeletedEvent, + "message.updated": MessageUpdatedEvent, + "moderation.custom_action": ModerationCustomActionEvent, + "moderation.flagged": ModerationFlaggedEvent, + "moderation.mark_reviewed": ModerationMarkReviewedEvent, + "moderation_check.completed": ModerationCheckCompletedEvent, + "notification.mark_unread": NotificationMarkUnreadEvent, + "notification.reminder_due": ReminderNotificationEvent, + "notification.thread_message_new": NotificationThreadMessageNewEvent, + "reaction.deleted": ReactionDeletedEvent, + "reaction.new": ReactionNewEvent, + "reaction.updated": ReactionUpdatedEvent, + "reminder.created": ReminderCreatedEvent, + "reminder.deleted": ReminderDeletedEvent, + "reminder.updated": ReminderUpdatedEvent, + "review_queue_item.new": ReviewQueueItemNewEvent, + "review_queue_item.updated": ReviewQueueItemUpdatedEvent, + "thread.updated": ThreadUpdatedEvent, + "user.banned": UserBannedEvent, + "user.deactivated": UserDeactivatedEvent, + "user.deleted": UserDeletedEvent, + "user.flagged": UserFlaggedEvent, + "user.messages.deleted": UserMessagesDeletedEvent, + "user.muted": UserMutedEvent, + "user.reactivated": UserReactivatedEvent, + "user.unbanned": UserUnbannedEvent, + "user.unmuted": UserUnmutedEvent, + "user.unread_message_reminder": UserUnreadReminderEvent, + "user.updated": UserUpdatedEvent, + } + return event_map.get(event_type) + + +def verify_webhook_signature( + body: Union[bytes, str], signature: str, secret: str +) -> bool: + """ + Verify the HMAC-SHA256 signature of a webhook payload. + + Args: + body: The raw request body (bytes or UTF-8 string) + signature: The signature from the X-Signature header + secret: Your webhook secret (found in the Stream Dashboard) + + Returns: + True if the signature is valid, False otherwise + """ + if isinstance(body, str): + body = body.encode("utf-8") + + h = hmac.new(secret.encode("utf-8"), body, hashlib.sha256) + expected = h.hexdigest() + return hmac.compare_digest(signature, expected)