diff --git a/generate.sh b/generate.sh index ad808bb6..af51cd70 100755 --- a/generate.sh +++ b/generate.sh @@ -20,4 +20,4 @@ set -ex ( cd $SOURCE_PATH ; make openapi ; go run ./cmd/chat-manager openapi generate-client --language python --spec ./releases/v2/serverside-api.yaml --output ../stream-py/getstream/ ) # lint generated code with ruff -poetry run ruff format getstream/ tests/ +uv run ruff format getstream/ tests/ diff --git a/getstream/chat/rest_client.py b/getstream/chat/rest_client.py index 59ac94e3..1957ac81 100644 --- a/getstream/chat/rest_client.py +++ b/getstream/chat/rest_client.py @@ -26,24 +26,40 @@ def query_campaigns( limit: Optional[int] = None, next: Optional[str] = None, prev: Optional[str] = None, + user_limit: Optional[int] = None, sort: Optional[List[SortParamRequest]] = None, filter: Optional[Dict[str, object]] = None, ) -> StreamResponse[QueryCampaignsResponse]: json = build_body_dict( - limit=limit, next=next, prev=prev, sort=sort, filter=filter + limit=limit, + next=next, + prev=prev, + user_limit=user_limit, + sort=sort, + filter=filter, ) return self.post( "/api/v2/chat/campaigns/query", QueryCampaignsResponse, json=json ) - def get_campaign(self, id: str) -> StreamResponse[GetCampaignResponse]: + def get_campaign( + self, + id: str, + prev: Optional[str] = None, + next: Optional[str] = None, + limit: Optional[int] = None, + ) -> StreamResponse[GetCampaignResponse]: + query_params = build_query_param(prev=prev, next=next, limit=limit) path_params = { "id": id, } return self.get( - "/api/v2/chat/campaigns/{id}", GetCampaignResponse, path_params=path_params + "/api/v2/chat/campaigns/{id}", + GetCampaignResponse, + query_params=query_params, + path_params=path_params, ) def start_campaign( @@ -245,6 +261,46 @@ def update_channel( json=json, ) + def delete_draft( + self, + type: str, + id: str, + parent_id: Optional[str] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[Response]: + query_params = build_query_param(parent_id=parent_id, user_id=user_id) + path_params = { + "type": type, + "id": id, + } + + return self.delete( + "/api/v2/chat/channels/{type}/{id}/draft", + Response, + query_params=query_params, + path_params=path_params, + ) + + def get_draft( + self, + type: str, + id: str, + parent_id: Optional[str] = None, + user_id: Optional[str] = None, + ) -> StreamResponse[GetDraftResponse]: + query_params = build_query_param(parent_id=parent_id, user_id=user_id) + path_params = { + "type": type, + "id": id, + } + + return self.get( + "/api/v2/chat/channels/{type}/{id}/draft", + GetDraftResponse, + query_params=query_params, + path_params=path_params, + ) + def send_event( self, type: str, id: str, event: EventRequest ) -> StreamResponse[EventResponse]: @@ -357,22 +413,23 @@ def upload_image( def update_member_partial( self, - user_id: str, type: str, id: str, + user_id: Optional[str] = None, unset: Optional[List[str]] = None, set: Optional[Dict[str, object]] = None, ) -> StreamResponse[UpdateMemberPartialResponse]: + query_params = build_query_param(user_id=user_id) path_params = { - "user_id": user_id, "type": type, "id": id, } json = build_body_dict(unset=unset, set=set) return self.patch( - "/api/v2/chat/channels/{type}/{id}/member/{user_id}", + "/api/v2/chat/channels/{type}/{id}/member", UpdateMemberPartialResponse, + query_params=query_params, path_params=path_params, json=json, ) @@ -773,6 +830,28 @@ def update_command( json=json, ) + def query_drafts( + self, + limit: Optional[int] = None, + next: Optional[str] = None, + prev: Optional[str] = None, + user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, + user: Optional[UserRequest] = None, + ) -> StreamResponse[QueryDraftsResponse]: + json = build_body_dict( + limit=limit, + next=next, + prev=prev, + user_id=user_id, + sort=sort, + filter=filter, + user=user, + ) + + return self.post("/api/v2/chat/drafts/query", QueryDraftsResponse, json=json) + def export_channels( self, channels: List[ChannelExport], @@ -795,19 +874,6 @@ def export_channels( "/api/v2/chat/export_channels", ExportChannelsResponse, json=json ) - def get_export_channels_status( - self, id: str - ) -> StreamResponse[GetExportChannelsStatusResponse]: - path_params = { - "id": id, - } - - return self.get( - "/api/v2/chat/export_channels/{id}", - GetExportChannelsStatusResponse, - path_params=path_params, - ) - def query_members( self, payload: Optional[QueryMembersPayload] = None ) -> StreamResponse[MembersResponse]: @@ -1542,6 +1608,8 @@ def query_threads( prev: Optional[str] = None, reply_limit: Optional[int] = None, user_id: Optional[str] = None, + sort: Optional[List[SortParamRequest]] = None, + filter: Optional[Dict[str, object]] = None, user: Optional[UserRequest] = None, ) -> StreamResponse[QueryThreadsResponse]: json = build_body_dict( @@ -1552,6 +1620,8 @@ def query_threads( prev=prev, reply_limit=reply_limit, user_id=user_id, + sort=sort, + filter=filter, user=user, ) diff --git a/getstream/common/rest_client.py b/getstream/common/rest_client.py index ff327ca5..5dca77c3 100644 --- a/getstream/common/rest_client.py +++ b/getstream/common/rest_client.py @@ -37,6 +37,7 @@ def update_app( enforce_unique_usernames: Optional[str] = None, feeds_moderation_enabled: Optional[bool] = None, feeds_v2_region: Optional[str] = None, + guest_user_creation_disabled: Optional[bool] = None, image_moderation_enabled: Optional[bool] = None, migrate_permissions_to_v2: Optional[bool] = None, moderation_enabled: Optional[bool] = None, @@ -81,6 +82,7 @@ def update_app( enforce_unique_usernames=enforce_unique_usernames, feeds_moderation_enabled=feeds_moderation_enabled, feeds_v2_region=feeds_v2_region, + guest_user_creation_disabled=guest_user_creation_disabled, image_moderation_enabled=image_moderation_enabled, migrate_permissions_to_v2=migrate_permissions_to_v2, moderation_enabled=moderation_enabled, diff --git a/getstream/models/__init__.py b/getstream/models/__init__.py index f20ccde3..a33b2db1 100644 --- a/getstream/models/__init__.py +++ b/getstream/models/__init__.py @@ -12,6 +12,7 @@ @dataclass class AIImageConfig(DataClassJsonMixin): enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) + ocr_rules: "List[OCRRule]" = dc_field(metadata=dc_config(field_name="ocr_rules")) rules: "List[AWSRekognitionRule]" = dc_field(metadata=dc_config(field_name="rules")) _async: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="async") @@ -199,16 +200,6 @@ class ActionLogResponse(DataClassJsonMixin): ) -@dataclass -class AggregatedStats(DataClassJsonMixin): - publisher_aggregate_stats: "Optional[PublisherAggregateStats]" = dc_field( - default=None, metadata=dc_config(field_name="publisher_aggregate_stats") - ) - turn: "Optional[TURNAggregatedStats]" = dc_field( - default=None, metadata=dc_config(field_name="turn") - ) - - @dataclass class AnyEvent(DataClassJsonMixin): created_at: datetime = dc_field( @@ -246,6 +237,9 @@ class AppResponseFields(DataClassJsonMixin): enforce_unique_usernames: str = dc_field( metadata=dc_config(field_name="enforce_unique_usernames") ) + guest_user_creation_disabled: bool = dc_field( + metadata=dc_config(field_name="guest_user_creation_disabled") + ) image_moderation_enabled: bool = dc_field( metadata=dc_config(field_name="image_moderation_enabled") ) @@ -331,6 +325,178 @@ class AppResponseFields(DataClassJsonMixin): ) +@dataclass +class AsyncExportChannelsEvent(DataClassJsonMixin): + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + finished_at: datetime = dc_field( + metadata=dc_config( + field_name="finished_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + started_at: datetime = dc_field( + metadata=dc_config( + field_name="started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + task_id: str = dc_field(metadata=dc_config(field_name="task_id")) + url: str = dc_field(metadata=dc_config(field_name="url")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + type: str = dc_field( + default="export.channels.success", metadata=dc_config(field_name="type") + ) + received_at: 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 AsyncExportErrorEvent(DataClassJsonMixin): + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + error: str = dc_field(metadata=dc_config(field_name="error")) + finished_at: datetime = dc_field( + metadata=dc_config( + field_name="finished_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + started_at: datetime = dc_field( + metadata=dc_config( + field_name="started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + task_id: str = dc_field(metadata=dc_config(field_name="task_id")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + type: str = dc_field( + default="export.moderation_logs.error", 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 AsyncExportModerationLogsEvent(DataClassJsonMixin): + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + finished_at: datetime = dc_field( + metadata=dc_config( + field_name="finished_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + started_at: datetime = dc_field( + metadata=dc_config( + field_name="started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + task_id: str = dc_field(metadata=dc_config(field_name="task_id")) + url: str = dc_field(metadata=dc_config(field_name="url")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + type: str = dc_field( + default="export.moderation_logs.success", metadata=dc_config(field_name="type") + ) + received_at: 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 AsyncExportUsersEvent(DataClassJsonMixin): + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + finished_at: datetime = dc_field( + metadata=dc_config( + field_name="finished_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + started_at: datetime = dc_field( + metadata=dc_config( + field_name="started_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + task_id: str = dc_field(metadata=dc_config(field_name="task_id")) + url: str = dc_field(metadata=dc_config(field_name="url")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + type: str = dc_field( + default="export.users.success", metadata=dc_config(field_name="type") + ) + received_at: 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 AsyncModerationCallbackConfig(DataClassJsonMixin): mode: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="mode")) @@ -1031,26 +1197,6 @@ class CallEndedEvent(DataClassJsonMixin): ) -@dataclass -class CallEvent(DataClassJsonMixin): - description: str = dc_field(metadata=dc_config(field_name="description")) - end_timestamp: int = dc_field(metadata=dc_config(field_name="end_timestamp")) - internal: bool = dc_field(metadata=dc_config(field_name="internal")) - kind: str = dc_field(metadata=dc_config(field_name="kind")) - severity: int = dc_field(metadata=dc_config(field_name="severity")) - timestamp: int = dc_field(metadata=dc_config(field_name="timestamp")) - type: str = dc_field(metadata=dc_config(field_name="type")) - category: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="category") - ) - component: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="component") - ) - issue_tags: Optional[List[str]] = dc_field( - default=None, metadata=dc_config(field_name="issue_tags") - ) - - @dataclass class CallFrameRecordingFailedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) @@ -1377,6 +1523,7 @@ class CallRecording(DataClassJsonMixin): ) ) filename: str = dc_field(metadata=dc_config(field_name="filename")) + session_id: str = dc_field(metadata=dc_config(field_name="session_id")) start_time: datetime = dc_field( metadata=dc_config( field_name="start_time", @@ -1503,6 +1650,9 @@ class CallReportResponse(DataClassJsonMixin): @dataclass class CallRequest(DataClassJsonMixin): + channel_cid: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_cid") + ) created_by_id: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="created_by_id") ) @@ -1571,6 +1721,9 @@ class CallResponse(DataClassJsonMixin): settings: "CallSettingsResponse" = dc_field( metadata=dc_config(field_name="settings") ) + channel_cid: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="channel_cid") + ) ended_at: Optional[datetime] = dc_field( default=None, metadata=dc_config( @@ -1961,6 +2114,23 @@ class CallStateResponseFields(DataClassJsonMixin): call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) +@dataclass +class CallStatsReportReadyEvent(DataClassJsonMixin): + call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + session_id: str = dc_field(metadata=dc_config(field_name="session_id")) + type: str = dc_field( + default="call.stats_report_ready", metadata=dc_config(field_name="type") + ) + + @dataclass class CallStatsReportSummaryResponse(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) @@ -1994,11 +2164,6 @@ class CallStatsReportSummaryResponse(DataClassJsonMixin): ) -@dataclass -class CallTimeline(DataClassJsonMixin): - events: "List[CallEvent]" = dc_field(metadata=dc_config(field_name="events")) - - @dataclass class CallTranscription(DataClassJsonMixin): end_time: datetime = dc_field( @@ -2103,6 +2268,9 @@ class CallType(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + enable_live_insights: bool = dc_field( + metadata=dc_config(field_name="EnableLiveInsights") + ) external_storage: str = dc_field(metadata=dc_config(field_name="ExternalStorage")) name: str = dc_field(metadata=dc_config(field_name="Name")) pk: int = dc_field(metadata=dc_config(field_name="PK")) @@ -2171,6 +2339,35 @@ class CallUpdatedEvent(DataClassJsonMixin): type: str = dc_field(default="call.updated", metadata=dc_config(field_name="type")) +@dataclass +class CallUserFeedbackSubmittedEvent(DataClassJsonMixin): + call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + rating: int = dc_field(metadata=dc_config(field_name="rating")) + session_id: str = dc_field(metadata=dc_config(field_name="session_id")) + user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) + type: str = dc_field( + default="call.user_feedback_submitted", metadata=dc_config(field_name="type") + ) + reason: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="reason") + ) + sdk: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="sdk")) + sdk_version: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="sdk_version") + ) + custom: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="custom") + ) + + @dataclass class CallUserMutedEvent(DataClassJsonMixin): call_cid: str = dc_field(metadata=dc_config(field_name="call_cid")) @@ -2268,6 +2465,7 @@ class CampaignResponse(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) sender_id: str = dc_field(metadata=dc_config(field_name="sender_id")) sender_mode: str = dc_field(metadata=dc_config(field_name="sender_mode")) + show_channels: bool = dc_field(metadata=dc_config(field_name="show_channels")) skip_push: bool = dc_field(metadata=dc_config(field_name="skip_push")) skip_webhook: bool = dc_field(metadata=dc_config(field_name="skip_webhook")) status: str = dc_field(metadata=dc_config(field_name="status")) @@ -2366,6 +2564,8 @@ class CampaignStatsResponse(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ) ) + stats_users_read: int = dc_field(metadata=dc_config(field_name="stats_users_read")) + stats_users_sent: int = dc_field(metadata=dc_config(field_name="stats_users_sent")) @dataclass @@ -2423,6 +2623,9 @@ class Channel(DataClassJsonMixin): 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, metadata=dc_config( @@ -3050,6 +3253,9 @@ class ChannelOwnCapability: SEND_POLL: Final[ChannelOwnCapabilityType] = "send-poll" SEND_REACTION: Final[ChannelOwnCapabilityType] = "send-reaction" SEND_REPLY: Final[ChannelOwnCapabilityType] = "send-reply" + SEND_RESTRICTED_VISIBILITY_MESSAGE: Final[ChannelOwnCapabilityType] = ( + "send-restricted-visibility-message" + ) SEND_TYPING_EVENTS: Final[ChannelOwnCapabilityType] = "send-typing-events" SET_CHANNEL_COOLDOWN: Final[ChannelOwnCapabilityType] = "set-channel-cooldown" SKIP_SLOW_MODE: Final[ChannelOwnCapabilityType] = "skip-slow-mode" @@ -3227,6 +3433,9 @@ class ChannelStateResponse(DataClassJsonMixin): channel: "Optional[ChannelResponse]" = dc_field( default=None, metadata=dc_config(field_name="channel") ) + draft: "Optional[DraftResponse]" = dc_field( + default=None, metadata=dc_config(field_name="draft") + ) membership: "Optional[ChannelMember]" = dc_field( default=None, metadata=dc_config(field_name="membership") ) @@ -3274,6 +3483,9 @@ class ChannelStateResponseFields(DataClassJsonMixin): channel: "Optional[ChannelResponse]" = dc_field( default=None, metadata=dc_config(field_name="channel") ) + draft: "Optional[DraftResponse]" = dc_field( + default=None, metadata=dc_config(field_name="draft") + ) membership: "Optional[ChannelMember]" = dc_field( default=None, metadata=dc_config(field_name="membership") ) @@ -3465,6 +3677,13 @@ class ChannelVisibleEvent(DataClassJsonMixin): ) +@dataclass +class ChatActivityStatsResponse(DataClassJsonMixin): + messages: "Optional[MessageStatsResponse]" = dc_field( + default=None, metadata=dc_config(field_name="Messages") + ) + + @dataclass class CheckExternalStorageResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) @@ -3785,15 +4004,16 @@ class ConfigResponse(DataClassJsonMixin): @dataclass -class Coordinates(DataClassJsonMixin): - latitude: float = dc_field(metadata=dc_config(field_name="latitude")) - longitude: float = dc_field(metadata=dc_config(field_name="longitude")) - - -@dataclass -class Count(DataClassJsonMixin): - approximate: bool = dc_field(metadata=dc_config(field_name="approximate")) - value: int = dc_field(metadata=dc_config(field_name="value")) +class CountByMinuteResponse(DataClassJsonMixin): + count: int = dc_field(metadata=dc_config(field_name="count")) + start_ts: datetime = dc_field( + metadata=dc_config( + field_name="start_ts", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) @dataclass @@ -4566,19 +4786,76 @@ class DeviceResponse(DataClassJsonMixin): @dataclass -class EdgeResponse(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")) - green: int = dc_field(metadata=dc_config(field_name="green")) +class DraftPayloadResponse(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) - latency_test_url: str = dc_field(metadata=dc_config(field_name="latency_test_url")) - latitude: float = dc_field(metadata=dc_config(field_name="latitude")) - longitude: float = dc_field(metadata=dc_config(field_name="longitude")) - red: int = dc_field(metadata=dc_config(field_name="red")) - subdivision_iso_code: str = dc_field( - metadata=dc_config(field_name="subdivision_iso_code") - ) - yellow: int = dc_field(metadata=dc_config(field_name="yellow")) + text: str = dc_field(metadata=dc_config(field_name="text")) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + html: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="html")) + 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") + ) + 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") + ) + silent: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="silent") + ) + type: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="type")) + attachments: "Optional[List[Attachment]]" = dc_field( + default=None, metadata=dc_config(field_name="attachments") + ) + mentioned_users: "Optional[List[UserResponse]]" = dc_field( + default=None, metadata=dc_config(field_name="mentioned_users") + ) + + +@dataclass +class DraftResponse(DataClassJsonMixin): + channel_cid: str = dc_field(metadata=dc_config(field_name="channel_cid")) + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + message: "DraftPayloadResponse" = dc_field(metadata=dc_config(field_name="message")) + parent_id: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="parent_id") + ) + channel: "Optional[ChannelResponse]" = dc_field( + default=None, metadata=dc_config(field_name="channel") + ) + parent_message: "Optional[MessageResponse]" = dc_field( + default=None, metadata=dc_config(field_name="parent_message") + ) + quoted_message: "Optional[MessageResponse]" = dc_field( + default=None, metadata=dc_config(field_name="quoted_message") + ) + + +@dataclass +class EdgeResponse(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")) + green: int = dc_field(metadata=dc_config(field_name="green")) + id: str = dc_field(metadata=dc_config(field_name="id")) + latency_test_url: str = dc_field(metadata=dc_config(field_name="latency_test_url")) + latitude: float = dc_field(metadata=dc_config(field_name="latitude")) + longitude: float = dc_field(metadata=dc_config(field_name="longitude")) + red: int = dc_field(metadata=dc_config(field_name="red")) + subdivision_iso_code: str = dc_field( + metadata=dc_config(field_name="subdivision_iso_code") + ) + yellow: int = dc_field(metadata=dc_config(field_name="yellow")) @dataclass @@ -4710,6 +4987,7 @@ class EntityCreator(DataClassJsonMixin): 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")) ban_expires: Optional[datetime] = dc_field( default=None, metadata=dc_config( @@ -4811,6 +5089,7 @@ class EntityCreatorResponse(DataClassJsonMixin): deleted_content_count: int = dc_field( metadata=dc_config(field_name="deleted_content_count") ) + flagged_count: int = dc_field(metadata=dc_config(field_name="flagged_count")) id: str = dc_field(metadata=dc_config(field_name="id")) invisible: bool = dc_field(metadata=dc_config(field_name="invisible")) language: str = dc_field(metadata=dc_config(field_name="language")) @@ -4888,6 +5167,9 @@ class EntityCreatorResponse(DataClassJsonMixin): push_notifications: "Optional[PushNotificationSettingsResponse]" = dc_field( default=None, metadata=dc_config(field_name="push_notifications") ) + teams_role: "Optional[Dict[str, str]]" = dc_field( + default=None, metadata=dc_config(field_name="teams_role") + ) @dataclass @@ -4958,15 +5240,6 @@ class ExportChannelsResponse(DataClassJsonMixin): task_id: str = dc_field(metadata=dc_config(field_name="task_id")) -@dataclass -class ExportChannelsResult(DataClassJsonMixin): - url: str = dc_field(metadata=dc_config(field_name="url")) - path: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="path")) - s3_bucket_name: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="s3_bucket_name") - ) - - @dataclass class ExportUserResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) @@ -5087,80 +5360,6 @@ class FirebaseConfigFields(DataClassJsonMixin): @dataclass class Flag(DataClassJsonMixin): - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - created_by_automod: bool = dc_field( - metadata=dc_config(field_name="created_by_automod") - ) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - approved_at: 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"), - ), - ) - 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 Flag2(DataClassJsonMixin): created_at: datetime = dc_field( metadata=dc_config( field_name="created_at", @@ -5209,54 +5408,6 @@ class Flag2(DataClassJsonMixin): ) -@dataclass -class Flag2Response(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"), - ) - ) - entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) - entity_type: str = dc_field(metadata=dc_config(field_name="entity_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"), - ) - ) - user_id: str = dc_field(metadata=dc_config(field_name="user_id")) - result: "List[Dict[str, object]]" = dc_field( - metadata=dc_config(field_name="result") - ) - entity_creator_id: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="entity_creator_id") - ) - reason: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="reason") - ) - review_queue_item_id: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="review_queue_item_id") - ) - type: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="type")) - labels: Optional[List[str]] = dc_field( - default=None, metadata=dc_config(field_name="labels") - ) - custom: Optional[Dict[str, object]] = dc_field( - default=None, metadata=dc_config(field_name="custom") - ) - moderation_payload: "Optional[ModerationPayload]" = dc_field( - default=None, metadata=dc_config(field_name="moderation_payload") - ) - user: "Optional[UserResponse]" = 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")) @@ -5437,6 +5588,15 @@ class FullUserResponse(DataClassJsonMixin): mutes: "List[UserMuteResponse]" = dc_field(metadata=dc_config(field_name="mutes")) teams: List[str] = dc_field(metadata=dc_config(field_name="teams")) custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + 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"), + ), + ) deactivated_at: Optional[datetime] = dc_field( default=None, metadata=dc_config( @@ -5483,6 +5643,9 @@ class FullUserResponse(DataClassJsonMixin): privacy_settings: "Optional[PrivacySettingsResponse]" = dc_field( default=None, metadata=dc_config(field_name="privacy_settings") ) + teams_role: "Optional[Dict[str, str]]" = dc_field( + default=None, metadata=dc_config(field_name="teams_role") + ) @dataclass @@ -5514,22 +5677,6 @@ class GeofenceSettingsResponse(DataClassJsonMixin): names: List[str] = dc_field(metadata=dc_config(field_name="names")) -@dataclass -class GeolocationResult(DataClassJsonMixin): - accuracy_radius: int = dc_field(metadata=dc_config(field_name="accuracy_radius")) - city: str = dc_field(metadata=dc_config(field_name="city")) - continent: str = dc_field(metadata=dc_config(field_name="continent")) - continent_code: str = dc_field(metadata=dc_config(field_name="continent_code")) - country: str = dc_field(metadata=dc_config(field_name="country")) - country_iso_code: str = dc_field(metadata=dc_config(field_name="country_iso_code")) - latitude: float = dc_field(metadata=dc_config(field_name="latitude")) - longitude: float = dc_field(metadata=dc_config(field_name="longitude")) - subdivision: str = dc_field(metadata=dc_config(field_name="subdivision")) - subdivision_iso_code: str = dc_field( - metadata=dc_config(field_name="subdivision_iso_code") - ) - - @dataclass class GetApplicationResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) @@ -5557,6 +5704,9 @@ class GetCallReportResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) session_id: str = dc_field(metadata=dc_config(field_name="session_id")) report: "ReportResponse" = dc_field(metadata=dc_config(field_name="report")) + chat_activity: "Optional[ChatActivityStatsResponse]" = dc_field( + default=None, metadata=dc_config(field_name="chat_activity") + ) @dataclass @@ -5569,46 +5719,6 @@ class GetCallResponse(DataClassJsonMixin): call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) -@dataclass -class GetCallStatsResponse(DataClassJsonMixin): - call_duration_seconds: int = dc_field( - metadata=dc_config(field_name="call_duration_seconds") - ) - call_status: str = dc_field(metadata=dc_config(field_name="call_status")) - duration: str = dc_field(metadata=dc_config(field_name="duration")) - max_freezes_duration_seconds: int = dc_field( - metadata=dc_config(field_name="max_freezes_duration_seconds") - ) - max_participants: int = dc_field(metadata=dc_config(field_name="max_participants")) - max_total_quality_limitation_duration_seconds: int = dc_field( - metadata=dc_config(field_name="max_total_quality_limitation_duration_seconds") - ) - publishing_participants: int = dc_field( - metadata=dc_config(field_name="publishing_participants") - ) - quality_score: int = dc_field(metadata=dc_config(field_name="quality_score")) - sfu_count: int = dc_field(metadata=dc_config(field_name="sfu_count")) - participant_report: "List[UserStats]" = dc_field( - metadata=dc_config(field_name="participant_report") - ) - sfus: "List[SFULocationResponse]" = dc_field(metadata=dc_config(field_name="sfus")) - average_connection_time: Optional[float] = dc_field( - default=None, metadata=dc_config(field_name="average_connection_time") - ) - aggregated: "Optional[AggregatedStats]" = dc_field( - default=None, metadata=dc_config(field_name="aggregated") - ) - call_timeline: "Optional[CallTimeline]" = dc_field( - default=None, metadata=dc_config(field_name="call_timeline") - ) - jitter: "Optional[TimeStats]" = dc_field( - default=None, metadata=dc_config(field_name="jitter") - ) - latency: "Optional[TimeStats]" = dc_field( - default=None, metadata=dc_config(field_name="latency") - ) - - @dataclass class GetCallTypeResponse(DataClassJsonMixin): created_at: datetime = dc_field( @@ -5647,6 +5757,9 @@ class GetCampaignResponse(DataClassJsonMixin): campaign: "Optional[CampaignResponse]" = dc_field( default=None, metadata=dc_config(field_name="campaign") ) + users: "Optional[PagerResponse]" = dc_field( + default=None, metadata=dc_config(field_name="users") + ) @dataclass @@ -5766,38 +5879,15 @@ class GetCustomPermissionResponse(DataClassJsonMixin): @dataclass -class GetEdgesResponse(DataClassJsonMixin): +class GetDraftResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - edges: "List[EdgeResponse]" = dc_field(metadata=dc_config(field_name="edges")) + draft: "DraftResponse" = dc_field(metadata=dc_config(field_name="draft")) @dataclass -class GetExportChannelsStatusResponse(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"), - ) - ) +class GetEdgesResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - status: str = dc_field(metadata=dc_config(field_name="status")) - task_id: str = dc_field(metadata=dc_config(field_name="task_id")) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - error: "Optional[ErrorResult]" = dc_field( - default=None, metadata=dc_config(field_name="error") - ) - result: "Optional[ExportChannelsResult]" = dc_field( - default=None, metadata=dc_config(field_name="result") - ) + edges: "List[EdgeResponse]" = dc_field(metadata=dc_config(field_name="edges")) @dataclass @@ -5827,24 +5917,6 @@ class GetMessageResponse(DataClassJsonMixin): ) -@dataclass -class GetModerationAnalyticsRequest(DataClassJsonMixin): - end_date: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="end_date") - ) - start_date: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="start_date") - ) - - -@dataclass -class GetModerationAnalyticsResponse(DataClassJsonMixin): - duration: str = dc_field(metadata=dc_config(field_name="duration")) - analytics: "Optional[ModerationAnalytics]" = dc_field( - default=None, metadata=dc_config(field_name="analytics") - ) - - @dataclass class GetOGResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) @@ -5981,9 +6053,6 @@ class GetRepliesResponse(DataClassJsonMixin): @dataclass class GetReviewQueueItemResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - history: "List[ReviewQueueItemResponse]" = dc_field( - metadata=dc_config(field_name="history") - ) item: "Optional[ReviewQueueItemResponse]" = dc_field( default=None, metadata=dc_config(field_name="item") ) @@ -6032,16 +6101,6 @@ class GetThreadResponse(DataClassJsonMixin): thread: "ThreadStateResponse" = dc_field(metadata=dc_config(field_name="thread")) -@dataclass -class GetUserModerationReportResponse(DataClassJsonMixin): - duration: str = dc_field(metadata=dc_config(field_name="duration")) - user_blocks: "List[UserBlock]" = dc_field( - metadata=dc_config(field_name="user_blocks") - ) - user_mutes: "List[UserMute]" = dc_field(metadata=dc_config(field_name="user_mutes")) - user: "UserResponse" = dc_field(metadata=dc_config(field_name="user")) - - @dataclass class GoLiveRequest(DataClassJsonMixin): recording_storage_name: Optional[str] = dc_field( @@ -6056,9 +6115,6 @@ class GoLiveRequest(DataClassJsonMixin): start_recording: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="start_recording") ) - start_rtmp_broadcasts: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="start_rtmp_broadcasts") - ) start_transcription: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="start_transcription") ) @@ -6080,6 +6136,12 @@ class GoogleVisionConfig(DataClassJsonMixin): ) +@dataclass +class GroupedStatsResponse(DataClassJsonMixin): + name: str = dc_field(metadata=dc_config(field_name="name")) + unique: int = dc_field(metadata=dc_config(field_name="unique")) + + @dataclass class HLSSettings(DataClassJsonMixin): auto_on: bool = dc_field(metadata=dc_config(field_name="auto_on")) @@ -6454,15 +6516,6 @@ class ListTranscriptionsResponse(DataClassJsonMixin): ) -@dataclass -class Location(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 MarkChannelsReadRequest(DataClassJsonMixin): user_id: Optional[str] = dc_field( @@ -6527,14 +6580,6 @@ class MarkUnreadRequest(DataClassJsonMixin): ) -@dataclass -class MediaPubSubHint(DataClassJsonMixin): - audio_published: bool = dc_field(metadata=dc_config(field_name="audio_published")) - audio_subscribed: bool = dc_field(metadata=dc_config(field_name="audio_subscribed")) - video_published: bool = dc_field(metadata=dc_config(field_name="video_published")) - video_subscribed: bool = dc_field(metadata=dc_config(field_name="video_subscribed")) - - @dataclass class MemberAddedEvent(DataClassJsonMixin): channel_id: str = dc_field(metadata=dc_config(field_name="channel_id")) @@ -6697,6 +6742,9 @@ class Message(DataClassJsonMixin): 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") @@ -7037,6 +7085,13 @@ class MessageNewEvent(DataClassJsonMixin): ) +@dataclass +class MessageOptions(DataClassJsonMixin): + include_thread_participants: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="include_thread_participants") + ) + + @dataclass class MessagePaginationParams(DataClassJsonMixin): pass @@ -7129,6 +7184,9 @@ class MessageRequest(DataClassJsonMixin): mentioned_users: Optional[List[str]] = dc_field( default=None, metadata=dc_config(field_name="mentioned_users") ) + restricted_visibility: Optional[List[str]] = dc_field( + default=None, metadata=dc_config(field_name="restricted_visibility") + ) custom: Optional[Dict[str, object]] = dc_field( default=None, metadata=dc_config(field_name="custom") ) @@ -7179,6 +7237,9 @@ class MessageResponse(DataClassJsonMixin): own_reactions: "List[ReactionResponse]" = dc_field( metadata=dc_config(field_name="own_reactions") ) + restricted_visibility: List[str] = dc_field( + metadata=dc_config(field_name="restricted_visibility") + ) custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) reaction_counts: "Dict[str, int]" = dc_field( metadata=dc_config(field_name="reaction_counts") @@ -7242,6 +7303,9 @@ class MessageResponse(DataClassJsonMixin): thread_participants: "Optional[List[UserResponse]]" = dc_field( default=None, metadata=dc_config(field_name="thread_participants") ) + draft: "Optional[DraftResponse]" = dc_field( + default=None, metadata=dc_config(field_name="draft") + ) i18n: "Optional[Dict[str, str]]" = dc_field( default=None, metadata=dc_config(field_name="i18n") ) @@ -7265,6 +7329,13 @@ class MessageResponse(DataClassJsonMixin): ) +@dataclass +class MessageStatsResponse(DataClassJsonMixin): + count_over_time: "Optional[List[CountByMinuteResponse]]" = dc_field( + default=None, metadata=dc_config(field_name="count_over_time") + ) + + @dataclass class MessageUnblockedEvent(DataClassJsonMixin): cid: str = dc_field(metadata=dc_config(field_name="cid")) @@ -7398,6 +7469,9 @@ class MessageWithChannelResponse(DataClassJsonMixin): own_reactions: "List[ReactionResponse]" = dc_field( metadata=dc_config(field_name="own_reactions") ) + restricted_visibility: List[str] = dc_field( + metadata=dc_config(field_name="restricted_visibility") + ) channel: "ChannelResponse" = dc_field(metadata=dc_config(field_name="channel")) custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) reaction_counts: "Dict[str, int]" = dc_field( @@ -7462,6 +7536,9 @@ class MessageWithChannelResponse(DataClassJsonMixin): thread_participants: "Optional[List[UserResponse]]" = dc_field( default=None, metadata=dc_config(field_name="thread_participants") ) + draft: "Optional[DraftResponse]" = dc_field( + default=None, metadata=dc_config(field_name="draft") + ) i18n: "Optional[Dict[str, str]]" = dc_field( default=None, metadata=dc_config(field_name="i18n") ) @@ -7496,48 +7573,35 @@ class ModerationActionConfig(DataClassJsonMixin): @dataclass -class ModerationAnalytics(DataClassJsonMixin): - total_items_moderated: int = dc_field( - metadata=dc_config(field_name="total_items_moderated") - ) - ai_image_harms: "List[Dict[str, object]]" = dc_field( - metadata=dc_config(field_name="ai_image_harms") - ) - ai_text_harms: "List[Dict[str, object]]" = dc_field( - metadata=dc_config(field_name="ai_text_harms") - ) - ai_video_harms: "List[Dict[str, object]]" = dc_field( - metadata=dc_config(field_name="ai_video_harms") - ) - blocklist_by_list: "List[Dict[str, object]]" = dc_field( - metadata=dc_config(field_name="blocklist_by_list") - ) - blocklist_matches: "List[Dict[str, object]]" = dc_field( - metadata=dc_config(field_name="blocklist_matches") - ) - model_accuracy: "List[Dict[str, object]]" = dc_field( - metadata=dc_config(field_name="model_accuracy") - ) - moderator_actions: "List[Dict[str, object]]" = dc_field( - metadata=dc_config(field_name="moderator_actions") - ) - moderator_productivity: "List[Dict[str, object]]" = dc_field( - metadata=dc_config(field_name="moderator_productivity") - ) - semantic_filter_top_matches: "List[Dict[str, object]]" = dc_field( - metadata=dc_config(field_name="semantic_filter_top_matches") +class ModerationCheckCompletedEvent(DataClassJsonMixin): + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) ) - sla_metrics: "List[Dict[str, object]]" = dc_field( - metadata=dc_config(field_name="sla_metrics") + entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) + entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) + recommended_action: str = dc_field( + metadata=dc_config(field_name="recommended_action") ) - usage_metrics: "List[Dict[str, object]]" = dc_field( - metadata=dc_config(field_name="usage_metrics") + review_queue_item_id: str = dc_field( + metadata=dc_config(field_name="review_queue_item_id") ) - action_distribution_over_time: "Dict[str, Dict[str, object]]" = dc_field( - metadata=dc_config(field_name="action_distribution_over_time") + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + type: str = dc_field( + default="moderation_check.completed", metadata=dc_config(field_name="type") ) - detection_by_engine_over_time: "Dict[str, Dict[str, object]]" = dc_field( - metadata=dc_config(field_name="detection_by_engine_over_time") + 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"), + ), ) @@ -7565,40 +7629,6 @@ class ModerationCustomActionEvent(DataClassJsonMixin): ) -@dataclass -class ModerationEvent(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="review_queue_item.updated", 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"), - ), - ) - flags: "Optional[List[Flag2Response]]" = dc_field( - default=None, metadata=dc_config(field_name="flags") - ) - action: "Optional[ActionLogResponse]" = dc_field( - default=None, metadata=dc_config(field_name="action") - ) - review_queue_item: "Optional[ReviewQueueItemResponse]" = dc_field( - default=None, metadata=dc_config(field_name="review_queue_item") - ) - - @dataclass class ModerationFlaggedEvent(DataClassJsonMixin): created_at: datetime = dc_field( @@ -7669,31 +7699,6 @@ class ModerationResponse(DataClassJsonMixin): toxic: float = dc_field(metadata=dc_config(field_name="toxic")) -@dataclass -class ModerationUsageStats(DataClassJsonMixin): - app_pk: int = dc_field(metadata=dc_config(field_name="app_pk")) - id: int = dc_field(metadata=dc_config(field_name="id")) - organization_id: int = dc_field(metadata=dc_config(field_name="organization_id")) - reference_date: datetime = dc_field( - metadata=dc_config( - field_name="reference_date", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - updated_at: datetime = dc_field( - metadata=dc_config( - field_name="updated_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - usage_amount: int = dc_field(metadata=dc_config(field_name="usage_amount")) - usage_type: str = dc_field(metadata=dc_config(field_name="usage_type")) - - @dataclass class ModerationV2Response(DataClassJsonMixin): action: str = dc_field(metadata=dc_config(field_name="action")) @@ -7715,23 +7720,6 @@ class ModerationV2Response(DataClassJsonMixin): ) -@dataclass -class ModeratorStats(DataClassJsonMixin): - id: str = dc_field(metadata=dc_config(field_name="id")) - items_reviewed: int = dc_field(metadata=dc_config(field_name="items_reviewed")) - action_counts: "Dict[str, int]" = dc_field( - metadata=dc_config(field_name="action_counts") - ) - - -@dataclass -class ModeratorStatsResponse(DataClassJsonMixin): - duration: str = dc_field(metadata=dc_config(field_name="duration")) - moderator_stats: "List[ModeratorStats]" = dc_field( - metadata=dc_config(field_name="moderator_stats") - ) - - @dataclass class MuteChannelRequest(DataClassJsonMixin): expiration: Optional[int] = dc_field( @@ -7921,6 +7909,12 @@ class NullTime(DataClassJsonMixin): pass +@dataclass +class OCRRule(DataClassJsonMixin): + action: str = dc_field(metadata=dc_config(field_name="action")) + label: str = dc_field(metadata=dc_config(field_name="label")) + + @dataclass class OnlyUserID(DataClassJsonMixin): id: str = dc_field(metadata=dc_config(field_name="id")) @@ -8051,6 +8045,9 @@ class OwnUser(DataClassJsonMixin): 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 @@ -8142,6 +8139,15 @@ class OwnUserResponse(DataClassJsonMixin): 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 PagerResponse(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")) @dataclass @@ -8154,10 +8160,57 @@ class PaginationParams(DataClassJsonMixin): ) +@dataclass +class ParticipantCountByMinuteResponse(DataClassJsonMixin): + first: int = dc_field(metadata=dc_config(field_name="first")) + last: int = dc_field(metadata=dc_config(field_name="last")) + max: int = dc_field(metadata=dc_config(field_name="max")) + min: int = dc_field(metadata=dc_config(field_name="min")) + start_ts: datetime = dc_field( + metadata=dc_config( + field_name="start_ts", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + + +@dataclass +class ParticipantCountOverTimeResponse(DataClassJsonMixin): + by_minute: "Optional[List[ParticipantCountByMinuteResponse]]" = dc_field( + default=None, metadata=dc_config(field_name="by_minute") + ) + + @dataclass class ParticipantReportResponse(DataClassJsonMixin): sum: int = dc_field(metadata=dc_config(field_name="sum")) unique: int = dc_field(metadata=dc_config(field_name="unique")) + max_concurrent: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="max_concurrent") + ) + by_browser: "Optional[List[GroupedStatsResponse]]" = dc_field( + default=None, metadata=dc_config(field_name="by_browser") + ) + by_country: "Optional[List[GroupedStatsResponse]]" = dc_field( + default=None, metadata=dc_config(field_name="by_country") + ) + by_device: "Optional[List[GroupedStatsResponse]]" = dc_field( + default=None, metadata=dc_config(field_name="by_device") + ) + by_operating_system: "Optional[List[GroupedStatsResponse]]" = dc_field( + default=None, metadata=dc_config(field_name="by_operating_system") + ) + count_over_time: "Optional[ParticipantCountOverTimeResponse]" = dc_field( + default=None, metadata=dc_config(field_name="count_over_time") + ) + publishers: "Optional[PublisherStatsResponse]" = dc_field( + default=None, metadata=dc_config(field_name="publishers") + ) + subscribers: "Optional[SubscriberStatsResponse]" = dc_field( + default=None, metadata=dc_config(field_name="subscribers") + ) @dataclass @@ -8542,25 +8595,11 @@ class PrivacySettingsResponse(DataClassJsonMixin): @dataclass -class PublishedTrackInfo(DataClassJsonMixin): - codec_mime_type: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="codec_mime_type") - ) - duration_seconds: Optional[int] = dc_field( - default=None, metadata=dc_config(field_name="duration_seconds") - ) - track_type: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="track_type") - ) - - -@dataclass -class PublisherAggregateStats(DataClassJsonMixin): - by_track_type: "Optional[Dict[str, Count]]" = dc_field( - default=None, metadata=dc_config(field_name="by_track_type") - ) - total: "Optional[Count]" = dc_field( - default=None, metadata=dc_config(field_name="total") +class PublisherStatsResponse(DataClassJsonMixin): + total: int = dc_field(metadata=dc_config(field_name="total")) + unique: int = dc_field(metadata=dc_config(field_name="unique")) + by_track: "Optional[List[TrackStatsResponse]]" = dc_field( + default=None, metadata=dc_config(field_name="by_track") ) @@ -8948,6 +8987,29 @@ class QueryCallMembersResponse(DataClassJsonMixin): prev: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="prev")) +@dataclass +class QueryCallParticipantsRequest(DataClassJsonMixin): + filter_conditions: Optional[Dict[str, object]] = dc_field( + default=None, metadata=dc_config(field_name="filter_conditions") + ) + + +@dataclass +class QueryCallParticipantsResponse(DataClassJsonMixin): + duration: str = dc_field(metadata=dc_config(field_name="duration")) + total_participants: int = dc_field( + metadata=dc_config(field_name="total_participants") + ) + members: "List[MemberResponse]" = dc_field(metadata=dc_config(field_name="members")) + own_capabilities: "List[OwnCapability]" = dc_field( + metadata=dc_config(field_name="own_capabilities") + ) + participants: "List[CallParticipantResponse]" = dc_field( + metadata=dc_config(field_name="participants") + ) + call: "CallResponse" = dc_field(metadata=dc_config(field_name="call")) + + @dataclass class QueryCallStatsRequest(DataClassJsonMixin): limit: Optional[int] = dc_field( @@ -9005,6 +9067,9 @@ class QueryCampaignsRequest(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")) + user_limit: Optional[int] = dc_field( + default=None, metadata=dc_config(field_name="user_limit") + ) sort: "Optional[List[SortParamRequest]]" = dc_field( default=None, metadata=dc_config(field_name="sort") ) @@ -9062,6 +9127,35 @@ class QueryChannelsResponse(DataClassJsonMixin): ) +@dataclass +class QueryDraftsRequest(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 QueryDraftsResponse(DataClassJsonMixin): + duration: str = dc_field(metadata=dc_config(field_name="duration")) + drafts: "List[DraftResponse]" = dc_field(metadata=dc_config(field_name="drafts")) + 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 QueryFeedModerationTemplate(DataClassJsonMixin): created_at: datetime = dc_field( @@ -9418,31 +9512,6 @@ class QueryThreadsRequest(DataClassJsonMixin): 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 QueryThreadsResponse(DataClassJsonMixin): - duration: str = dc_field(metadata=dc_config(field_name="duration")) - threads: "List[ThreadStateResponse]" = dc_field( - metadata=dc_config(field_name="threads") - ) - 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 QueryUsageStatsRequest(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") ) @@ -9455,10 +9524,10 @@ class QueryUsageStatsRequest(DataClassJsonMixin): @dataclass -class QueryUsageStatsResponse(DataClassJsonMixin): +class QueryThreadsResponse(DataClassJsonMixin): duration: str = dc_field(metadata=dc_config(field_name="duration")) - items: "List[ModerationUsageStats]" = dc_field( - metadata=dc_config(field_name="items") + threads: "List[ThreadStateResponse]" = dc_field( + metadata=dc_config(field_name="threads") ) 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")) @@ -9523,17 +9592,6 @@ class QueryUsersResponse(DataClassJsonMixin): users: "List[FullUserResponse]" = dc_field(metadata=dc_config(field_name="users")) -@dataclass -class QueueStatsResponse(DataClassJsonMixin): - avg_time_to_action: int = dc_field( - metadata=dc_config(field_name="avg_time_to_action") - ) - duration: str = dc_field(metadata=dc_config(field_name="duration")) - time_to_action_buckets: "Dict[str, int]" = dc_field( - metadata=dc_config(field_name="time_to_action_buckets") - ) - - @dataclass class RTMPBroadcastRequest(DataClassJsonMixin): name: str = dc_field(metadata=dc_config(field_name="name")) @@ -9939,6 +9997,7 @@ class RestoreUsersRequest(DataClassJsonMixin): class ReviewQueueItem(DataClassJsonMixin): ai_text_severity: str = dc_field(metadata=dc_config(field_name="ai_text_severity")) bounce_count: int = dc_field(metadata=dc_config(field_name="bounce_count")) + config_key: str = dc_field(metadata=dc_config(field_name="config_key")) content_changed: bool = dc_field(metadata=dc_config(field_name="content_changed")) created_at: datetime = dc_field( metadata=dc_config( @@ -9950,6 +10009,7 @@ class ReviewQueueItem(DataClassJsonMixin): ) entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) + flags_count: int = dc_field(metadata=dc_config(field_name="flags_count")) has_image: bool = dc_field(metadata=dc_config(field_name="has_image")) has_text: bool = dc_field(metadata=dc_config(field_name="has_text")) has_video: bool = dc_field(metadata=dc_config(field_name="has_video")) @@ -9973,10 +10033,13 @@ class ReviewQueueItem(DataClassJsonMixin): ) actions: "List[ActionLog]" = dc_field(metadata=dc_config(field_name="actions")) bans: "List[Ban]" = dc_field(metadata=dc_config(field_name="bans")) - flags: "List[Flag2]" = dc_field(metadata=dc_config(field_name="flags")) + flags: "List[Flag]" = dc_field(metadata=dc_config(field_name="flags")) languages: List[str] = dc_field(metadata=dc_config(field_name="languages")) teams: List[str] = dc_field(metadata=dc_config(field_name="teams")) reviewed_at: "NullTime" = dc_field(metadata=dc_config(field_name="reviewed_at")) + activity: "Optional[EnrichedActivity]" = dc_field( + default=None, metadata=dc_config(field_name="activity") + ) assigned_to: "Optional[User]" = dc_field( default=None, metadata=dc_config(field_name="assigned_to") ) @@ -9995,6 +10058,43 @@ class ReviewQueueItem(DataClassJsonMixin): moderation_payload: "Optional[ModerationPayload]" = dc_field( default=None, metadata=dc_config(field_name="moderation_payload") ) + reaction: "Optional[Reaction]" = dc_field( + default=None, metadata=dc_config(field_name="reaction") + ) + + +@dataclass +class ReviewQueueItemNewEvent(DataClassJsonMixin): + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + type: str = dc_field( + default="review_queue_item.new", metadata=dc_config(field_name="type") + ) + received_at: 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"), + ), + ) + flags: "Optional[List[FlagResponse]]" = dc_field( + default=None, metadata=dc_config(field_name="flags") + ) + action: "Optional[ActionLogResponse]" = dc_field( + default=None, metadata=dc_config(field_name="action") + ) + review_queue_item: "Optional[ReviewQueueItemResponse]" = dc_field( + default=None, metadata=dc_config(field_name="review_queue_item") + ) @dataclass @@ -10010,6 +10110,7 @@ class ReviewQueueItemResponse(DataClassJsonMixin): ) entity_id: str = dc_field(metadata=dc_config(field_name="entity_id")) entity_type: str = dc_field(metadata=dc_config(field_name="entity_type")) + flags_count: int = dc_field(metadata=dc_config(field_name="flags_count")) id: str = dc_field(metadata=dc_config(field_name="id")) recommended_action: str = dc_field( metadata=dc_config(field_name="recommended_action") @@ -10029,7 +10130,7 @@ class ReviewQueueItemResponse(DataClassJsonMixin): metadata=dc_config(field_name="actions") ) bans: "List[Ban]" = dc_field(metadata=dc_config(field_name="bans")) - flags: "List[Flag2Response]" = dc_field(metadata=dc_config(field_name="flags")) + flags: "List[FlagResponse]" = dc_field(metadata=dc_config(field_name="flags")) languages: List[str] = dc_field(metadata=dc_config(field_name="languages")) completed_at: Optional[datetime] = dc_field( default=None, @@ -10040,6 +10141,9 @@ class ReviewQueueItemResponse(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ), ) + config_key: Optional[str] = dc_field( + default=None, metadata=dc_config(field_name="config_key") + ) entity_creator_id: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="entity_creator_id") ) @@ -10055,6 +10159,9 @@ class ReviewQueueItemResponse(DataClassJsonMixin): teams: Optional[List[str]] = dc_field( default=None, metadata=dc_config(field_name="teams") ) + activity: "Optional[EnrichedActivity]" = dc_field( + default=None, metadata=dc_config(field_name="activity") + ) assigned_to: "Optional[UserResponse]" = dc_field( default=None, metadata=dc_config(field_name="assigned_to") ) @@ -10073,6 +10180,43 @@ class ReviewQueueItemResponse(DataClassJsonMixin): moderation_payload: "Optional[ModerationPayload]" = dc_field( default=None, metadata=dc_config(field_name="moderation_payload") ) + reaction: "Optional[Reaction]" = dc_field( + default=None, metadata=dc_config(field_name="reaction") + ) + + +@dataclass +class ReviewQueueItemUpdatedEvent(DataClassJsonMixin): + created_at: datetime = dc_field( + metadata=dc_config( + field_name="created_at", + encoder=encode_datetime, + decoder=datetime_from_unix_ns, + mm_field=fields.DateTime(format="iso"), + ) + ) + custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) + type: str = dc_field( + default="review_queue_item.updated", metadata=dc_config(field_name="type") + ) + received_at: 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"), + ), + ) + flags: "Optional[List[FlagResponse]]" = dc_field( + default=None, metadata=dc_config(field_name="flags") + ) + action: "Optional[ActionLogResponse]" = dc_field( + default=None, metadata=dc_config(field_name="action") + ) + review_queue_item: "Optional[ReviewQueueItemResponse]" = dc_field( + default=None, metadata=dc_config(field_name="review_queue_item") + ) @dataclass @@ -10162,14 +10306,6 @@ 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: "Coordinates" = dc_field(metadata=dc_config(field_name="coordinates")) - location: "Location" = dc_field(metadata=dc_config(field_name="location")) - - @dataclass class ScreensharingSettings(DataClassJsonMixin): access_request_enabled: bool = dc_field( @@ -10226,6 +10362,9 @@ class SearchPayload(DataClassJsonMixin): message_filter_conditions: Optional[Dict[str, object]] = dc_field( default=None, metadata=dc_config(field_name="message_filter_conditions") ) + message_options: "Optional[MessageOptions]" = dc_field( + default=None, metadata=dc_config(field_name="message_options") + ) @dataclass @@ -10290,6 +10429,9 @@ class SearchResultMessage(DataClassJsonMixin): own_reactions: "List[ReactionResponse]" = dc_field( metadata=dc_config(field_name="own_reactions") ) + restricted_visibility: List[str] = dc_field( + metadata=dc_config(field_name="restricted_visibility") + ) custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) reaction_counts: "Dict[str, int]" = dc_field( metadata=dc_config(field_name="reaction_counts") @@ -10356,6 +10498,9 @@ class SearchResultMessage(DataClassJsonMixin): channel: "Optional[ChannelResponse]" = dc_field( default=None, metadata=dc_config(field_name="channel") ) + draft: "Optional[DraftResponse]" = dc_field( + default=None, metadata=dc_config(field_name="draft") + ) i18n: "Optional[Dict[str, str]]" = dc_field( default=None, metadata=dc_config(field_name="i18n") ) @@ -10591,6 +10736,11 @@ class SessionSettingsResponse(DataClassJsonMixin): ) +@dataclass +class ShadowBlockActionRequest(DataClassJsonMixin): + pass + + @dataclass class ShowChannelRequest(DataClassJsonMixin): user_id: Optional[str] = dc_field( @@ -10644,6 +10794,9 @@ class StartCampaignResponse(DataClassJsonMixin): campaign: "Optional[CampaignResponse]" = dc_field( default=None, metadata=dc_config(field_name="campaign") ) + users: "Optional[PagerResponse]" = dc_field( + default=None, metadata=dc_config(field_name="users") + ) @dataclass @@ -10878,23 +11031,12 @@ class SubmitActionResponse(DataClassJsonMixin): @dataclass -class Subsession(DataClassJsonMixin): - ended_at: int = dc_field(metadata=dc_config(field_name="ended_at")) - joined_at: int = dc_field(metadata=dc_config(field_name="joined_at")) - sfu_id: str = dc_field(metadata=dc_config(field_name="sfu_id")) - pub_sub_hint: "Optional[MediaPubSubHint]" = dc_field( - default=None, metadata=dc_config(field_name="pub_sub_hint") - ) - - -@dataclass -class TURNAggregatedStats(DataClassJsonMixin): - tcp: "Optional[Count]" = dc_field( - default=None, metadata=dc_config(field_name="tcp") - ) - total: "Optional[Count]" = dc_field( - default=None, metadata=dc_config(field_name="total") +class SubscriberStatsResponse(DataClassJsonMixin): + total: int = dc_field(metadata=dc_config(field_name="total")) + total_subscribed_duration_seconds: int = dc_field( + metadata=dc_config(field_name="total_subscribed_duration_seconds") ) + unique: int = dc_field(metadata=dc_config(field_name="unique")) @dataclass @@ -11091,6 +11233,9 @@ class ThreadStateResponse(DataClassJsonMixin): created_by: "Optional[UserResponse]" = dc_field( default=None, metadata=dc_config(field_name="created_by") ) + draft: "Optional[DraftResponse]" = dc_field( + default=None, metadata=dc_config(field_name="draft") + ) parent_message: "Optional[MessageResponse]" = dc_field( default=None, metadata=dc_config(field_name="parent_message") ) @@ -11161,9 +11306,9 @@ class Time(DataClassJsonMixin): @dataclass -class TimeStats(DataClassJsonMixin): - average_seconds: float = dc_field(metadata=dc_config(field_name="average_seconds")) - max_seconds: float = dc_field(metadata=dc_config(field_name="max_seconds")) +class TrackStatsResponse(DataClassJsonMixin): + duration_seconds: int = dc_field(metadata=dc_config(field_name="duration_seconds")) + track_type: str = dc_field(metadata=dc_config(field_name="track_type")) @dataclass @@ -11472,6 +11617,9 @@ class UpdateAppRequest(DataClassJsonMixin): feeds_v2_region: Optional[str] = dc_field( default=None, metadata=dc_config(field_name="feeds_v2_region") ) + guest_user_creation_disabled: Optional[bool] = dc_field( + default=None, metadata=dc_config(field_name="guest_user_creation_disabled") + ) image_moderation_enabled: Optional[bool] = dc_field( default=None, metadata=dc_config(field_name="image_moderation_enabled") ) @@ -12333,6 +12481,7 @@ class User(DataClassJsonMixin): 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")) ban_expires: Optional[datetime] = dc_field( default=None, metadata=dc_config( @@ -12453,22 +12602,6 @@ class UserBannedEvent(DataClassJsonMixin): ) -@dataclass -class UserBlock(DataClassJsonMixin): - blocked_by_user_id: str = dc_field( - metadata=dc_config(field_name="blocked_by_user_id") - ) - blocked_user_id: str = dc_field(metadata=dc_config(field_name="blocked_user_id")) - created_at: datetime = dc_field( - metadata=dc_config( - field_name="created_at", - encoder=encode_datetime, - decoder=datetime_from_unix_ns, - mm_field=fields.DateTime(format="iso"), - ) - ) - - @dataclass class UserCustomEventRequest(DataClassJsonMixin): type: str = dc_field(metadata=dc_config(field_name="type")) @@ -12573,15 +12706,6 @@ class UserFlaggedEvent(DataClassJsonMixin): ) -@dataclass -class UserInfoResponse(DataClassJsonMixin): - id: str = dc_field(metadata=dc_config(field_name="id")) - image: str = dc_field(metadata=dc_config(field_name="image")) - name: str = dc_field(metadata=dc_config(field_name="name")) - roles: List[str] = dc_field(metadata=dc_config(field_name="roles")) - custom: Dict[str, object] = dc_field(metadata=dc_config(field_name="custom")) - - @dataclass class UserMute(DataClassJsonMixin): created_at: datetime = dc_field( @@ -12721,6 +12845,9 @@ class UserRequest(DataClassJsonMixin): privacy_settings: "Optional[PrivacySettingsResponse]" = dc_field( default=None, metadata=dc_config(field_name="privacy_settings") ) + teams_role: "Optional[Dict[str, str]]" = dc_field( + default=None, metadata=dc_config(field_name="teams_role") + ) @dataclass @@ -12811,6 +12938,9 @@ class UserResponse(DataClassJsonMixin): push_notifications: "Optional[PushNotificationSettingsResponse]" = dc_field( default=None, metadata=dc_config(field_name="push_notifications") ) + teams_role: "Optional[Dict[str, str]]" = dc_field( + default=None, metadata=dc_config(field_name="teams_role") + ) @dataclass @@ -12881,6 +13011,9 @@ class UserResponseCommonFields(DataClassJsonMixin): mm_field=fields.DateTime(format="iso"), ), ) + teams_role: "Optional[Dict[str, str]]" = dc_field( + default=None, metadata=dc_config(field_name="teams_role") + ) @dataclass @@ -12957,169 +13090,8 @@ class UserResponsePrivacyFields(DataClassJsonMixin): privacy_settings: "Optional[PrivacySettingsResponse]" = dc_field( default=None, metadata=dc_config(field_name="privacy_settings") ) - - -@dataclass -class UserSessionStats(DataClassJsonMixin): - freeze_duration_seconds: int = dc_field( - metadata=dc_config(field_name="freeze_duration_seconds") - ) - group: str = dc_field(metadata=dc_config(field_name="group")) - max_freeze_fraction: float = dc_field( - metadata=dc_config(field_name="max_freeze_fraction") - ) - max_freezes_duration_seconds: int = dc_field( - metadata=dc_config(field_name="max_freezes_duration_seconds") - ) - min_event_ts: int = dc_field(metadata=dc_config(field_name="min_event_ts")) - packet_loss_fraction: float = dc_field( - metadata=dc_config(field_name="packet_loss_fraction") - ) - publisher_packet_loss_fraction: float = dc_field( - metadata=dc_config(field_name="publisher_packet_loss_fraction") - ) - publishing_duration_seconds: int = dc_field( - metadata=dc_config(field_name="publishing_duration_seconds") - ) - quality_score: float = dc_field(metadata=dc_config(field_name="quality_score")) - receiving_duration_seconds: int = dc_field( - metadata=dc_config(field_name="receiving_duration_seconds") - ) - session_id: str = dc_field(metadata=dc_config(field_name="session_id")) - total_pixels_in: int = dc_field(metadata=dc_config(field_name="total_pixels_in")) - total_pixels_out: int = dc_field(metadata=dc_config(field_name="total_pixels_out")) - average_connection_time: Optional[float] = dc_field( - default=None, metadata=dc_config(field_name="average_connection_time") - ) - browser: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="browser") - ) - browser_version: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="browser_version") - ) - current_ip: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="current_ip") - ) - current_sfu: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="current_sfu") - ) - device_model: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="device_model") - ) - device_version: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="device_version") - ) - distance_to_sfu_kilometers: Optional[float] = dc_field( - default=None, metadata=dc_config(field_name="distance_to_sfu_kilometers") - ) - max_fir_per_second: Optional[float] = dc_field( - default=None, metadata=dc_config(field_name="max_fir_per_second") - ) - max_freezes_per_second: Optional[float] = dc_field( - default=None, metadata=dc_config(field_name="max_freezes_per_second") - ) - max_nack_per_second: Optional[float] = dc_field( - default=None, metadata=dc_config(field_name="max_nack_per_second") - ) - max_pli_per_second: Optional[float] = dc_field( - default=None, metadata=dc_config(field_name="max_pli_per_second") - ) - os: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="os")) - os_version: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="os_version") - ) - publisher_noise_cancellation_seconds: Optional[float] = dc_field( - default=None, - metadata=dc_config(field_name="publisher_noise_cancellation_seconds"), - ) - publisher_quality_limitation_fraction: Optional[float] = dc_field( - default=None, - metadata=dc_config(field_name="publisher_quality_limitation_fraction"), - ) - publishing_audio_codec: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="publishing_audio_codec") - ) - publishing_video_codec: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="publishing_video_codec") - ) - receiving_audio_codec: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="receiving_audio_codec") - ) - receiving_video_codec: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="receiving_video_codec") - ) - sdk: Optional[str] = dc_field(default=None, metadata=dc_config(field_name="sdk")) - sdk_version: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="sdk_version") - ) - subscriber_video_quality_throttled_duration_seconds: Optional[float] = dc_field( - default=None, - metadata=dc_config( - field_name="subscriber_video_quality_throttled_duration_seconds" - ), - ) - truncated: Optional[bool] = dc_field( - default=None, metadata=dc_config(field_name="truncated") - ) - webrtc_version: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="webrtc_version") - ) - published_tracks: "Optional[List[PublishedTrackInfo]]" = dc_field( - default=None, metadata=dc_config(field_name="published_tracks") - ) - subsessions: "Optional[List[Subsession]]" = dc_field( - default=None, metadata=dc_config(field_name="subsessions") - ) - geolocation: "Optional[GeolocationResult]" = dc_field( - default=None, metadata=dc_config(field_name="geolocation") - ) - jitter: "Optional[TimeStats]" = dc_field( - default=None, metadata=dc_config(field_name="jitter") - ) - latency: "Optional[TimeStats]" = dc_field( - default=None, metadata=dc_config(field_name="latency") - ) - max_publishing_video_quality: "Optional[VideoQuality]" = dc_field( - default=None, metadata=dc_config(field_name="max_publishing_video_quality") - ) - max_receiving_video_quality: "Optional[VideoQuality]" = dc_field( - default=None, metadata=dc_config(field_name="max_receiving_video_quality") - ) - pub_sub_hints: "Optional[MediaPubSubHint]" = dc_field( - default=None, metadata=dc_config(field_name="pub_sub_hints") - ) - publisher_jitter: "Optional[TimeStats]" = dc_field( - default=None, metadata=dc_config(field_name="publisher_jitter") - ) - publisher_latency: "Optional[TimeStats]" = dc_field( - default=None, metadata=dc_config(field_name="publisher_latency") - ) - publisher_video_quality_limitation_duration_seconds: "Optional[Dict[str, float]]" = dc_field( - default=None, - metadata=dc_config( - field_name="publisher_video_quality_limitation_duration_seconds" - ), - ) - subscriber_jitter: "Optional[TimeStats]" = dc_field( - default=None, metadata=dc_config(field_name="subscriber_jitter") - ) - subscriber_latency: "Optional[TimeStats]" = dc_field( - default=None, metadata=dc_config(field_name="subscriber_latency") - ) - timeline: "Optional[CallTimeline]" = dc_field( - default=None, metadata=dc_config(field_name="timeline") - ) - - -@dataclass -class UserStats(DataClassJsonMixin): - min_event_ts: int = dc_field(metadata=dc_config(field_name="min_event_ts")) - session_stats: "List[UserSessionStats]" = dc_field( - metadata=dc_config(field_name="session_stats") - ) - info: "UserInfoResponse" = dc_field(metadata=dc_config(field_name="info")) - rating: Optional[int] = dc_field( - default=None, metadata=dc_config(field_name="rating") + teams_role: "Optional[Dict[str, str]]" = dc_field( + default=None, metadata=dc_config(field_name="teams_role") ) @@ -13213,9 +13185,11 @@ class UserUpdatedEvent(DataClassJsonMixin): @dataclass class VelocityFilterConfig(DataClassJsonMixin): + advanced_filters: bool = dc_field(metadata=dc_config(field_name="advanced_filters")) cascading_actions: bool = dc_field( metadata=dc_config(field_name="cascading_actions") ) + cids_per_user: int = dc_field(metadata=dc_config(field_name="cids_per_user")) enabled: bool = dc_field(metadata=dc_config(field_name="enabled")) first_message_only: bool = dc_field( metadata=dc_config(field_name="first_message_only") @@ -13244,32 +13218,18 @@ class VelocityFilterConfigRule(DataClassJsonMixin): ) fast_spam_ttl: int = dc_field(metadata=dc_config(field_name="fast_spam_ttl")) ip_ban: bool = dc_field(metadata=dc_config(field_name="ip_ban")) + probation_period: int = dc_field(metadata=dc_config(field_name="probation_period")) shadow_ban: bool = dc_field(metadata=dc_config(field_name="shadow_ban")) slow_spam_threshold: int = dc_field( metadata=dc_config(field_name="slow_spam_threshold") ) slow_spam_ttl: int = dc_field(metadata=dc_config(field_name="slow_spam_ttl")) + url_only: bool = dc_field(metadata=dc_config(field_name="url_only")) slow_spam_ban_duration: Optional[int] = dc_field( default=None, metadata=dc_config(field_name="slow_spam_ban_duration") ) -@dataclass -class VideoDimension(DataClassJsonMixin): - height: int = dc_field(metadata=dc_config(field_name="height")) - width: int = dc_field(metadata=dc_config(field_name="width")) - - -@dataclass -class VideoQuality(DataClassJsonMixin): - usage_type: Optional[str] = dc_field( - default=None, metadata=dc_config(field_name="usage_type") - ) - resolution: "Optional[VideoDimension]" = dc_field( - default=None, metadata=dc_config(field_name="resolution") - ) - - @dataclass class VideoSettings(DataClassJsonMixin): access_request_enabled: bool = dc_field( diff --git a/getstream/video/call.py b/getstream/video/call.py index 451524ed..33bc2fb5 100644 --- a/getstream/video/call.py +++ b/getstream/video/call.py @@ -146,7 +146,6 @@ def go_live( start_closed_caption: Optional[bool] = None, start_hls: Optional[bool] = None, start_recording: Optional[bool] = None, - start_rtmp_broadcasts: Optional[bool] = None, start_transcription: Optional[bool] = None, transcription_storage_name: Optional[str] = None, ) -> StreamResponse[GoLiveResponse]: @@ -157,7 +156,6 @@ def go_live( start_closed_caption=start_closed_caption, start_hls=start_hls, start_recording=start_recording, - start_rtmp_broadcasts=start_rtmp_broadcasts, start_transcription=start_transcription, transcription_storage_name=transcription_storage_name, ) @@ -209,6 +207,20 @@ def mute_users( self._sync_from_response(response.data) return response + def query_call_participants( + self, + limit: Optional[int] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallParticipantsResponse]: + response = self.client.query_call_participants( + type=self.call_type, + id=self.id, + limit=limit, + filter_conditions=filter_conditions, + ) + self._sync_from_response(response.data) + return response + def video_pin(self, session_id: str, user_id: str) -> StreamResponse[PinResponse]: response = self.client.video_pin( type=self.call_type, id=self.id, session_id=session_id, user_id=user_id @@ -315,13 +327,6 @@ def start_transcription( self._sync_from_response(response.data) return response - def get_call_stats(self, session: str) -> StreamResponse[GetCallStatsResponse]: - response = self.client.get_call_stats( - type=self.call_type, id=self.id, session=session - ) - self._sync_from_response(response.data) - return response - def stop_hls_broadcasting(self) -> StreamResponse[StopHLSBroadcastingResponse]: response = self.client.stop_hls_broadcasting(type=self.call_type, id=self.id) self._sync_from_response(response.data) diff --git a/getstream/video/rest_client.py b/getstream/video/rest_client.py index 3582d154..47684459 100644 --- a/getstream/video/rest_client.py +++ b/getstream/video/rest_client.py @@ -256,7 +256,6 @@ def go_live( start_closed_caption: Optional[bool] = None, start_hls: Optional[bool] = None, start_recording: Optional[bool] = None, - start_rtmp_broadcasts: Optional[bool] = None, start_transcription: Optional[bool] = None, transcription_storage_name: Optional[str] = None, ) -> StreamResponse[GoLiveResponse]: @@ -269,7 +268,6 @@ def go_live( start_closed_caption=start_closed_caption, start_hls=start_hls, start_recording=start_recording, - start_rtmp_broadcasts=start_rtmp_broadcasts, start_transcription=start_transcription, transcription_storage_name=transcription_storage_name, ) @@ -350,6 +348,28 @@ def mute_users( json=json, ) + def query_call_participants( + self, + id: str, + type: str, + limit: Optional[int] = None, + filter_conditions: Optional[Dict[str, object]] = None, + ) -> StreamResponse[QueryCallParticipantsResponse]: + query_params = build_query_param(limit=limit) + path_params = { + "id": id, + "type": type, + } + json = build_body_dict(filter_conditions=filter_conditions) + + return self.post( + "/api/v2/video/call/{type}/{id}/participants", + QueryCallParticipantsResponse, + query_params=query_params, + path_params=path_params, + json=json, + ) + def video_pin( self, type: str, id: str, session_id: str, user_id: str ) -> StreamResponse[PinResponse]: @@ -542,21 +562,6 @@ def start_transcription( json=json, ) - def get_call_stats( - self, type: str, id: str, session: str - ) -> StreamResponse[GetCallStatsResponse]: - path_params = { - "type": type, - "id": id, - "session": session, - } - - return self.get( - "/api/v2/video/call/{type}/{id}/stats/{session}", - GetCallStatsResponse, - path_params=path_params, - ) - def stop_hls_broadcasting( self, type: str, id: str ) -> StreamResponse[StopHLSBroadcastingResponse]: diff --git a/tests/test_video_examples.py b/tests/test_video_examples.py index c93a052e..2bf10142 100644 --- a/tests/test_video_examples.py +++ b/tests/test_video_examples.py @@ -338,6 +338,26 @@ def test_start_stop_frame_recording(client: Stream): ) +def test_query_call_participants(client): + call = client.video.call("default", "call-id") + call.get_or_create( + data=CallRequest( + created_by_id=str(uuid.uuid4()), + ) + ) + + call.query_call_participants(filter_conditions={"user_id": {"$eq": "user-id"}}) + + # filter by published track + call.query_call_participants( + filter_conditions={"published_tracks": {"$eq": "video"}} + ) + # filter multiple users + call.query_call_participants( + filter_conditions={"user_id": {"$in": ["user-id-1", "user-id-2"]}}, limit=100 + ) + + def test_create_call_with_custom_frame_recording_settings(client: Stream): user_id = str(uuid.uuid4())