From 21cf83f13b587b0348f0e57ea264791eafc21956 Mon Sep 17 00:00:00 2001 From: Denys Smirnov Date: Thu, 20 Jun 2024 19:44:57 +0300 Subject: [PATCH] Update protocol. Support SIP inbound/outbound trunks, grants. --- livekit-api/livekit/api/__init__.py | 2 +- livekit-api/livekit/api/_service.py | 12 +- livekit-api/livekit/api/access_token.py | 21 ++ livekit-api/livekit/api/sip_service.py | 60 ++++- livekit-api/tests/test_access_token.py | 5 +- livekit-protocol/livekit/protocol/agent.py | 6 +- livekit-protocol/livekit/protocol/agent.pyi | 38 ++-- .../livekit/protocol/analytics.py | 59 +++-- .../livekit/protocol/analytics.pyi | 35 +-- livekit-protocol/livekit/protocol/egress.py | 182 ++++++++-------- livekit-protocol/livekit/protocol/egress.pyi | 88 ++++---- livekit-protocol/livekit/protocol/ingress.py | 84 +++---- livekit-protocol/livekit/protocol/ingress.pyi | 46 ++-- livekit-protocol/livekit/protocol/models.py | 206 +++++++++--------- livekit-protocol/livekit/protocol/models.pyi | 115 +++++----- livekit-protocol/livekit/protocol/room.py | 42 ++-- livekit-protocol/livekit/protocol/room.pyi | 47 ++-- livekit-protocol/livekit/protocol/sip.py | 122 +++++++---- livekit-protocol/livekit/protocol/sip.pyi | 193 ++++++++++++++-- livekit-protocol/livekit/protocol/webhook.py | 6 +- livekit-protocol/livekit/protocol/webhook.pyi | 2 +- livekit-protocol/protocol | 2 +- 22 files changed, 847 insertions(+), 526 deletions(-) diff --git a/livekit-api/livekit/api/__init__.py b/livekit-api/livekit/api/__init__.py index fe07d3cb..714ce134 100644 --- a/livekit-api/livekit/api/__init__.py +++ b/livekit-api/livekit/api/__init__.py @@ -25,6 +25,6 @@ from .twirp_client import TwirpError, TwirpErrorCode from .livekit_api import LiveKitAPI -from .access_token import VideoGrants, AccessToken, TokenVerifier +from .access_token import VideoGrants, SIPGrants, AccessToken, TokenVerifier from .webhook import WebhookReceiver from .version import __version__ diff --git a/livekit-api/livekit/api/_service.py b/livekit-api/livekit/api/_service.py index daa2f98f..b1ba5d23 100644 --- a/livekit-api/livekit/api/_service.py +++ b/livekit-api/livekit/api/_service.py @@ -2,7 +2,7 @@ import aiohttp from abc import ABC from .twirp_client import TwirpClient -from .access_token import AccessToken, VideoGrants +from .access_token import AccessToken, VideoGrants, SIPGrants AUTHORIZATION = "authorization" @@ -15,8 +15,14 @@ def __init__( self.api_key = api_key self.api_secret = api_secret - def _auth_header(self, grants: VideoGrants) -> Dict[str, str]: - token = AccessToken(self.api_key, self.api_secret).with_grants(grants).to_jwt() + def _auth_header( + self, grants: VideoGrants, sip: SIPGrants | None = None + ) -> Dict[str, str]: + tok = AccessToken(self.api_key, self.api_secret).with_grants(grants) + if sip is not None: + tok = tok.with_sip_grants(sip) + + token = tok.to_jwt() headers = {} headers[AUTHORIZATION] = "Bearer {}".format(token) diff --git a/livekit-api/livekit/api/access_token.py b/livekit-api/livekit/api/access_token.py index a532f68c..e840b9a5 100644 --- a/livekit-api/livekit/api/access_token.py +++ b/livekit-api/livekit/api/access_token.py @@ -63,11 +63,20 @@ class VideoGrants: agent: bool = False +@dataclasses.dataclass +class SIPGrants: + # manage sip resources + admin: bool = False + # make outbound calls + call: bool = False + + @dataclasses.dataclass class Claims: identity: str = "" name: str = "" video: VideoGrants = dataclasses.field(default_factory=VideoGrants) + sip: SIPGrants = dataclasses.field(default_factory=SIPGrants) metadata: str = "" sha256: str = "" @@ -100,6 +109,10 @@ def with_grants(self, grants: VideoGrants) -> "AccessToken": self.claims.video = grants return self + def with_sip_grants(self, grants: SIPGrants) -> "AccessToken": + self.claims.sip = grants + return self + def with_identity(self, identity: str) -> "AccessToken": self.identity = identity return self @@ -173,10 +186,18 @@ def verify(self, token: str) -> Claims: } video = VideoGrants(**video_dict) + sip_dict = claims.get("sip", dict()) + sip_dict = {camel_to_snake(k): v for k, v in sip_dict.items()} + sip_dict = { + k: v for k, v in sip_dict.items() if k in SIPGrants.__dataclass_fields__ + } + sip = SIPGrants(**sip_dict) + return Claims( identity=claims.get("sub", ""), name=claims.get("name", ""), video=video, + sip=sip, metadata=claims.get("metadata", ""), sha256=claims.get("sha256", ""), ) diff --git a/livekit-api/livekit/api/sip_service.py b/livekit-api/livekit/api/sip_service.py index 27cf7659..80810528 100644 --- a/livekit-api/livekit/api/sip_service.py +++ b/livekit-api/livekit/api/sip_service.py @@ -1,7 +1,7 @@ import aiohttp from livekit.protocol import sip as proto_sip from ._service import Service -from .access_token import VideoGrants +from .access_token import VideoGrants, SIPGrants SVC = "SIP" @@ -19,10 +19,32 @@ async def create_sip_trunk( SVC, "CreateSIPTrunk", create, - self._auth_header(VideoGrants()), + self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), proto_sip.SIPTrunkInfo, ) + async def create_sip_inbound_trunk( + self, create: proto_sip.CreateSIPInboundTrunkRequest + ) -> proto_sip.SIPInboundTrunkInfo: + return await self._client.request( + SVC, + "CreateSIPInboundTrunk", + create, + self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), + proto_sip.SIPInboundTrunkInfo, + ) + + async def create_sip_outbound_trunk( + self, create: proto_sip.CreateSIPOutboundTrunkRequest + ) -> proto_sip.SIPOutboundTrunkInfo: + return await self._client.request( + SVC, + "CreateSIPOutboundTrunk", + create, + self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), + proto_sip.SIPOutboundTrunkInfo, + ) + async def list_sip_trunk( self, list: proto_sip.ListSIPTrunkRequest ) -> proto_sip.ListSIPTrunkResponse: @@ -30,10 +52,32 @@ async def list_sip_trunk( SVC, "ListSIPTrunk", list, - self._auth_header(VideoGrants()), + self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), proto_sip.ListSIPTrunkResponse, ) + async def list_sip_inbound_trunk( + self, list: proto_sip.ListSIPInboundTrunkRequest + ) -> proto_sip.ListSIPInboundTrunkResponse: + return await self._client.request( + SVC, + "ListSIPInboundTrunk", + list, + self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), + proto_sip.ListSIPInboundTrunkResponse, + ) + + async def list_sip_outbound_trunk( + self, list: proto_sip.ListSIPOutboundTrunkRequest + ) -> proto_sip.ListSIPOutboundTrunkResponse: + return await self._client.request( + SVC, + "ListSIPOutboundTrunk", + list, + self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), + proto_sip.ListSIPOutboundTrunkResponse, + ) + async def delete_sip_trunk( self, delete: proto_sip.DeleteSIPTrunkRequest ) -> proto_sip.SIPTrunkInfo: @@ -41,7 +85,7 @@ async def delete_sip_trunk( SVC, "DeleteSIPTrunk", delete, - self._auth_header(VideoGrants()), + self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), proto_sip.SIPTrunkInfo, ) @@ -52,7 +96,7 @@ async def create_sip_dispatch_rule( SVC, "CreateSIPDispatchRule", create, - self._auth_header(VideoGrants()), + self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), proto_sip.SIPDispatchRuleInfo, ) @@ -63,7 +107,7 @@ async def list_sip_dispatch_rule( SVC, "ListSIPDispatchRule", list, - self._auth_header(VideoGrants()), + self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), proto_sip.ListSIPDispatchRuleResponse, ) @@ -74,7 +118,7 @@ async def delete_sip_dispatch_rule( SVC, "DeleteSIPDispatchRule", delete, - self._auth_header(VideoGrants()), + self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), proto_sip.SIPDispatchRuleInfo, ) @@ -85,6 +129,6 @@ async def create_sip_participant( SVC, "CreateSIPParticipant", create, - self._auth_header(VideoGrants()), + self._auth_header(VideoGrants(), sip=SIPGrants(call=True)), proto_sip.SIPParticipantInfo, ) diff --git a/livekit-api/tests/test_access_token.py b/livekit-api/tests/test_access_token.py index 91871844..76c986a6 100644 --- a/livekit-api/tests/test_access_token.py +++ b/livekit-api/tests/test_access_token.py @@ -1,7 +1,7 @@ import datetime import pytest # type: ignore -from livekit.api import AccessToken, TokenVerifier, VideoGrants +from livekit.api import AccessToken, TokenVerifier, VideoGrants, SIPGrants TEST_API_KEY = "myapikey" TEST_API_SECRET = "thiskeyistotallyunsafe" @@ -9,12 +9,14 @@ def test_verify_token(): grants = VideoGrants(room_join=True, room="test_room") + sip = SIPGrants(admin=True) token = ( AccessToken(TEST_API_KEY, TEST_API_SECRET) .with_identity("test_identity") .with_metadata("test_metadata") .with_grants(grants) + .with_sip_grants(sip) .to_jwt() ) @@ -24,6 +26,7 @@ def test_verify_token(): assert claims.identity == "test_identity" assert claims.metadata == "test_metadata" assert claims.video == grants + assert claims.sip == sip def test_verify_token_invalid(): diff --git a/livekit-protocol/livekit/protocol/agent.py b/livekit-protocol/livekit/protocol/agent.py index b83ff034..5f8bf8ab 100644 --- a/livekit-protocol/livekit/protocol/agent.py +++ b/livekit-protocol/livekit/protocol/agent.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_agent.proto -# Protobuf Python Version: 4.25.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -21,8 +20,9 @@ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'agent', _globals) if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None - _globals['DESCRIPTOR']._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' _globals['_JOBTYPE']._serialized_start=2206 _globals['_JOBTYPE']._serialized_end=2246 _globals['_WORKERSTATUS']._serialized_start=2248 diff --git a/livekit-protocol/livekit/protocol/agent.pyi b/livekit-protocol/livekit/protocol/agent.pyi index 502f695b..004ce082 100644 --- a/livekit-protocol/livekit/protocol/agent.pyi +++ b/livekit-protocol/livekit/protocol/agent.pyi @@ -7,17 +7,17 @@ from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Opti DESCRIPTOR: _descriptor.FileDescriptor class JobType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] JT_ROOM: _ClassVar[JobType] JT_PUBLISHER: _ClassVar[JobType] class WorkerStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] WS_AVAILABLE: _ClassVar[WorkerStatus] WS_FULL: _ClassVar[WorkerStatus] class JobStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] JS_UNKNOWN: _ClassVar[JobStatus] JS_SUCCESS: _ClassVar[JobStatus] JS_FAILED: _ClassVar[JobStatus] @@ -30,7 +30,7 @@ JS_SUCCESS: JobStatus JS_FAILED: JobStatus class WorkerInfo(_message.Message): - __slots__ = ("id", "namespace", "version", "name", "type", "allowed_permissions") + __slots__ = ["id", "namespace", "version", "name", "type", "allowed_permissions"] ID_FIELD_NUMBER: _ClassVar[int] NAMESPACE_FIELD_NUMBER: _ClassVar[int] VERSION_FIELD_NUMBER: _ClassVar[int] @@ -46,7 +46,7 @@ class WorkerInfo(_message.Message): def __init__(self, id: _Optional[str] = ..., namespace: _Optional[str] = ..., version: _Optional[str] = ..., name: _Optional[str] = ..., type: _Optional[_Union[JobType, str]] = ..., allowed_permissions: _Optional[_Union[_models.ParticipantPermission, _Mapping]] = ...) -> None: ... class AgentInfo(_message.Message): - __slots__ = ("id", "name", "version") + __slots__ = ["id", "name", "version"] ID_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] VERSION_FIELD_NUMBER: _ClassVar[int] @@ -56,7 +56,7 @@ class AgentInfo(_message.Message): def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., version: _Optional[str] = ...) -> None: ... class Job(_message.Message): - __slots__ = ("id", "type", "room", "participant", "namespace") + __slots__ = ["id", "type", "room", "participant", "namespace"] ID_FIELD_NUMBER: _ClassVar[int] TYPE_FIELD_NUMBER: _ClassVar[int] ROOM_FIELD_NUMBER: _ClassVar[int] @@ -70,7 +70,7 @@ class Job(_message.Message): def __init__(self, id: _Optional[str] = ..., type: _Optional[_Union[JobType, str]] = ..., room: _Optional[_Union[_models.Room, _Mapping]] = ..., participant: _Optional[_Union[_models.ParticipantInfo, _Mapping]] = ..., namespace: _Optional[str] = ...) -> None: ... class WorkerMessage(_message.Message): - __slots__ = ("register", "availability", "update_worker", "update_job", "ping", "simulate_job", "migrate_job") + __slots__ = ["register", "availability", "update_worker", "update_job", "ping", "simulate_job", "migrate_job"] REGISTER_FIELD_NUMBER: _ClassVar[int] AVAILABILITY_FIELD_NUMBER: _ClassVar[int] UPDATE_WORKER_FIELD_NUMBER: _ClassVar[int] @@ -88,7 +88,7 @@ class WorkerMessage(_message.Message): def __init__(self, register: _Optional[_Union[RegisterWorkerRequest, _Mapping]] = ..., availability: _Optional[_Union[AvailabilityResponse, _Mapping]] = ..., update_worker: _Optional[_Union[UpdateWorkerStatus, _Mapping]] = ..., update_job: _Optional[_Union[UpdateJobStatus, _Mapping]] = ..., ping: _Optional[_Union[WorkerPing, _Mapping]] = ..., simulate_job: _Optional[_Union[SimulateJobRequest, _Mapping]] = ..., migrate_job: _Optional[_Union[MigrateJobRequest, _Mapping]] = ...) -> None: ... class ServerMessage(_message.Message): - __slots__ = ("register", "availability", "assignment", "pong") + __slots__ = ["register", "availability", "assignment", "pong"] REGISTER_FIELD_NUMBER: _ClassVar[int] AVAILABILITY_FIELD_NUMBER: _ClassVar[int] ASSIGNMENT_FIELD_NUMBER: _ClassVar[int] @@ -100,7 +100,7 @@ class ServerMessage(_message.Message): def __init__(self, register: _Optional[_Union[RegisterWorkerResponse, _Mapping]] = ..., availability: _Optional[_Union[AvailabilityRequest, _Mapping]] = ..., assignment: _Optional[_Union[JobAssignment, _Mapping]] = ..., pong: _Optional[_Union[WorkerPong, _Mapping]] = ...) -> None: ... class SimulateJobRequest(_message.Message): - __slots__ = ("type", "room", "participant") + __slots__ = ["type", "room", "participant"] TYPE_FIELD_NUMBER: _ClassVar[int] ROOM_FIELD_NUMBER: _ClassVar[int] PARTICIPANT_FIELD_NUMBER: _ClassVar[int] @@ -110,13 +110,13 @@ class SimulateJobRequest(_message.Message): def __init__(self, type: _Optional[_Union[JobType, str]] = ..., room: _Optional[_Union[_models.Room, _Mapping]] = ..., participant: _Optional[_Union[_models.ParticipantInfo, _Mapping]] = ...) -> None: ... class WorkerPing(_message.Message): - __slots__ = ("timestamp",) + __slots__ = ["timestamp"] TIMESTAMP_FIELD_NUMBER: _ClassVar[int] timestamp: int def __init__(self, timestamp: _Optional[int] = ...) -> None: ... class WorkerPong(_message.Message): - __slots__ = ("last_timestamp", "timestamp") + __slots__ = ["last_timestamp", "timestamp"] LAST_TIMESTAMP_FIELD_NUMBER: _ClassVar[int] TIMESTAMP_FIELD_NUMBER: _ClassVar[int] last_timestamp: int @@ -124,7 +124,7 @@ class WorkerPong(_message.Message): def __init__(self, last_timestamp: _Optional[int] = ..., timestamp: _Optional[int] = ...) -> None: ... class RegisterWorkerRequest(_message.Message): - __slots__ = ("type", "version", "name", "ping_interval", "namespace", "allowed_permissions") + __slots__ = ["type", "version", "name", "ping_interval", "namespace", "allowed_permissions"] TYPE_FIELD_NUMBER: _ClassVar[int] VERSION_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] @@ -140,7 +140,7 @@ class RegisterWorkerRequest(_message.Message): def __init__(self, type: _Optional[_Union[JobType, str]] = ..., version: _Optional[str] = ..., name: _Optional[str] = ..., ping_interval: _Optional[int] = ..., namespace: _Optional[str] = ..., allowed_permissions: _Optional[_Union[_models.ParticipantPermission, _Mapping]] = ...) -> None: ... class RegisterWorkerResponse(_message.Message): - __slots__ = ("worker_id", "server_info") + __slots__ = ["worker_id", "server_info"] WORKER_ID_FIELD_NUMBER: _ClassVar[int] SERVER_INFO_FIELD_NUMBER: _ClassVar[int] worker_id: str @@ -148,13 +148,13 @@ class RegisterWorkerResponse(_message.Message): def __init__(self, worker_id: _Optional[str] = ..., server_info: _Optional[_Union[_models.ServerInfo, _Mapping]] = ...) -> None: ... class MigrateJobRequest(_message.Message): - __slots__ = ("job_id",) + __slots__ = ["job_id"] JOB_ID_FIELD_NUMBER: _ClassVar[int] job_id: str def __init__(self, job_id: _Optional[str] = ...) -> None: ... class AvailabilityRequest(_message.Message): - __slots__ = ("job", "resuming") + __slots__ = ["job", "resuming"] JOB_FIELD_NUMBER: _ClassVar[int] RESUMING_FIELD_NUMBER: _ClassVar[int] job: Job @@ -162,7 +162,7 @@ class AvailabilityRequest(_message.Message): def __init__(self, job: _Optional[_Union[Job, _Mapping]] = ..., resuming: bool = ...) -> None: ... class AvailabilityResponse(_message.Message): - __slots__ = ("job_id", "available", "supports_resume", "participant_name", "participant_identity", "participant_metadata") + __slots__ = ["job_id", "available", "supports_resume", "participant_name", "participant_identity", "participant_metadata"] JOB_ID_FIELD_NUMBER: _ClassVar[int] AVAILABLE_FIELD_NUMBER: _ClassVar[int] SUPPORTS_RESUME_FIELD_NUMBER: _ClassVar[int] @@ -178,7 +178,7 @@ class AvailabilityResponse(_message.Message): def __init__(self, job_id: _Optional[str] = ..., available: bool = ..., supports_resume: bool = ..., participant_name: _Optional[str] = ..., participant_identity: _Optional[str] = ..., participant_metadata: _Optional[str] = ...) -> None: ... class UpdateJobStatus(_message.Message): - __slots__ = ("job_id", "status", "error", "metadata", "load") + __slots__ = ["job_id", "status", "error", "metadata", "load"] JOB_ID_FIELD_NUMBER: _ClassVar[int] STATUS_FIELD_NUMBER: _ClassVar[int] ERROR_FIELD_NUMBER: _ClassVar[int] @@ -192,7 +192,7 @@ class UpdateJobStatus(_message.Message): def __init__(self, job_id: _Optional[str] = ..., status: _Optional[_Union[JobStatus, str]] = ..., error: _Optional[str] = ..., metadata: _Optional[str] = ..., load: _Optional[float] = ...) -> None: ... class UpdateWorkerStatus(_message.Message): - __slots__ = ("status", "metadata", "load") + __slots__ = ["status", "metadata", "load"] STATUS_FIELD_NUMBER: _ClassVar[int] METADATA_FIELD_NUMBER: _ClassVar[int] LOAD_FIELD_NUMBER: _ClassVar[int] @@ -202,7 +202,7 @@ class UpdateWorkerStatus(_message.Message): def __init__(self, status: _Optional[_Union[WorkerStatus, str]] = ..., metadata: _Optional[str] = ..., load: _Optional[float] = ...) -> None: ... class JobAssignment(_message.Message): - __slots__ = ("job", "url", "token") + __slots__ = ["job", "url", "token"] JOB_FIELD_NUMBER: _ClassVar[int] URL_FIELD_NUMBER: _ClassVar[int] TOKEN_FIELD_NUMBER: _ClassVar[int] diff --git a/livekit-protocol/livekit/protocol/analytics.py b/livekit-protocol/livekit/protocol/analytics.py index 5ddf3370..50defd2c 100644 --- a/livekit-protocol/livekit/protocol/analytics.py +++ b/livekit-protocol/livekit/protocol/analytics.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_analytics.proto -# Protobuf Python Version: 4.25.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -12,45 +11,43 @@ _sym_db = _symbol_database.Default() -from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 from . import models as _models_ from . import egress as _egress_ from . import ingress as _ingress_ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17livekit_analytics.proto\x12\x07livekit\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x14livekit_models.proto\x1a\x14livekit_egress.proto\x1a\x15livekit_ingress.proto\"T\n\x13\x41nalyticsVideoLayer\x12\r\n\x05layer\x18\x01 \x01(\x05\x12\x0f\n\x07packets\x18\x02 \x01(\r\x12\r\n\x05\x62ytes\x18\x03 \x01(\x04\x12\x0e\n\x06\x66rames\x18\x04 \x01(\r\"\xb5\x03\n\x0f\x41nalyticsStream\x12\x0c\n\x04ssrc\x18\x01 \x01(\r\x12\x17\n\x0fprimary_packets\x18\x02 \x01(\r\x12\x15\n\rprimary_bytes\x18\x03 \x01(\x04\x12\x1a\n\x12retransmit_packets\x18\x04 \x01(\r\x12\x18\n\x10retransmit_bytes\x18\x05 \x01(\x04\x12\x17\n\x0fpadding_packets\x18\x06 \x01(\r\x12\x15\n\rpadding_bytes\x18\x07 \x01(\x04\x12\x14\n\x0cpackets_lost\x18\x08 \x01(\r\x12\x0e\n\x06\x66rames\x18\t \x01(\r\x12\x0b\n\x03rtt\x18\n \x01(\r\x12\x0e\n\x06jitter\x18\x0b \x01(\r\x12\r\n\x05nacks\x18\x0c \x01(\r\x12\x0c\n\x04plis\x18\r \x01(\r\x12\x0c\n\x04\x66irs\x18\x0e \x01(\r\x12\x32\n\x0cvideo_layers\x18\x0f \x03(\x0b\x32\x1c.livekit.AnalyticsVideoLayer\x12.\n\nstart_time\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xc6\x02\n\rAnalyticsStat\x12\x15\n\ranalytics_key\x18\x01 \x01(\t\x12!\n\x04kind\x18\x02 \x01(\x0e\x32\x13.livekit.StreamType\x12.\n\ntime_stamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04node\x18\x04 \x01(\t\x12\x0f\n\x07room_id\x18\x05 \x01(\t\x12\x11\n\troom_name\x18\x06 \x01(\t\x12\x16\n\x0eparticipant_id\x18\x07 \x01(\t\x12\x10\n\x08track_id\x18\x08 \x01(\t\x12\r\n\x05score\x18\t \x01(\x02\x12)\n\x07streams\x18\n \x03(\x0b\x32\x18.livekit.AnalyticsStream\x12\x0c\n\x04mime\x18\x0b \x01(\t\x12\x11\n\tmin_score\x18\x0c \x01(\x02\x12\x14\n\x0cmedian_score\x18\r \x01(\x02\"7\n\x0e\x41nalyticsStats\x12%\n\x05stats\x18\x01 \x03(\x0b\x32\x16.livekit.AnalyticsStat\"\x9a\x02\n\x13\x41nalyticsClientMeta\x12\x0e\n\x06region\x18\x01 \x01(\t\x12\x0c\n\x04node\x18\x02 \x01(\t\x12\x13\n\x0b\x63lient_addr\x18\x03 \x01(\t\x12\x1b\n\x13\x63lient_connect_time\x18\x04 \x01(\r\x12\x17\n\x0f\x63onnection_type\x18\x05 \x01(\t\x12\x32\n\x10reconnect_reason\x18\x06 \x01(\x0e\x32\x18.livekit.ReconnectReason\x12\x15\n\x08geo_hash\x18\x07 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07\x63ountry\x18\x08 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x07isp_asn\x18\t \x01(\rH\x02\x88\x01\x01\x42\x0b\n\t_geo_hashB\n\n\x08_countryB\n\n\x08_isp_asn\"\xbd\x05\n\x0e\x41nalyticsEvent\x12)\n\x04type\x18\x01 \x01(\x0e\x32\x1b.livekit.AnalyticsEventType\x12-\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0f\n\x07room_id\x18\x03 \x01(\t\x12\x1b\n\x04room\x18\x04 \x01(\x0b\x32\r.livekit.Room\x12\x16\n\x0eparticipant_id\x18\x05 \x01(\t\x12-\n\x0bparticipant\x18\x06 \x01(\x0b\x32\x18.livekit.ParticipantInfo\x12\x10\n\x08track_id\x18\x07 \x01(\t\x12!\n\x05track\x18\x08 \x01(\x0b\x32\x12.livekit.TrackInfo\x12\x15\n\ranalytics_key\x18\n \x01(\t\x12(\n\x0b\x63lient_info\x18\x0b \x01(\x0b\x32\x13.livekit.ClientInfo\x12\x31\n\x0b\x63lient_meta\x18\x0c \x01(\x0b\x32\x1c.livekit.AnalyticsClientMeta\x12\x11\n\tegress_id\x18\r \x01(\t\x12\x12\n\ningress_id\x18\x13 \x01(\t\x12;\n\x1cmax_subscribed_video_quality\x18\x0e \x01(\x0e\x32\x15.livekit.VideoQuality\x12+\n\tpublisher\x18\x0f \x01(\x0b\x32\x18.livekit.ParticipantInfo\x12\x0c\n\x04mime\x18\x10 \x01(\t\x12#\n\x06\x65gress\x18\x11 \x01(\x0b\x32\x13.livekit.EgressInfo\x12%\n\x07ingress\x18\x12 \x01(\x0b\x32\x14.livekit.IngressInfo\x12\r\n\x05\x65rror\x18\x14 \x01(\t\x12$\n\trtp_stats\x18\x15 \x01(\x0b\x32\x11.livekit.RTPStats\x12\x13\n\x0bvideo_layer\x18\x16 \x01(\x05\":\n\x0f\x41nalyticsEvents\x12\'\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x17.livekit.AnalyticsEvent\"\xa4\x01\n\x18\x41nalyticsRoomParticipant\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12-\n\x05state\x18\x04 \x01(\x0e\x32\x1e.livekit.ParticipantInfo.State\x12-\n\tjoined_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xa6\x01\n\rAnalyticsRoom\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\nproject_id\x18\x05 \x01(\t\x12.\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x37\n\x0cparticipants\x18\x04 \x03(\x0b\x32!.livekit.AnalyticsRoomParticipant\"\x94\x01\n\x12\x41nalyticsNodeRooms\x12\x0f\n\x07node_id\x18\x01 \x01(\t\x12\x17\n\x0fsequence_number\x18\x02 \x01(\x04\x12-\n\ttimestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12%\n\x05rooms\x18\x04 \x03(\x0b\x32\x16.livekit.AnalyticsRoom**\n\nStreamType\x12\x0c\n\x08UPSTREAM\x10\x00\x12\x0e\n\nDOWNSTREAM\x10\x01*\x95\x05\n\x12\x41nalyticsEventType\x12\x10\n\x0cROOM_CREATED\x10\x00\x12\x0e\n\nROOM_ENDED\x10\x01\x12\x16\n\x12PARTICIPANT_JOINED\x10\x02\x12\x14\n\x10PARTICIPANT_LEFT\x10\x03\x12\x13\n\x0fTRACK_PUBLISHED\x10\x04\x12\x1b\n\x17TRACK_PUBLISH_REQUESTED\x10\x14\x12\x15\n\x11TRACK_UNPUBLISHED\x10\x05\x12\x14\n\x10TRACK_SUBSCRIBED\x10\x06\x12\x1d\n\x19TRACK_SUBSCRIBE_REQUESTED\x10\x15\x12\x1a\n\x16TRACK_SUBSCRIBE_FAILED\x10\x19\x12\x16\n\x12TRACK_UNSUBSCRIBED\x10\x07\x12\x1a\n\x16TRACK_PUBLISHED_UPDATE\x10\n\x12\x0f\n\x0bTRACK_MUTED\x10\x17\x12\x11\n\rTRACK_UNMUTED\x10\x18\x12\x17\n\x13TRACK_PUBLISH_STATS\x10\x1a\x12\x19\n\x15TRACK_SUBSCRIBE_STATS\x10\x1b\x12\x16\n\x12PARTICIPANT_ACTIVE\x10\x0b\x12\x17\n\x13PARTICIPANT_RESUMED\x10\x16\x12\x12\n\x0e\x45GRESS_STARTED\x10\x0c\x12\x10\n\x0c\x45GRESS_ENDED\x10\r\x12\x12\n\x0e\x45GRESS_UPDATED\x10\x1c\x12&\n\"TRACK_MAX_SUBSCRIBED_VIDEO_QUALITY\x10\x0e\x12\x0f\n\x0bRECONNECTED\x10\x0f\x12\x13\n\x0fINGRESS_CREATED\x10\x12\x12\x13\n\x0fINGRESS_DELETED\x10\x13\x12\x13\n\x0fINGRESS_STARTED\x10\x10\x12\x11\n\rINGRESS_ENDED\x10\x11\x12\x13\n\x0fINGRESS_UPDATED\x10\x1d\x32\xf5\x01\n\x18\x41nalyticsRecorderService\x12\x42\n\x0bIngestStats\x12\x17.livekit.AnalyticsStats\x1a\x16.google.protobuf.Empty\"\x00(\x01\x12\x44\n\x0cIngestEvents\x12\x18.livekit.AnalyticsEvents\x1a\x16.google.protobuf.Empty\"\x00(\x01\x12O\n\x14IngestNodeRoomStates\x12\x1b.livekit.AnalyticsNodeRooms\x1a\x16.google.protobuf.Empty\"\x00(\x01\x42\x46Z#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17livekit_analytics.proto\x12\x07livekit\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x14livekit_models.proto\x1a\x14livekit_egress.proto\x1a\x15livekit_ingress.proto\"T\n\x13\x41nalyticsVideoLayer\x12\r\n\x05layer\x18\x01 \x01(\x05\x12\x0f\n\x07packets\x18\x02 \x01(\r\x12\r\n\x05\x62ytes\x18\x03 \x01(\x04\x12\x0e\n\x06\x66rames\x18\x04 \x01(\r\"\xb5\x03\n\x0f\x41nalyticsStream\x12\x0c\n\x04ssrc\x18\x01 \x01(\r\x12\x17\n\x0fprimary_packets\x18\x02 \x01(\r\x12\x15\n\rprimary_bytes\x18\x03 \x01(\x04\x12\x1a\n\x12retransmit_packets\x18\x04 \x01(\r\x12\x18\n\x10retransmit_bytes\x18\x05 \x01(\x04\x12\x17\n\x0fpadding_packets\x18\x06 \x01(\r\x12\x15\n\rpadding_bytes\x18\x07 \x01(\x04\x12\x14\n\x0cpackets_lost\x18\x08 \x01(\r\x12\x0e\n\x06\x66rames\x18\t \x01(\r\x12\x0b\n\x03rtt\x18\n \x01(\r\x12\x0e\n\x06jitter\x18\x0b \x01(\r\x12\r\n\x05nacks\x18\x0c \x01(\r\x12\x0c\n\x04plis\x18\r \x01(\r\x12\x0c\n\x04\x66irs\x18\x0e \x01(\r\x12\x32\n\x0cvideo_layers\x18\x0f \x03(\x0b\x32\x1c.livekit.AnalyticsVideoLayer\x12.\n\nstart_time\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xd2\x02\n\rAnalyticsStat\x12\n\n\x02id\x18\x0e \x01(\t\x12\x15\n\ranalytics_key\x18\x01 \x01(\t\x12!\n\x04kind\x18\x02 \x01(\x0e\x32\x13.livekit.StreamType\x12.\n\ntime_stamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04node\x18\x04 \x01(\t\x12\x0f\n\x07room_id\x18\x05 \x01(\t\x12\x11\n\troom_name\x18\x06 \x01(\t\x12\x16\n\x0eparticipant_id\x18\x07 \x01(\t\x12\x10\n\x08track_id\x18\x08 \x01(\t\x12\r\n\x05score\x18\t \x01(\x02\x12)\n\x07streams\x18\n \x03(\x0b\x32\x18.livekit.AnalyticsStream\x12\x0c\n\x04mime\x18\x0b \x01(\t\x12\x11\n\tmin_score\x18\x0c \x01(\x02\x12\x14\n\x0cmedian_score\x18\r \x01(\x02\"7\n\x0e\x41nalyticsStats\x12%\n\x05stats\x18\x01 \x03(\x0b\x32\x16.livekit.AnalyticsStat\"\x9a\x02\n\x13\x41nalyticsClientMeta\x12\x0e\n\x06region\x18\x01 \x01(\t\x12\x0c\n\x04node\x18\x02 \x01(\t\x12\x13\n\x0b\x63lient_addr\x18\x03 \x01(\t\x12\x1b\n\x13\x63lient_connect_time\x18\x04 \x01(\r\x12\x17\n\x0f\x63onnection_type\x18\x05 \x01(\t\x12\x32\n\x10reconnect_reason\x18\x06 \x01(\x0e\x32\x18.livekit.ReconnectReason\x12\x15\n\x08geo_hash\x18\x07 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07\x63ountry\x18\x08 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x07isp_asn\x18\t \x01(\rH\x02\x88\x01\x01\x42\x0b\n\t_geo_hashB\n\n\x08_countryB\n\n\x08_isp_asn\"\xda\x05\n\x0e\x41nalyticsEvent\x12\n\n\x02id\x18\x19 \x01(\t\x12)\n\x04type\x18\x01 \x01(\x0e\x32\x1b.livekit.AnalyticsEventType\x12-\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0f\n\x07room_id\x18\x03 \x01(\t\x12\x1b\n\x04room\x18\x04 \x01(\x0b\x32\r.livekit.Room\x12\x16\n\x0eparticipant_id\x18\x05 \x01(\t\x12-\n\x0bparticipant\x18\x06 \x01(\x0b\x32\x18.livekit.ParticipantInfo\x12\x10\n\x08track_id\x18\x07 \x01(\t\x12!\n\x05track\x18\x08 \x01(\x0b\x32\x12.livekit.TrackInfo\x12\x15\n\ranalytics_key\x18\n \x01(\t\x12(\n\x0b\x63lient_info\x18\x0b \x01(\x0b\x32\x13.livekit.ClientInfo\x12\x31\n\x0b\x63lient_meta\x18\x0c \x01(\x0b\x32\x1c.livekit.AnalyticsClientMeta\x12\x11\n\tegress_id\x18\r \x01(\t\x12\x12\n\ningress_id\x18\x13 \x01(\t\x12;\n\x1cmax_subscribed_video_quality\x18\x0e \x01(\x0e\x32\x15.livekit.VideoQuality\x12+\n\tpublisher\x18\x0f \x01(\x0b\x32\x18.livekit.ParticipantInfo\x12\x0c\n\x04mime\x18\x10 \x01(\t\x12#\n\x06\x65gress\x18\x11 \x01(\x0b\x32\x13.livekit.EgressInfo\x12%\n\x07ingress\x18\x12 \x01(\x0b\x32\x14.livekit.IngressInfo\x12\r\n\x05\x65rror\x18\x14 \x01(\t\x12$\n\trtp_stats\x18\x15 \x01(\x0b\x32\x11.livekit.RTPStats\x12\x13\n\x0bvideo_layer\x18\x16 \x01(\x05\x12\x0f\n\x07node_id\x18\x18 \x01(\t\":\n\x0f\x41nalyticsEvents\x12\'\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x17.livekit.AnalyticsEvent\"\xa4\x01\n\x18\x41nalyticsRoomParticipant\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12-\n\x05state\x18\x04 \x01(\x0e\x32\x1e.livekit.ParticipantInfo.State\x12-\n\tjoined_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xa6\x01\n\rAnalyticsRoom\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\nproject_id\x18\x05 \x01(\t\x12.\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x37\n\x0cparticipants\x18\x04 \x03(\x0b\x32!.livekit.AnalyticsRoomParticipant\"\x94\x01\n\x12\x41nalyticsNodeRooms\x12\x0f\n\x07node_id\x18\x01 \x01(\t\x12\x17\n\x0fsequence_number\x18\x02 \x01(\x04\x12-\n\ttimestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12%\n\x05rooms\x18\x04 \x03(\x0b\x32\x16.livekit.AnalyticsRoom**\n\nStreamType\x12\x0c\n\x08UPSTREAM\x10\x00\x12\x0e\n\nDOWNSTREAM\x10\x01*\x95\x05\n\x12\x41nalyticsEventType\x12\x10\n\x0cROOM_CREATED\x10\x00\x12\x0e\n\nROOM_ENDED\x10\x01\x12\x16\n\x12PARTICIPANT_JOINED\x10\x02\x12\x14\n\x10PARTICIPANT_LEFT\x10\x03\x12\x13\n\x0fTRACK_PUBLISHED\x10\x04\x12\x1b\n\x17TRACK_PUBLISH_REQUESTED\x10\x14\x12\x15\n\x11TRACK_UNPUBLISHED\x10\x05\x12\x14\n\x10TRACK_SUBSCRIBED\x10\x06\x12\x1d\n\x19TRACK_SUBSCRIBE_REQUESTED\x10\x15\x12\x1a\n\x16TRACK_SUBSCRIBE_FAILED\x10\x19\x12\x16\n\x12TRACK_UNSUBSCRIBED\x10\x07\x12\x1a\n\x16TRACK_PUBLISHED_UPDATE\x10\n\x12\x0f\n\x0bTRACK_MUTED\x10\x17\x12\x11\n\rTRACK_UNMUTED\x10\x18\x12\x17\n\x13TRACK_PUBLISH_STATS\x10\x1a\x12\x19\n\x15TRACK_SUBSCRIBE_STATS\x10\x1b\x12\x16\n\x12PARTICIPANT_ACTIVE\x10\x0b\x12\x17\n\x13PARTICIPANT_RESUMED\x10\x16\x12\x12\n\x0e\x45GRESS_STARTED\x10\x0c\x12\x10\n\x0c\x45GRESS_ENDED\x10\r\x12\x12\n\x0e\x45GRESS_UPDATED\x10\x1c\x12&\n\"TRACK_MAX_SUBSCRIBED_VIDEO_QUALITY\x10\x0e\x12\x0f\n\x0bRECONNECTED\x10\x0f\x12\x13\n\x0fINGRESS_CREATED\x10\x12\x12\x13\n\x0fINGRESS_DELETED\x10\x13\x12\x13\n\x0fINGRESS_STARTED\x10\x10\x12\x11\n\rINGRESS_ENDED\x10\x11\x12\x13\n\x0fINGRESS_UPDATED\x10\x1d\x42\x46Z#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'analytics', _globals) if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None - _globals['DESCRIPTOR']._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' - _globals['_STREAMTYPE']._serialized_start=2613 - _globals['_STREAMTYPE']._serialized_end=2655 - _globals['_ANALYTICSEVENTTYPE']._serialized_start=2658 - _globals['_ANALYTICSEVENTTYPE']._serialized_end=3319 - _globals['_ANALYTICSVIDEOLAYER']._serialized_start=165 - _globals['_ANALYTICSVIDEOLAYER']._serialized_end=249 - _globals['_ANALYTICSSTREAM']._serialized_start=252 - _globals['_ANALYTICSSTREAM']._serialized_end=689 - _globals['_ANALYTICSSTAT']._serialized_start=692 - _globals['_ANALYTICSSTAT']._serialized_end=1018 - _globals['_ANALYTICSSTATS']._serialized_start=1020 - _globals['_ANALYTICSSTATS']._serialized_end=1075 - _globals['_ANALYTICSCLIENTMETA']._serialized_start=1078 - _globals['_ANALYTICSCLIENTMETA']._serialized_end=1360 - _globals['_ANALYTICSEVENT']._serialized_start=1363 - _globals['_ANALYTICSEVENT']._serialized_end=2064 - _globals['_ANALYTICSEVENTS']._serialized_start=2066 - _globals['_ANALYTICSEVENTS']._serialized_end=2124 - _globals['_ANALYTICSROOMPARTICIPANT']._serialized_start=2127 - _globals['_ANALYTICSROOMPARTICIPANT']._serialized_end=2291 - _globals['_ANALYTICSROOM']._serialized_start=2294 - _globals['_ANALYTICSROOM']._serialized_end=2460 - _globals['_ANALYTICSNODEROOMS']._serialized_start=2463 - _globals['_ANALYTICSNODEROOMS']._serialized_end=2611 - _globals['_ANALYTICSRECORDERSERVICE']._serialized_start=3322 - _globals['_ANALYTICSRECORDERSERVICE']._serialized_end=3567 + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' + _globals['_STREAMTYPE']._serialized_start=2625 + _globals['_STREAMTYPE']._serialized_end=2667 + _globals['_ANALYTICSEVENTTYPE']._serialized_start=2670 + _globals['_ANALYTICSEVENTTYPE']._serialized_end=3331 + _globals['_ANALYTICSVIDEOLAYER']._serialized_start=136 + _globals['_ANALYTICSVIDEOLAYER']._serialized_end=220 + _globals['_ANALYTICSSTREAM']._serialized_start=223 + _globals['_ANALYTICSSTREAM']._serialized_end=660 + _globals['_ANALYTICSSTAT']._serialized_start=663 + _globals['_ANALYTICSSTAT']._serialized_end=1001 + _globals['_ANALYTICSSTATS']._serialized_start=1003 + _globals['_ANALYTICSSTATS']._serialized_end=1058 + _globals['_ANALYTICSCLIENTMETA']._serialized_start=1061 + _globals['_ANALYTICSCLIENTMETA']._serialized_end=1343 + _globals['_ANALYTICSEVENT']._serialized_start=1346 + _globals['_ANALYTICSEVENT']._serialized_end=2076 + _globals['_ANALYTICSEVENTS']._serialized_start=2078 + _globals['_ANALYTICSEVENTS']._serialized_end=2136 + _globals['_ANALYTICSROOMPARTICIPANT']._serialized_start=2139 + _globals['_ANALYTICSROOMPARTICIPANT']._serialized_end=2303 + _globals['_ANALYTICSROOM']._serialized_start=2306 + _globals['_ANALYTICSROOM']._serialized_end=2472 + _globals['_ANALYTICSNODEROOMS']._serialized_start=2475 + _globals['_ANALYTICSNODEROOMS']._serialized_end=2623 # @@protoc_insertion_point(module_scope) diff --git a/livekit-protocol/livekit/protocol/analytics.pyi b/livekit-protocol/livekit/protocol/analytics.pyi index 75457397..5a5142ae 100644 --- a/livekit-protocol/livekit/protocol/analytics.pyi +++ b/livekit-protocol/livekit/protocol/analytics.pyi @@ -1,4 +1,3 @@ -from google.protobuf import empty_pb2 as _empty_pb2 from google.protobuf import timestamp_pb2 as _timestamp_pb2 from . import models as _models from . import egress as _egress @@ -12,12 +11,12 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map DESCRIPTOR: _descriptor.FileDescriptor class StreamType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] UPSTREAM: _ClassVar[StreamType] DOWNSTREAM: _ClassVar[StreamType] class AnalyticsEventType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] ROOM_CREATED: _ClassVar[AnalyticsEventType] ROOM_ENDED: _ClassVar[AnalyticsEventType] PARTICIPANT_JOINED: _ClassVar[AnalyticsEventType] @@ -78,7 +77,7 @@ INGRESS_ENDED: AnalyticsEventType INGRESS_UPDATED: AnalyticsEventType class AnalyticsVideoLayer(_message.Message): - __slots__ = ("layer", "packets", "bytes", "frames") + __slots__ = ["layer", "packets", "bytes", "frames"] LAYER_FIELD_NUMBER: _ClassVar[int] PACKETS_FIELD_NUMBER: _ClassVar[int] BYTES_FIELD_NUMBER: _ClassVar[int] @@ -90,7 +89,7 @@ class AnalyticsVideoLayer(_message.Message): def __init__(self, layer: _Optional[int] = ..., packets: _Optional[int] = ..., bytes: _Optional[int] = ..., frames: _Optional[int] = ...) -> None: ... class AnalyticsStream(_message.Message): - __slots__ = ("ssrc", "primary_packets", "primary_bytes", "retransmit_packets", "retransmit_bytes", "padding_packets", "padding_bytes", "packets_lost", "frames", "rtt", "jitter", "nacks", "plis", "firs", "video_layers", "start_time", "end_time") + __slots__ = ["ssrc", "primary_packets", "primary_bytes", "retransmit_packets", "retransmit_bytes", "padding_packets", "padding_bytes", "packets_lost", "frames", "rtt", "jitter", "nacks", "plis", "firs", "video_layers", "start_time", "end_time"] SSRC_FIELD_NUMBER: _ClassVar[int] PRIMARY_PACKETS_FIELD_NUMBER: _ClassVar[int] PRIMARY_BYTES_FIELD_NUMBER: _ClassVar[int] @@ -128,7 +127,8 @@ class AnalyticsStream(_message.Message): def __init__(self, ssrc: _Optional[int] = ..., primary_packets: _Optional[int] = ..., primary_bytes: _Optional[int] = ..., retransmit_packets: _Optional[int] = ..., retransmit_bytes: _Optional[int] = ..., padding_packets: _Optional[int] = ..., padding_bytes: _Optional[int] = ..., packets_lost: _Optional[int] = ..., frames: _Optional[int] = ..., rtt: _Optional[int] = ..., jitter: _Optional[int] = ..., nacks: _Optional[int] = ..., plis: _Optional[int] = ..., firs: _Optional[int] = ..., video_layers: _Optional[_Iterable[_Union[AnalyticsVideoLayer, _Mapping]]] = ..., start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., end_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... class AnalyticsStat(_message.Message): - __slots__ = ("analytics_key", "kind", "time_stamp", "node", "room_id", "room_name", "participant_id", "track_id", "score", "streams", "mime", "min_score", "median_score") + __slots__ = ["id", "analytics_key", "kind", "time_stamp", "node", "room_id", "room_name", "participant_id", "track_id", "score", "streams", "mime", "min_score", "median_score"] + ID_FIELD_NUMBER: _ClassVar[int] ANALYTICS_KEY_FIELD_NUMBER: _ClassVar[int] KIND_FIELD_NUMBER: _ClassVar[int] TIME_STAMP_FIELD_NUMBER: _ClassVar[int] @@ -142,6 +142,7 @@ class AnalyticsStat(_message.Message): MIME_FIELD_NUMBER: _ClassVar[int] MIN_SCORE_FIELD_NUMBER: _ClassVar[int] MEDIAN_SCORE_FIELD_NUMBER: _ClassVar[int] + id: str analytics_key: str kind: StreamType time_stamp: _timestamp_pb2.Timestamp @@ -155,16 +156,16 @@ class AnalyticsStat(_message.Message): mime: str min_score: float median_score: float - def __init__(self, analytics_key: _Optional[str] = ..., kind: _Optional[_Union[StreamType, str]] = ..., time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., node: _Optional[str] = ..., room_id: _Optional[str] = ..., room_name: _Optional[str] = ..., participant_id: _Optional[str] = ..., track_id: _Optional[str] = ..., score: _Optional[float] = ..., streams: _Optional[_Iterable[_Union[AnalyticsStream, _Mapping]]] = ..., mime: _Optional[str] = ..., min_score: _Optional[float] = ..., median_score: _Optional[float] = ...) -> None: ... + def __init__(self, id: _Optional[str] = ..., analytics_key: _Optional[str] = ..., kind: _Optional[_Union[StreamType, str]] = ..., time_stamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., node: _Optional[str] = ..., room_id: _Optional[str] = ..., room_name: _Optional[str] = ..., participant_id: _Optional[str] = ..., track_id: _Optional[str] = ..., score: _Optional[float] = ..., streams: _Optional[_Iterable[_Union[AnalyticsStream, _Mapping]]] = ..., mime: _Optional[str] = ..., min_score: _Optional[float] = ..., median_score: _Optional[float] = ...) -> None: ... class AnalyticsStats(_message.Message): - __slots__ = ("stats",) + __slots__ = ["stats"] STATS_FIELD_NUMBER: _ClassVar[int] stats: _containers.RepeatedCompositeFieldContainer[AnalyticsStat] def __init__(self, stats: _Optional[_Iterable[_Union[AnalyticsStat, _Mapping]]] = ...) -> None: ... class AnalyticsClientMeta(_message.Message): - __slots__ = ("region", "node", "client_addr", "client_connect_time", "connection_type", "reconnect_reason", "geo_hash", "country", "isp_asn") + __slots__ = ["region", "node", "client_addr", "client_connect_time", "connection_type", "reconnect_reason", "geo_hash", "country", "isp_asn"] REGION_FIELD_NUMBER: _ClassVar[int] NODE_FIELD_NUMBER: _ClassVar[int] CLIENT_ADDR_FIELD_NUMBER: _ClassVar[int] @@ -186,7 +187,8 @@ class AnalyticsClientMeta(_message.Message): def __init__(self, region: _Optional[str] = ..., node: _Optional[str] = ..., client_addr: _Optional[str] = ..., client_connect_time: _Optional[int] = ..., connection_type: _Optional[str] = ..., reconnect_reason: _Optional[_Union[_models.ReconnectReason, str]] = ..., geo_hash: _Optional[str] = ..., country: _Optional[str] = ..., isp_asn: _Optional[int] = ...) -> None: ... class AnalyticsEvent(_message.Message): - __slots__ = ("type", "timestamp", "room_id", "room", "participant_id", "participant", "track_id", "track", "analytics_key", "client_info", "client_meta", "egress_id", "ingress_id", "max_subscribed_video_quality", "publisher", "mime", "egress", "ingress", "error", "rtp_stats", "video_layer") + __slots__ = ["id", "type", "timestamp", "room_id", "room", "participant_id", "participant", "track_id", "track", "analytics_key", "client_info", "client_meta", "egress_id", "ingress_id", "max_subscribed_video_quality", "publisher", "mime", "egress", "ingress", "error", "rtp_stats", "video_layer", "node_id"] + ID_FIELD_NUMBER: _ClassVar[int] TYPE_FIELD_NUMBER: _ClassVar[int] TIMESTAMP_FIELD_NUMBER: _ClassVar[int] ROOM_ID_FIELD_NUMBER: _ClassVar[int] @@ -208,6 +210,8 @@ class AnalyticsEvent(_message.Message): ERROR_FIELD_NUMBER: _ClassVar[int] RTP_STATS_FIELD_NUMBER: _ClassVar[int] VIDEO_LAYER_FIELD_NUMBER: _ClassVar[int] + NODE_ID_FIELD_NUMBER: _ClassVar[int] + id: str type: AnalyticsEventType timestamp: _timestamp_pb2.Timestamp room_id: str @@ -229,16 +233,17 @@ class AnalyticsEvent(_message.Message): error: str rtp_stats: _models.RTPStats video_layer: int - def __init__(self, type: _Optional[_Union[AnalyticsEventType, str]] = ..., timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., room_id: _Optional[str] = ..., room: _Optional[_Union[_models.Room, _Mapping]] = ..., participant_id: _Optional[str] = ..., participant: _Optional[_Union[_models.ParticipantInfo, _Mapping]] = ..., track_id: _Optional[str] = ..., track: _Optional[_Union[_models.TrackInfo, _Mapping]] = ..., analytics_key: _Optional[str] = ..., client_info: _Optional[_Union[_models.ClientInfo, _Mapping]] = ..., client_meta: _Optional[_Union[AnalyticsClientMeta, _Mapping]] = ..., egress_id: _Optional[str] = ..., ingress_id: _Optional[str] = ..., max_subscribed_video_quality: _Optional[_Union[_models.VideoQuality, str]] = ..., publisher: _Optional[_Union[_models.ParticipantInfo, _Mapping]] = ..., mime: _Optional[str] = ..., egress: _Optional[_Union[_egress.EgressInfo, _Mapping]] = ..., ingress: _Optional[_Union[_ingress.IngressInfo, _Mapping]] = ..., error: _Optional[str] = ..., rtp_stats: _Optional[_Union[_models.RTPStats, _Mapping]] = ..., video_layer: _Optional[int] = ...) -> None: ... + node_id: str + def __init__(self, id: _Optional[str] = ..., type: _Optional[_Union[AnalyticsEventType, str]] = ..., timestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., room_id: _Optional[str] = ..., room: _Optional[_Union[_models.Room, _Mapping]] = ..., participant_id: _Optional[str] = ..., participant: _Optional[_Union[_models.ParticipantInfo, _Mapping]] = ..., track_id: _Optional[str] = ..., track: _Optional[_Union[_models.TrackInfo, _Mapping]] = ..., analytics_key: _Optional[str] = ..., client_info: _Optional[_Union[_models.ClientInfo, _Mapping]] = ..., client_meta: _Optional[_Union[AnalyticsClientMeta, _Mapping]] = ..., egress_id: _Optional[str] = ..., ingress_id: _Optional[str] = ..., max_subscribed_video_quality: _Optional[_Union[_models.VideoQuality, str]] = ..., publisher: _Optional[_Union[_models.ParticipantInfo, _Mapping]] = ..., mime: _Optional[str] = ..., egress: _Optional[_Union[_egress.EgressInfo, _Mapping]] = ..., ingress: _Optional[_Union[_ingress.IngressInfo, _Mapping]] = ..., error: _Optional[str] = ..., rtp_stats: _Optional[_Union[_models.RTPStats, _Mapping]] = ..., video_layer: _Optional[int] = ..., node_id: _Optional[str] = ...) -> None: ... class AnalyticsEvents(_message.Message): - __slots__ = ("events",) + __slots__ = ["events"] EVENTS_FIELD_NUMBER: _ClassVar[int] events: _containers.RepeatedCompositeFieldContainer[AnalyticsEvent] def __init__(self, events: _Optional[_Iterable[_Union[AnalyticsEvent, _Mapping]]] = ...) -> None: ... class AnalyticsRoomParticipant(_message.Message): - __slots__ = ("id", "identity", "name", "state", "joined_at") + __slots__ = ["id", "identity", "name", "state", "joined_at"] ID_FIELD_NUMBER: _ClassVar[int] IDENTITY_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] @@ -252,7 +257,7 @@ class AnalyticsRoomParticipant(_message.Message): def __init__(self, id: _Optional[str] = ..., identity: _Optional[str] = ..., name: _Optional[str] = ..., state: _Optional[_Union[_models.ParticipantInfo.State, str]] = ..., joined_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... class AnalyticsRoom(_message.Message): - __slots__ = ("id", "name", "project_id", "created_at", "participants") + __slots__ = ["id", "name", "project_id", "created_at", "participants"] ID_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] PROJECT_ID_FIELD_NUMBER: _ClassVar[int] @@ -266,7 +271,7 @@ class AnalyticsRoom(_message.Message): def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., project_id: _Optional[str] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., participants: _Optional[_Iterable[_Union[AnalyticsRoomParticipant, _Mapping]]] = ...) -> None: ... class AnalyticsNodeRooms(_message.Message): - __slots__ = ("node_id", "sequence_number", "timestamp", "rooms") + __slots__ = ["node_id", "sequence_number", "timestamp", "rooms"] NODE_ID_FIELD_NUMBER: _ClassVar[int] SEQUENCE_NUMBER_FIELD_NUMBER: _ClassVar[int] TIMESTAMP_FIELD_NUMBER: _ClassVar[int] diff --git a/livekit-protocol/livekit/protocol/egress.py b/livekit-protocol/livekit/protocol/egress.py index 478fedb8..c7848fe5 100644 --- a/livekit-protocol/livekit/protocol/egress.py +++ b/livekit-protocol/livekit/protocol/egress.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_egress.proto -# Protobuf Python Version: 4.25.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -15,56 +14,57 @@ from . import models as _models_ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14livekit_egress.proto\x12\x07livekit\x1a\x14livekit_models.proto\"\xcd\x04\n\x1aRoomCompositeEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x0e\n\x06layout\x18\x02 \x01(\t\x12\x12\n\naudio_only\x18\x03 \x01(\x08\x12\x12\n\nvideo_only\x18\x04 \x01(\x08\x12\x17\n\x0f\x63ustom_base_url\x18\x05 \x01(\t\x12.\n\x04\x66ile\x18\x06 \x01(\x0b\x32\x1a.livekit.EncodedFileOutputB\x02\x18\x01H\x00\x12+\n\x06stream\x18\x07 \x01(\x0b\x32\x15.livekit.StreamOutputB\x02\x18\x01H\x00\x12\x34\n\x08segments\x18\n \x01(\x0b\x32\x1c.livekit.SegmentedFileOutputB\x02\x18\x01H\x00\x12\x30\n\x06preset\x18\x08 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x01\x12,\n\x08\x61\x64vanced\x18\t \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x01\x12\x30\n\x0c\x66ile_outputs\x18\x0b \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12-\n\x0estream_outputs\x18\x0c \x03(\x0b\x32\x15.livekit.StreamOutput\x12\x35\n\x0fsegment_outputs\x18\r \x03(\x0b\x32\x1c.livekit.SegmentedFileOutput\x12+\n\rimage_outputs\x18\x0e \x03(\x0b\x32\x14.livekit.ImageOutputB\x08\n\x06outputB\t\n\x07options\"\xb0\x04\n\x10WebEgressRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x12\n\naudio_only\x18\x02 \x01(\x08\x12\x12\n\nvideo_only\x18\x03 \x01(\x08\x12\x1a\n\x12\x61wait_start_signal\x18\x0c \x01(\x08\x12.\n\x04\x66ile\x18\x04 \x01(\x0b\x32\x1a.livekit.EncodedFileOutputB\x02\x18\x01H\x00\x12+\n\x06stream\x18\x05 \x01(\x0b\x32\x15.livekit.StreamOutputB\x02\x18\x01H\x00\x12\x34\n\x08segments\x18\x06 \x01(\x0b\x32\x1c.livekit.SegmentedFileOutputB\x02\x18\x01H\x00\x12\x30\n\x06preset\x18\x07 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x01\x12,\n\x08\x61\x64vanced\x18\x08 \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x01\x12\x30\n\x0c\x66ile_outputs\x18\t \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12-\n\x0estream_outputs\x18\n \x03(\x0b\x32\x15.livekit.StreamOutput\x12\x35\n\x0fsegment_outputs\x18\x0b \x03(\x0b\x32\x1c.livekit.SegmentedFileOutput\x12+\n\rimage_outputs\x18\r \x03(\x0b\x32\x14.livekit.ImageOutputB\x08\n\x06outputB\t\n\x07options\"\x85\x03\n\x18ParticipantEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x14\n\x0cscreen_share\x18\x03 \x01(\x08\x12\x30\n\x06preset\x18\x04 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x00\x12,\n\x08\x61\x64vanced\x18\x05 \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x00\x12\x30\n\x0c\x66ile_outputs\x18\x06 \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12-\n\x0estream_outputs\x18\x07 \x03(\x0b\x32\x15.livekit.StreamOutput\x12\x35\n\x0fsegment_outputs\x18\x08 \x03(\x0b\x32\x1c.livekit.SegmentedFileOutput\x12+\n\rimage_outputs\x18\t \x03(\x0b\x32\x14.livekit.ImageOutputB\t\n\x07options\"\xad\x04\n\x1bTrackCompositeEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x16\n\x0e\x61udio_track_id\x18\x02 \x01(\t\x12\x16\n\x0evideo_track_id\x18\x03 \x01(\t\x12.\n\x04\x66ile\x18\x04 \x01(\x0b\x32\x1a.livekit.EncodedFileOutputB\x02\x18\x01H\x00\x12+\n\x06stream\x18\x05 \x01(\x0b\x32\x15.livekit.StreamOutputB\x02\x18\x01H\x00\x12\x34\n\x08segments\x18\x08 \x01(\x0b\x32\x1c.livekit.SegmentedFileOutputB\x02\x18\x01H\x00\x12\x30\n\x06preset\x18\x06 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x01\x12,\n\x08\x61\x64vanced\x18\x07 \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x01\x12\x30\n\x0c\x66ile_outputs\x18\x0b \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12-\n\x0estream_outputs\x18\x0c \x03(\x0b\x32\x15.livekit.StreamOutput\x12\x35\n\x0fsegment_outputs\x18\r \x03(\x0b\x32\x1c.livekit.SegmentedFileOutput\x12+\n\rimage_outputs\x18\x0e \x03(\x0b\x32\x14.livekit.ImageOutputB\x08\n\x06outputB\t\n\x07options\"\x87\x01\n\x12TrackEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x10\n\x08track_id\x18\x02 \x01(\t\x12)\n\x04\x66ile\x18\x03 \x01(\x0b\x32\x19.livekit.DirectFileOutputH\x00\x12\x17\n\rwebsocket_url\x18\x04 \x01(\tH\x00\x42\x08\n\x06output\"\x8e\x02\n\x11\x45ncodedFileOutput\x12+\n\tfile_type\x18\x01 \x01(\x0e\x32\x18.livekit.EncodedFileType\x12\x10\n\x08\x66ilepath\x18\x02 \x01(\t\x12\x18\n\x10\x64isable_manifest\x18\x06 \x01(\x08\x12\x1f\n\x02s3\x18\x03 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\x04 \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\x05 \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\x07 \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output\"\xa0\x03\n\x13SegmentedFileOutput\x12\x30\n\x08protocol\x18\x01 \x01(\x0e\x32\x1e.livekit.SegmentedFileProtocol\x12\x17\n\x0f\x66ilename_prefix\x18\x02 \x01(\t\x12\x15\n\rplaylist_name\x18\x03 \x01(\t\x12\x1a\n\x12live_playlist_name\x18\x0b \x01(\t\x12\x18\n\x10segment_duration\x18\x04 \x01(\r\x12\x35\n\x0f\x66ilename_suffix\x18\n \x01(\x0e\x32\x1c.livekit.SegmentedFileSuffix\x12\x18\n\x10\x64isable_manifest\x18\x08 \x01(\x08\x12\x1f\n\x02s3\x18\x05 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\x06 \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\x07 \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\t \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output\"\xe0\x01\n\x10\x44irectFileOutput\x12\x10\n\x08\x66ilepath\x18\x01 \x01(\t\x12\x18\n\x10\x64isable_manifest\x18\x05 \x01(\x08\x12\x1f\n\x02s3\x18\x02 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\x03 \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\x04 \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\x06 \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output\"\xf8\x02\n\x0bImageOutput\x12\x18\n\x10\x63\x61pture_interval\x18\x01 \x01(\r\x12\r\n\x05width\x18\x02 \x01(\x05\x12\x0e\n\x06height\x18\x03 \x01(\x05\x12\x17\n\x0f\x66ilename_prefix\x18\x04 \x01(\t\x12\x31\n\x0f\x66ilename_suffix\x18\x05 \x01(\x0e\x32\x18.livekit.ImageFileSuffix\x12(\n\x0bimage_codec\x18\x06 \x01(\x0e\x32\x13.livekit.ImageCodec\x12\x18\n\x10\x64isable_manifest\x18\x07 \x01(\x08\x12\x1f\n\x02s3\x18\x08 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\t \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\n \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\x0b \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output\"\xb1\x02\n\x08S3Upload\x12\x12\n\naccess_key\x18\x01 \x01(\t\x12\x0e\n\x06secret\x18\x02 \x01(\t\x12\x0e\n\x06region\x18\x03 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x04 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x05 \x01(\t\x12\x18\n\x10\x66orce_path_style\x18\x06 \x01(\x08\x12\x31\n\x08metadata\x18\x07 \x03(\x0b\x32\x1f.livekit.S3Upload.MetadataEntry\x12\x0f\n\x07tagging\x18\x08 \x01(\t\x12\x1b\n\x13\x63ontent_disposition\x18\t \x01(\t\x12#\n\x05proxy\x18\n \x01(\x0b\x32\x14.livekit.ProxyConfig\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"U\n\tGCPUpload\x12\x13\n\x0b\x63redentials\x18\x01 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x02 \x01(\t\x12#\n\x05proxy\x18\x03 \x01(\x0b\x32\x14.livekit.ProxyConfig\"T\n\x0f\x41zureBlobUpload\x12\x14\n\x0c\x61\x63\x63ount_name\x18\x01 \x01(\t\x12\x13\n\x0b\x61\x63\x63ount_key\x18\x02 \x01(\t\x12\x16\n\x0e\x63ontainer_name\x18\x03 \x01(\t\"d\n\x0c\x41liOSSUpload\x12\x12\n\naccess_key\x18\x01 \x01(\t\x12\x0e\n\x06secret\x18\x02 \x01(\t\x12\x0e\n\x06region\x18\x03 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x04 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x05 \x01(\t\">\n\x0bProxyConfig\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x10\n\x08username\x18\x02 \x01(\t\x12\x10\n\x08password\x18\x03 \x01(\t\"G\n\x0cStreamOutput\x12)\n\x08protocol\x18\x01 \x01(\x0e\x32\x17.livekit.StreamProtocol\x12\x0c\n\x04urls\x18\x02 \x03(\t\"\xb7\x02\n\x0f\x45ncodingOptions\x12\r\n\x05width\x18\x01 \x01(\x05\x12\x0e\n\x06height\x18\x02 \x01(\x05\x12\r\n\x05\x64\x65pth\x18\x03 \x01(\x05\x12\x11\n\tframerate\x18\x04 \x01(\x05\x12(\n\x0b\x61udio_codec\x18\x05 \x01(\x0e\x32\x13.livekit.AudioCodec\x12\x15\n\raudio_bitrate\x18\x06 \x01(\x05\x12\x15\n\raudio_quality\x18\x0b \x01(\x05\x12\x17\n\x0f\x61udio_frequency\x18\x07 \x01(\x05\x12(\n\x0bvideo_codec\x18\x08 \x01(\x0e\x32\x13.livekit.VideoCodec\x12\x15\n\rvideo_bitrate\x18\t \x01(\x05\x12\x15\n\rvideo_quality\x18\x0c \x01(\x05\x12\x1a\n\x12key_frame_interval\x18\n \x01(\x01\"8\n\x13UpdateLayoutRequest\x12\x11\n\tegress_id\x18\x01 \x01(\t\x12\x0e\n\x06layout\x18\x02 \x01(\t\"]\n\x13UpdateStreamRequest\x12\x11\n\tegress_id\x18\x01 \x01(\t\x12\x17\n\x0f\x61\x64\x64_output_urls\x18\x02 \x03(\t\x12\x1a\n\x12remove_output_urls\x18\x03 \x03(\t\"I\n\x11ListEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x11\n\tegress_id\x18\x02 \x01(\t\x12\x0e\n\x06\x61\x63tive\x18\x03 \x01(\x08\"8\n\x12ListEgressResponse\x12\"\n\x05items\x18\x01 \x03(\x0b\x32\x13.livekit.EgressInfo\"&\n\x11StopEgressRequest\x12\x11\n\tegress_id\x18\x01 \x01(\t\"\xa2\x06\n\nEgressInfo\x12\x11\n\tegress_id\x18\x01 \x01(\t\x12\x0f\n\x07room_id\x18\x02 \x01(\t\x12\x11\n\troom_name\x18\r \x01(\t\x12%\n\x06status\x18\x03 \x01(\x0e\x32\x15.livekit.EgressStatus\x12\x12\n\nstarted_at\x18\n \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x0b \x01(\x03\x12\x12\n\nupdated_at\x18\x12 \x01(\x03\x12\x0f\n\x07\x64\x65tails\x18\x15 \x01(\t\x12\r\n\x05\x65rror\x18\t \x01(\t\x12=\n\x0eroom_composite\x18\x04 \x01(\x0b\x32#.livekit.RoomCompositeEgressRequestH\x00\x12(\n\x03web\x18\x0e \x01(\x0b\x32\x19.livekit.WebEgressRequestH\x00\x12\x38\n\x0bparticipant\x18\x13 \x01(\x0b\x32!.livekit.ParticipantEgressRequestH\x00\x12?\n\x0ftrack_composite\x18\x05 \x01(\x0b\x32$.livekit.TrackCompositeEgressRequestH\x00\x12,\n\x05track\x18\x06 \x01(\x0b\x32\x1b.livekit.TrackEgressRequestH\x00\x12-\n\x06stream\x18\x07 \x01(\x0b\x32\x17.livekit.StreamInfoListB\x02\x18\x01H\x01\x12%\n\x04\x66ile\x18\x08 \x01(\x0b\x32\x11.livekit.FileInfoB\x02\x18\x01H\x01\x12-\n\x08segments\x18\x0c \x01(\x0b\x32\x15.livekit.SegmentsInfoB\x02\x18\x01H\x01\x12+\n\x0estream_results\x18\x0f \x03(\x0b\x32\x13.livekit.StreamInfo\x12\'\n\x0c\x66ile_results\x18\x10 \x03(\x0b\x32\x11.livekit.FileInfo\x12.\n\x0fsegment_results\x18\x11 \x03(\x0b\x32\x15.livekit.SegmentsInfo\x12*\n\rimage_results\x18\x14 \x03(\x0b\x32\x13.livekit.ImagesInfoB\t\n\x07requestB\x08\n\x06result\"7\n\x0eStreamInfoList\x12!\n\x04info\x18\x01 \x03(\x0b\x32\x13.livekit.StreamInfo:\x02\x18\x01\"\xbc\x01\n\nStreamInfo\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x12\n\nstarted_at\x18\x02 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x03 \x01(\x03\x12\x10\n\x08\x64uration\x18\x04 \x01(\x03\x12*\n\x06status\x18\x05 \x01(\x0e\x32\x1a.livekit.StreamInfo.Status\x12\r\n\x05\x65rror\x18\x06 \x01(\t\".\n\x06Status\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\x0c\n\x08\x46INISHED\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\"t\n\x08\x46ileInfo\x12\x10\n\x08\x66ilename\x18\x01 \x01(\t\x12\x12\n\nstarted_at\x18\x02 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x03 \x01(\x03\x12\x10\n\x08\x64uration\x18\x06 \x01(\x03\x12\x0c\n\x04size\x18\x04 \x01(\x03\x12\x10\n\x08location\x18\x05 \x01(\t\"\xd9\x01\n\x0cSegmentsInfo\x12\x15\n\rplaylist_name\x18\x01 \x01(\t\x12\x1a\n\x12live_playlist_name\x18\x08 \x01(\t\x12\x10\n\x08\x64uration\x18\x02 \x01(\x03\x12\x0c\n\x04size\x18\x03 \x01(\x03\x12\x19\n\x11playlist_location\x18\x04 \x01(\t\x12\x1e\n\x16live_playlist_location\x18\t \x01(\t\x12\x15\n\rsegment_count\x18\x05 \x01(\x03\x12\x12\n\nstarted_at\x18\x06 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x07 \x01(\x03\"G\n\nImagesInfo\x12\x13\n\x0bimage_count\x18\x01 \x01(\x03\x12\x12\n\nstarted_at\x18\x02 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x03 \x01(\x03\"\xeb\x01\n\x15\x41utoParticipantEgress\x12\x30\n\x06preset\x18\x01 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x00\x12,\n\x08\x61\x64vanced\x18\x02 \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x00\x12\x30\n\x0c\x66ile_outputs\x18\x03 \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12\x35\n\x0fsegment_outputs\x18\x04 \x03(\x0b\x32\x1c.livekit.SegmentedFileOutputB\t\n\x07options\"\xb6\x01\n\x0f\x41utoTrackEgress\x12\x10\n\x08\x66ilepath\x18\x01 \x01(\t\x12\x18\n\x10\x64isable_manifest\x18\x05 \x01(\x08\x12\x1f\n\x02s3\x18\x02 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\x03 \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\x04 \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x42\x08\n\x06output*9\n\x0f\x45ncodedFileType\x12\x14\n\x10\x44\x45\x46\x41ULT_FILETYPE\x10\x00\x12\x07\n\x03MP4\x10\x01\x12\x07\n\x03OGG\x10\x02*N\n\x15SegmentedFileProtocol\x12#\n\x1f\x44\x45\x46\x41ULT_SEGMENTED_FILE_PROTOCOL\x10\x00\x12\x10\n\x0cHLS_PROTOCOL\x10\x01*/\n\x13SegmentedFileSuffix\x12\t\n\x05INDEX\x10\x00\x12\r\n\tTIMESTAMP\x10\x01*E\n\x0fImageFileSuffix\x12\x16\n\x12IMAGE_SUFFIX_INDEX\x10\x00\x12\x1a\n\x16IMAGE_SUFFIX_TIMESTAMP\x10\x01*0\n\x0eStreamProtocol\x12\x14\n\x10\x44\x45\x46\x41ULT_PROTOCOL\x10\x00\x12\x08\n\x04RTMP\x10\x01*\xcf\x01\n\x15\x45ncodingOptionsPreset\x12\x10\n\x0cH264_720P_30\x10\x00\x12\x10\n\x0cH264_720P_60\x10\x01\x12\x11\n\rH264_1080P_30\x10\x02\x12\x11\n\rH264_1080P_60\x10\x03\x12\x19\n\x15PORTRAIT_H264_720P_30\x10\x04\x12\x19\n\x15PORTRAIT_H264_720P_60\x10\x05\x12\x1a\n\x16PORTRAIT_H264_1080P_30\x10\x06\x12\x1a\n\x16PORTRAIT_H264_1080P_60\x10\x07*\x9f\x01\n\x0c\x45gressStatus\x12\x13\n\x0f\x45GRESS_STARTING\x10\x00\x12\x11\n\rEGRESS_ACTIVE\x10\x01\x12\x11\n\rEGRESS_ENDING\x10\x02\x12\x13\n\x0f\x45GRESS_COMPLETE\x10\x03\x12\x11\n\rEGRESS_FAILED\x10\x04\x12\x12\n\x0e\x45GRESS_ABORTED\x10\x05\x12\x18\n\x14\x45GRESS_LIMIT_REACHED\x10\x06\x32\x9c\x05\n\x06\x45gress\x12T\n\x18StartRoomCompositeEgress\x12#.livekit.RoomCompositeEgressRequest\x1a\x13.livekit.EgressInfo\x12@\n\x0eStartWebEgress\x12\x19.livekit.WebEgressRequest\x1a\x13.livekit.EgressInfo\x12P\n\x16StartParticipantEgress\x12!.livekit.ParticipantEgressRequest\x1a\x13.livekit.EgressInfo\x12V\n\x19StartTrackCompositeEgress\x12$.livekit.TrackCompositeEgressRequest\x1a\x13.livekit.EgressInfo\x12\x44\n\x10StartTrackEgress\x12\x1b.livekit.TrackEgressRequest\x1a\x13.livekit.EgressInfo\x12\x41\n\x0cUpdateLayout\x12\x1c.livekit.UpdateLayoutRequest\x1a\x13.livekit.EgressInfo\x12\x41\n\x0cUpdateStream\x12\x1c.livekit.UpdateStreamRequest\x1a\x13.livekit.EgressInfo\x12\x45\n\nListEgress\x12\x1a.livekit.ListEgressRequest\x1a\x1b.livekit.ListEgressResponse\x12=\n\nStopEgress\x12\x1a.livekit.StopEgressRequest\x1a\x13.livekit.EgressInfoBFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14livekit_egress.proto\x12\x07livekit\x1a\x14livekit_models.proto\"\xcd\x04\n\x1aRoomCompositeEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x0e\n\x06layout\x18\x02 \x01(\t\x12\x12\n\naudio_only\x18\x03 \x01(\x08\x12\x12\n\nvideo_only\x18\x04 \x01(\x08\x12\x17\n\x0f\x63ustom_base_url\x18\x05 \x01(\t\x12.\n\x04\x66ile\x18\x06 \x01(\x0b\x32\x1a.livekit.EncodedFileOutputB\x02\x18\x01H\x00\x12+\n\x06stream\x18\x07 \x01(\x0b\x32\x15.livekit.StreamOutputB\x02\x18\x01H\x00\x12\x34\n\x08segments\x18\n \x01(\x0b\x32\x1c.livekit.SegmentedFileOutputB\x02\x18\x01H\x00\x12\x30\n\x06preset\x18\x08 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x01\x12,\n\x08\x61\x64vanced\x18\t \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x01\x12\x30\n\x0c\x66ile_outputs\x18\x0b \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12-\n\x0estream_outputs\x18\x0c \x03(\x0b\x32\x15.livekit.StreamOutput\x12\x35\n\x0fsegment_outputs\x18\r \x03(\x0b\x32\x1c.livekit.SegmentedFileOutput\x12+\n\rimage_outputs\x18\x0e \x03(\x0b\x32\x14.livekit.ImageOutputB\x08\n\x06outputB\t\n\x07options\"\xb0\x04\n\x10WebEgressRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x12\n\naudio_only\x18\x02 \x01(\x08\x12\x12\n\nvideo_only\x18\x03 \x01(\x08\x12\x1a\n\x12\x61wait_start_signal\x18\x0c \x01(\x08\x12.\n\x04\x66ile\x18\x04 \x01(\x0b\x32\x1a.livekit.EncodedFileOutputB\x02\x18\x01H\x00\x12+\n\x06stream\x18\x05 \x01(\x0b\x32\x15.livekit.StreamOutputB\x02\x18\x01H\x00\x12\x34\n\x08segments\x18\x06 \x01(\x0b\x32\x1c.livekit.SegmentedFileOutputB\x02\x18\x01H\x00\x12\x30\n\x06preset\x18\x07 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x01\x12,\n\x08\x61\x64vanced\x18\x08 \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x01\x12\x30\n\x0c\x66ile_outputs\x18\t \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12-\n\x0estream_outputs\x18\n \x03(\x0b\x32\x15.livekit.StreamOutput\x12\x35\n\x0fsegment_outputs\x18\x0b \x03(\x0b\x32\x1c.livekit.SegmentedFileOutput\x12+\n\rimage_outputs\x18\r \x03(\x0b\x32\x14.livekit.ImageOutputB\x08\n\x06outputB\t\n\x07options\"\x85\x03\n\x18ParticipantEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x14\n\x0cscreen_share\x18\x03 \x01(\x08\x12\x30\n\x06preset\x18\x04 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x00\x12,\n\x08\x61\x64vanced\x18\x05 \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x00\x12\x30\n\x0c\x66ile_outputs\x18\x06 \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12-\n\x0estream_outputs\x18\x07 \x03(\x0b\x32\x15.livekit.StreamOutput\x12\x35\n\x0fsegment_outputs\x18\x08 \x03(\x0b\x32\x1c.livekit.SegmentedFileOutput\x12+\n\rimage_outputs\x18\t \x03(\x0b\x32\x14.livekit.ImageOutputB\t\n\x07options\"\xad\x04\n\x1bTrackCompositeEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x16\n\x0e\x61udio_track_id\x18\x02 \x01(\t\x12\x16\n\x0evideo_track_id\x18\x03 \x01(\t\x12.\n\x04\x66ile\x18\x04 \x01(\x0b\x32\x1a.livekit.EncodedFileOutputB\x02\x18\x01H\x00\x12+\n\x06stream\x18\x05 \x01(\x0b\x32\x15.livekit.StreamOutputB\x02\x18\x01H\x00\x12\x34\n\x08segments\x18\x08 \x01(\x0b\x32\x1c.livekit.SegmentedFileOutputB\x02\x18\x01H\x00\x12\x30\n\x06preset\x18\x06 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x01\x12,\n\x08\x61\x64vanced\x18\x07 \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x01\x12\x30\n\x0c\x66ile_outputs\x18\x0b \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12-\n\x0estream_outputs\x18\x0c \x03(\x0b\x32\x15.livekit.StreamOutput\x12\x35\n\x0fsegment_outputs\x18\r \x03(\x0b\x32\x1c.livekit.SegmentedFileOutput\x12+\n\rimage_outputs\x18\x0e \x03(\x0b\x32\x14.livekit.ImageOutputB\x08\n\x06outputB\t\n\x07options\"\x87\x01\n\x12TrackEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x10\n\x08track_id\x18\x02 \x01(\t\x12)\n\x04\x66ile\x18\x03 \x01(\x0b\x32\x19.livekit.DirectFileOutputH\x00\x12\x17\n\rwebsocket_url\x18\x04 \x01(\tH\x00\x42\x08\n\x06output\"\x8e\x02\n\x11\x45ncodedFileOutput\x12+\n\tfile_type\x18\x01 \x01(\x0e\x32\x18.livekit.EncodedFileType\x12\x10\n\x08\x66ilepath\x18\x02 \x01(\t\x12\x18\n\x10\x64isable_manifest\x18\x06 \x01(\x08\x12\x1f\n\x02s3\x18\x03 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\x04 \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\x05 \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\x07 \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output\"\xa0\x03\n\x13SegmentedFileOutput\x12\x30\n\x08protocol\x18\x01 \x01(\x0e\x32\x1e.livekit.SegmentedFileProtocol\x12\x17\n\x0f\x66ilename_prefix\x18\x02 \x01(\t\x12\x15\n\rplaylist_name\x18\x03 \x01(\t\x12\x1a\n\x12live_playlist_name\x18\x0b \x01(\t\x12\x18\n\x10segment_duration\x18\x04 \x01(\r\x12\x35\n\x0f\x66ilename_suffix\x18\n \x01(\x0e\x32\x1c.livekit.SegmentedFileSuffix\x12\x18\n\x10\x64isable_manifest\x18\x08 \x01(\x08\x12\x1f\n\x02s3\x18\x05 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\x06 \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\x07 \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\t \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output\"\xe0\x01\n\x10\x44irectFileOutput\x12\x10\n\x08\x66ilepath\x18\x01 \x01(\t\x12\x18\n\x10\x64isable_manifest\x18\x05 \x01(\x08\x12\x1f\n\x02s3\x18\x02 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\x03 \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\x04 \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\x06 \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output\"\xf8\x02\n\x0bImageOutput\x12\x18\n\x10\x63\x61pture_interval\x18\x01 \x01(\r\x12\r\n\x05width\x18\x02 \x01(\x05\x12\x0e\n\x06height\x18\x03 \x01(\x05\x12\x17\n\x0f\x66ilename_prefix\x18\x04 \x01(\t\x12\x31\n\x0f\x66ilename_suffix\x18\x05 \x01(\x0e\x32\x18.livekit.ImageFileSuffix\x12(\n\x0bimage_codec\x18\x06 \x01(\x0e\x32\x13.livekit.ImageCodec\x12\x18\n\x10\x64isable_manifest\x18\x07 \x01(\x08\x12\x1f\n\x02s3\x18\x08 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\t \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\n \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\x0b \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output\"\xc8\x02\n\x08S3Upload\x12\x12\n\naccess_key\x18\x01 \x01(\t\x12\x0e\n\x06secret\x18\x02 \x01(\t\x12\x15\n\rsession_token\x18\x0b \x01(\t\x12\x0e\n\x06region\x18\x03 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x04 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x05 \x01(\t\x12\x18\n\x10\x66orce_path_style\x18\x06 \x01(\x08\x12\x31\n\x08metadata\x18\x07 \x03(\x0b\x32\x1f.livekit.S3Upload.MetadataEntry\x12\x0f\n\x07tagging\x18\x08 \x01(\t\x12\x1b\n\x13\x63ontent_disposition\x18\t \x01(\t\x12#\n\x05proxy\x18\n \x01(\x0b\x32\x14.livekit.ProxyConfig\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"U\n\tGCPUpload\x12\x13\n\x0b\x63redentials\x18\x01 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x02 \x01(\t\x12#\n\x05proxy\x18\x03 \x01(\x0b\x32\x14.livekit.ProxyConfig\"T\n\x0f\x41zureBlobUpload\x12\x14\n\x0c\x61\x63\x63ount_name\x18\x01 \x01(\t\x12\x13\n\x0b\x61\x63\x63ount_key\x18\x02 \x01(\t\x12\x16\n\x0e\x63ontainer_name\x18\x03 \x01(\t\"d\n\x0c\x41liOSSUpload\x12\x12\n\naccess_key\x18\x01 \x01(\t\x12\x0e\n\x06secret\x18\x02 \x01(\t\x12\x0e\n\x06region\x18\x03 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x04 \x01(\t\x12\x0e\n\x06\x62ucket\x18\x05 \x01(\t\">\n\x0bProxyConfig\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x10\n\x08username\x18\x02 \x01(\t\x12\x10\n\x08password\x18\x03 \x01(\t\"G\n\x0cStreamOutput\x12)\n\x08protocol\x18\x01 \x01(\x0e\x32\x17.livekit.StreamProtocol\x12\x0c\n\x04urls\x18\x02 \x03(\t\"\xb7\x02\n\x0f\x45ncodingOptions\x12\r\n\x05width\x18\x01 \x01(\x05\x12\x0e\n\x06height\x18\x02 \x01(\x05\x12\r\n\x05\x64\x65pth\x18\x03 \x01(\x05\x12\x11\n\tframerate\x18\x04 \x01(\x05\x12(\n\x0b\x61udio_codec\x18\x05 \x01(\x0e\x32\x13.livekit.AudioCodec\x12\x15\n\raudio_bitrate\x18\x06 \x01(\x05\x12\x15\n\raudio_quality\x18\x0b \x01(\x05\x12\x17\n\x0f\x61udio_frequency\x18\x07 \x01(\x05\x12(\n\x0bvideo_codec\x18\x08 \x01(\x0e\x32\x13.livekit.VideoCodec\x12\x15\n\rvideo_bitrate\x18\t \x01(\x05\x12\x15\n\rvideo_quality\x18\x0c \x01(\x05\x12\x1a\n\x12key_frame_interval\x18\n \x01(\x01\"8\n\x13UpdateLayoutRequest\x12\x11\n\tegress_id\x18\x01 \x01(\t\x12\x0e\n\x06layout\x18\x02 \x01(\t\"]\n\x13UpdateStreamRequest\x12\x11\n\tegress_id\x18\x01 \x01(\t\x12\x17\n\x0f\x61\x64\x64_output_urls\x18\x02 \x03(\t\x12\x1a\n\x12remove_output_urls\x18\x03 \x03(\t\"I\n\x11ListEgressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x11\n\tegress_id\x18\x02 \x01(\t\x12\x0e\n\x06\x61\x63tive\x18\x03 \x01(\x08\"8\n\x12ListEgressResponse\x12\"\n\x05items\x18\x01 \x03(\x0b\x32\x13.livekit.EgressInfo\"&\n\x11StopEgressRequest\x12\x11\n\tegress_id\x18\x01 \x01(\t\"\xb6\x06\n\nEgressInfo\x12\x11\n\tegress_id\x18\x01 \x01(\t\x12\x0f\n\x07room_id\x18\x02 \x01(\t\x12\x11\n\troom_name\x18\r \x01(\t\x12%\n\x06status\x18\x03 \x01(\x0e\x32\x15.livekit.EgressStatus\x12\x12\n\nstarted_at\x18\n \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x0b \x01(\x03\x12\x12\n\nupdated_at\x18\x12 \x01(\x03\x12\x0f\n\x07\x64\x65tails\x18\x15 \x01(\t\x12\r\n\x05\x65rror\x18\t \x01(\t\x12\x12\n\nerror_code\x18\x16 \x01(\x05\x12=\n\x0eroom_composite\x18\x04 \x01(\x0b\x32#.livekit.RoomCompositeEgressRequestH\x00\x12(\n\x03web\x18\x0e \x01(\x0b\x32\x19.livekit.WebEgressRequestH\x00\x12\x38\n\x0bparticipant\x18\x13 \x01(\x0b\x32!.livekit.ParticipantEgressRequestH\x00\x12?\n\x0ftrack_composite\x18\x05 \x01(\x0b\x32$.livekit.TrackCompositeEgressRequestH\x00\x12,\n\x05track\x18\x06 \x01(\x0b\x32\x1b.livekit.TrackEgressRequestH\x00\x12-\n\x06stream\x18\x07 \x01(\x0b\x32\x17.livekit.StreamInfoListB\x02\x18\x01H\x01\x12%\n\x04\x66ile\x18\x08 \x01(\x0b\x32\x11.livekit.FileInfoB\x02\x18\x01H\x01\x12-\n\x08segments\x18\x0c \x01(\x0b\x32\x15.livekit.SegmentsInfoB\x02\x18\x01H\x01\x12+\n\x0estream_results\x18\x0f \x03(\x0b\x32\x13.livekit.StreamInfo\x12\'\n\x0c\x66ile_results\x18\x10 \x03(\x0b\x32\x11.livekit.FileInfo\x12.\n\x0fsegment_results\x18\x11 \x03(\x0b\x32\x15.livekit.SegmentsInfo\x12*\n\rimage_results\x18\x14 \x03(\x0b\x32\x13.livekit.ImagesInfoB\t\n\x07requestB\x08\n\x06result\"7\n\x0eStreamInfoList\x12!\n\x04info\x18\x01 \x03(\x0b\x32\x13.livekit.StreamInfo:\x02\x18\x01\"\xbc\x01\n\nStreamInfo\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x12\n\nstarted_at\x18\x02 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x03 \x01(\x03\x12\x10\n\x08\x64uration\x18\x04 \x01(\x03\x12*\n\x06status\x18\x05 \x01(\x0e\x32\x1a.livekit.StreamInfo.Status\x12\r\n\x05\x65rror\x18\x06 \x01(\t\".\n\x06Status\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\x0c\n\x08\x46INISHED\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02\"t\n\x08\x46ileInfo\x12\x10\n\x08\x66ilename\x18\x01 \x01(\t\x12\x12\n\nstarted_at\x18\x02 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x03 \x01(\x03\x12\x10\n\x08\x64uration\x18\x06 \x01(\x03\x12\x0c\n\x04size\x18\x04 \x01(\x03\x12\x10\n\x08location\x18\x05 \x01(\t\"\xd9\x01\n\x0cSegmentsInfo\x12\x15\n\rplaylist_name\x18\x01 \x01(\t\x12\x1a\n\x12live_playlist_name\x18\x08 \x01(\t\x12\x10\n\x08\x64uration\x18\x02 \x01(\x03\x12\x0c\n\x04size\x18\x03 \x01(\x03\x12\x19\n\x11playlist_location\x18\x04 \x01(\t\x12\x1e\n\x16live_playlist_location\x18\t \x01(\t\x12\x15\n\rsegment_count\x18\x05 \x01(\x03\x12\x12\n\nstarted_at\x18\x06 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x07 \x01(\x03\"G\n\nImagesInfo\x12\x13\n\x0bimage_count\x18\x01 \x01(\x03\x12\x12\n\nstarted_at\x18\x02 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x03 \x01(\x03\"\xeb\x01\n\x15\x41utoParticipantEgress\x12\x30\n\x06preset\x18\x01 \x01(\x0e\x32\x1e.livekit.EncodingOptionsPresetH\x00\x12,\n\x08\x61\x64vanced\x18\x02 \x01(\x0b\x32\x18.livekit.EncodingOptionsH\x00\x12\x30\n\x0c\x66ile_outputs\x18\x03 \x03(\x0b\x32\x1a.livekit.EncodedFileOutput\x12\x35\n\x0fsegment_outputs\x18\x04 \x03(\x0b\x32\x1c.livekit.SegmentedFileOutputB\t\n\x07options\"\xdf\x01\n\x0f\x41utoTrackEgress\x12\x10\n\x08\x66ilepath\x18\x01 \x01(\t\x12\x18\n\x10\x64isable_manifest\x18\x05 \x01(\x08\x12\x1f\n\x02s3\x18\x02 \x01(\x0b\x32\x11.livekit.S3UploadH\x00\x12!\n\x03gcp\x18\x03 \x01(\x0b\x32\x12.livekit.GCPUploadH\x00\x12)\n\x05\x61zure\x18\x04 \x01(\x0b\x32\x18.livekit.AzureBlobUploadH\x00\x12\'\n\x06\x61liOSS\x18\x06 \x01(\x0b\x32\x15.livekit.AliOSSUploadH\x00\x42\x08\n\x06output*9\n\x0f\x45ncodedFileType\x12\x14\n\x10\x44\x45\x46\x41ULT_FILETYPE\x10\x00\x12\x07\n\x03MP4\x10\x01\x12\x07\n\x03OGG\x10\x02*N\n\x15SegmentedFileProtocol\x12#\n\x1f\x44\x45\x46\x41ULT_SEGMENTED_FILE_PROTOCOL\x10\x00\x12\x10\n\x0cHLS_PROTOCOL\x10\x01*/\n\x13SegmentedFileSuffix\x12\t\n\x05INDEX\x10\x00\x12\r\n\tTIMESTAMP\x10\x01*E\n\x0fImageFileSuffix\x12\x16\n\x12IMAGE_SUFFIX_INDEX\x10\x00\x12\x1a\n\x16IMAGE_SUFFIX_TIMESTAMP\x10\x01*0\n\x0eStreamProtocol\x12\x14\n\x10\x44\x45\x46\x41ULT_PROTOCOL\x10\x00\x12\x08\n\x04RTMP\x10\x01*\xcf\x01\n\x15\x45ncodingOptionsPreset\x12\x10\n\x0cH264_720P_30\x10\x00\x12\x10\n\x0cH264_720P_60\x10\x01\x12\x11\n\rH264_1080P_30\x10\x02\x12\x11\n\rH264_1080P_60\x10\x03\x12\x19\n\x15PORTRAIT_H264_720P_30\x10\x04\x12\x19\n\x15PORTRAIT_H264_720P_60\x10\x05\x12\x1a\n\x16PORTRAIT_H264_1080P_30\x10\x06\x12\x1a\n\x16PORTRAIT_H264_1080P_60\x10\x07*\x9f\x01\n\x0c\x45gressStatus\x12\x13\n\x0f\x45GRESS_STARTING\x10\x00\x12\x11\n\rEGRESS_ACTIVE\x10\x01\x12\x11\n\rEGRESS_ENDING\x10\x02\x12\x13\n\x0f\x45GRESS_COMPLETE\x10\x03\x12\x11\n\rEGRESS_FAILED\x10\x04\x12\x12\n\x0e\x45GRESS_ABORTED\x10\x05\x12\x18\n\x14\x45GRESS_LIMIT_REACHED\x10\x06\x32\x9c\x05\n\x06\x45gress\x12T\n\x18StartRoomCompositeEgress\x12#.livekit.RoomCompositeEgressRequest\x1a\x13.livekit.EgressInfo\x12@\n\x0eStartWebEgress\x12\x19.livekit.WebEgressRequest\x1a\x13.livekit.EgressInfo\x12P\n\x16StartParticipantEgress\x12!.livekit.ParticipantEgressRequest\x1a\x13.livekit.EgressInfo\x12V\n\x19StartTrackCompositeEgress\x12$.livekit.TrackCompositeEgressRequest\x1a\x13.livekit.EgressInfo\x12\x44\n\x10StartTrackEgress\x12\x1b.livekit.TrackEgressRequest\x1a\x13.livekit.EgressInfo\x12\x41\n\x0cUpdateLayout\x12\x1c.livekit.UpdateLayoutRequest\x1a\x13.livekit.EgressInfo\x12\x41\n\x0cUpdateStream\x12\x1c.livekit.UpdateStreamRequest\x1a\x13.livekit.EgressInfo\x12\x45\n\nListEgress\x12\x1a.livekit.ListEgressRequest\x1a\x1b.livekit.ListEgressResponse\x12=\n\nStopEgress\x12\x1a.livekit.StopEgressRequest\x1a\x13.livekit.EgressInfoBFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'egress', _globals) if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None - _globals['DESCRIPTOR']._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' - _globals['_ROOMCOMPOSITEEGRESSREQUEST'].fields_by_name['file']._options = None - _globals['_ROOMCOMPOSITEEGRESSREQUEST'].fields_by_name['file']._serialized_options = b'\030\001' - _globals['_ROOMCOMPOSITEEGRESSREQUEST'].fields_by_name['stream']._options = None - _globals['_ROOMCOMPOSITEEGRESSREQUEST'].fields_by_name['stream']._serialized_options = b'\030\001' - _globals['_ROOMCOMPOSITEEGRESSREQUEST'].fields_by_name['segments']._options = None - _globals['_ROOMCOMPOSITEEGRESSREQUEST'].fields_by_name['segments']._serialized_options = b'\030\001' - _globals['_WEBEGRESSREQUEST'].fields_by_name['file']._options = None - _globals['_WEBEGRESSREQUEST'].fields_by_name['file']._serialized_options = b'\030\001' - _globals['_WEBEGRESSREQUEST'].fields_by_name['stream']._options = None - _globals['_WEBEGRESSREQUEST'].fields_by_name['stream']._serialized_options = b'\030\001' - _globals['_WEBEGRESSREQUEST'].fields_by_name['segments']._options = None - _globals['_WEBEGRESSREQUEST'].fields_by_name['segments']._serialized_options = b'\030\001' - _globals['_TRACKCOMPOSITEEGRESSREQUEST'].fields_by_name['file']._options = None - _globals['_TRACKCOMPOSITEEGRESSREQUEST'].fields_by_name['file']._serialized_options = b'\030\001' - _globals['_TRACKCOMPOSITEEGRESSREQUEST'].fields_by_name['stream']._options = None - _globals['_TRACKCOMPOSITEEGRESSREQUEST'].fields_by_name['stream']._serialized_options = b'\030\001' - _globals['_TRACKCOMPOSITEEGRESSREQUEST'].fields_by_name['segments']._options = None - _globals['_TRACKCOMPOSITEEGRESSREQUEST'].fields_by_name['segments']._serialized_options = b'\030\001' - _globals['_S3UPLOAD_METADATAENTRY']._options = None - _globals['_S3UPLOAD_METADATAENTRY']._serialized_options = b'8\001' - _globals['_EGRESSINFO'].fields_by_name['stream']._options = None - _globals['_EGRESSINFO'].fields_by_name['stream']._serialized_options = b'\030\001' - _globals['_EGRESSINFO'].fields_by_name['file']._options = None - _globals['_EGRESSINFO'].fields_by_name['file']._serialized_options = b'\030\001' - _globals['_EGRESSINFO'].fields_by_name['segments']._options = None - _globals['_EGRESSINFO'].fields_by_name['segments']._serialized_options = b'\030\001' - _globals['_STREAMINFOLIST']._options = None - _globals['_STREAMINFOLIST']._serialized_options = b'\030\001' - _globals['_ENCODEDFILETYPE']._serialized_start=6845 - _globals['_ENCODEDFILETYPE']._serialized_end=6902 - _globals['_SEGMENTEDFILEPROTOCOL']._serialized_start=6904 - _globals['_SEGMENTEDFILEPROTOCOL']._serialized_end=6982 - _globals['_SEGMENTEDFILESUFFIX']._serialized_start=6984 - _globals['_SEGMENTEDFILESUFFIX']._serialized_end=7031 - _globals['_IMAGEFILESUFFIX']._serialized_start=7033 - _globals['_IMAGEFILESUFFIX']._serialized_end=7102 - _globals['_STREAMPROTOCOL']._serialized_start=7104 - _globals['_STREAMPROTOCOL']._serialized_end=7152 - _globals['_ENCODINGOPTIONSPRESET']._serialized_start=7155 - _globals['_ENCODINGOPTIONSPRESET']._serialized_end=7362 - _globals['_EGRESSSTATUS']._serialized_start=7365 - _globals['_EGRESSSTATUS']._serialized_end=7524 + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' + _ROOMCOMPOSITEEGRESSREQUEST.fields_by_name['file']._options = None + _ROOMCOMPOSITEEGRESSREQUEST.fields_by_name['file']._serialized_options = b'\030\001' + _ROOMCOMPOSITEEGRESSREQUEST.fields_by_name['stream']._options = None + _ROOMCOMPOSITEEGRESSREQUEST.fields_by_name['stream']._serialized_options = b'\030\001' + _ROOMCOMPOSITEEGRESSREQUEST.fields_by_name['segments']._options = None + _ROOMCOMPOSITEEGRESSREQUEST.fields_by_name['segments']._serialized_options = b'\030\001' + _WEBEGRESSREQUEST.fields_by_name['file']._options = None + _WEBEGRESSREQUEST.fields_by_name['file']._serialized_options = b'\030\001' + _WEBEGRESSREQUEST.fields_by_name['stream']._options = None + _WEBEGRESSREQUEST.fields_by_name['stream']._serialized_options = b'\030\001' + _WEBEGRESSREQUEST.fields_by_name['segments']._options = None + _WEBEGRESSREQUEST.fields_by_name['segments']._serialized_options = b'\030\001' + _TRACKCOMPOSITEEGRESSREQUEST.fields_by_name['file']._options = None + _TRACKCOMPOSITEEGRESSREQUEST.fields_by_name['file']._serialized_options = b'\030\001' + _TRACKCOMPOSITEEGRESSREQUEST.fields_by_name['stream']._options = None + _TRACKCOMPOSITEEGRESSREQUEST.fields_by_name['stream']._serialized_options = b'\030\001' + _TRACKCOMPOSITEEGRESSREQUEST.fields_by_name['segments']._options = None + _TRACKCOMPOSITEEGRESSREQUEST.fields_by_name['segments']._serialized_options = b'\030\001' + _S3UPLOAD_METADATAENTRY._options = None + _S3UPLOAD_METADATAENTRY._serialized_options = b'8\001' + _EGRESSINFO.fields_by_name['stream']._options = None + _EGRESSINFO.fields_by_name['stream']._serialized_options = b'\030\001' + _EGRESSINFO.fields_by_name['file']._options = None + _EGRESSINFO.fields_by_name['file']._serialized_options = b'\030\001' + _EGRESSINFO.fields_by_name['segments']._options = None + _EGRESSINFO.fields_by_name['segments']._serialized_options = b'\030\001' + _STREAMINFOLIST._options = None + _STREAMINFOLIST._serialized_options = b'\030\001' + _globals['_ENCODEDFILETYPE']._serialized_start=6929 + _globals['_ENCODEDFILETYPE']._serialized_end=6986 + _globals['_SEGMENTEDFILEPROTOCOL']._serialized_start=6988 + _globals['_SEGMENTEDFILEPROTOCOL']._serialized_end=7066 + _globals['_SEGMENTEDFILESUFFIX']._serialized_start=7068 + _globals['_SEGMENTEDFILESUFFIX']._serialized_end=7115 + _globals['_IMAGEFILESUFFIX']._serialized_start=7117 + _globals['_IMAGEFILESUFFIX']._serialized_end=7186 + _globals['_STREAMPROTOCOL']._serialized_start=7188 + _globals['_STREAMPROTOCOL']._serialized_end=7236 + _globals['_ENCODINGOPTIONSPRESET']._serialized_start=7239 + _globals['_ENCODINGOPTIONSPRESET']._serialized_end=7446 + _globals['_EGRESSSTATUS']._serialized_start=7449 + _globals['_EGRESSSTATUS']._serialized_end=7608 _globals['_ROOMCOMPOSITEEGRESSREQUEST']._serialized_start=56 _globals['_ROOMCOMPOSITEEGRESSREQUEST']._serialized_end=645 _globals['_WEBEGRESSREQUEST']._serialized_start=648 @@ -84,49 +84,49 @@ _globals['_IMAGEOUTPUT']._serialized_start=3220 _globals['_IMAGEOUTPUT']._serialized_end=3596 _globals['_S3UPLOAD']._serialized_start=3599 - _globals['_S3UPLOAD']._serialized_end=3904 - _globals['_S3UPLOAD_METADATAENTRY']._serialized_start=3857 - _globals['_S3UPLOAD_METADATAENTRY']._serialized_end=3904 - _globals['_GCPUPLOAD']._serialized_start=3906 - _globals['_GCPUPLOAD']._serialized_end=3991 - _globals['_AZUREBLOBUPLOAD']._serialized_start=3993 - _globals['_AZUREBLOBUPLOAD']._serialized_end=4077 - _globals['_ALIOSSUPLOAD']._serialized_start=4079 - _globals['_ALIOSSUPLOAD']._serialized_end=4179 - _globals['_PROXYCONFIG']._serialized_start=4181 - _globals['_PROXYCONFIG']._serialized_end=4243 - _globals['_STREAMOUTPUT']._serialized_start=4245 - _globals['_STREAMOUTPUT']._serialized_end=4316 - _globals['_ENCODINGOPTIONS']._serialized_start=4319 - _globals['_ENCODINGOPTIONS']._serialized_end=4630 - _globals['_UPDATELAYOUTREQUEST']._serialized_start=4632 - _globals['_UPDATELAYOUTREQUEST']._serialized_end=4688 - _globals['_UPDATESTREAMREQUEST']._serialized_start=4690 - _globals['_UPDATESTREAMREQUEST']._serialized_end=4783 - _globals['_LISTEGRESSREQUEST']._serialized_start=4785 - _globals['_LISTEGRESSREQUEST']._serialized_end=4858 - _globals['_LISTEGRESSRESPONSE']._serialized_start=4860 - _globals['_LISTEGRESSRESPONSE']._serialized_end=4916 - _globals['_STOPEGRESSREQUEST']._serialized_start=4918 - _globals['_STOPEGRESSREQUEST']._serialized_end=4956 - _globals['_EGRESSINFO']._serialized_start=4959 - _globals['_EGRESSINFO']._serialized_end=5761 - _globals['_STREAMINFOLIST']._serialized_start=5763 - _globals['_STREAMINFOLIST']._serialized_end=5818 - _globals['_STREAMINFO']._serialized_start=5821 - _globals['_STREAMINFO']._serialized_end=6009 - _globals['_STREAMINFO_STATUS']._serialized_start=5963 - _globals['_STREAMINFO_STATUS']._serialized_end=6009 - _globals['_FILEINFO']._serialized_start=6011 - _globals['_FILEINFO']._serialized_end=6127 - _globals['_SEGMENTSINFO']._serialized_start=6130 - _globals['_SEGMENTSINFO']._serialized_end=6347 - _globals['_IMAGESINFO']._serialized_start=6349 - _globals['_IMAGESINFO']._serialized_end=6420 - _globals['_AUTOPARTICIPANTEGRESS']._serialized_start=6423 - _globals['_AUTOPARTICIPANTEGRESS']._serialized_end=6658 - _globals['_AUTOTRACKEGRESS']._serialized_start=6661 - _globals['_AUTOTRACKEGRESS']._serialized_end=6843 - _globals['_EGRESS']._serialized_start=7527 - _globals['_EGRESS']._serialized_end=8195 + _globals['_S3UPLOAD']._serialized_end=3927 + _globals['_S3UPLOAD_METADATAENTRY']._serialized_start=3880 + _globals['_S3UPLOAD_METADATAENTRY']._serialized_end=3927 + _globals['_GCPUPLOAD']._serialized_start=3929 + _globals['_GCPUPLOAD']._serialized_end=4014 + _globals['_AZUREBLOBUPLOAD']._serialized_start=4016 + _globals['_AZUREBLOBUPLOAD']._serialized_end=4100 + _globals['_ALIOSSUPLOAD']._serialized_start=4102 + _globals['_ALIOSSUPLOAD']._serialized_end=4202 + _globals['_PROXYCONFIG']._serialized_start=4204 + _globals['_PROXYCONFIG']._serialized_end=4266 + _globals['_STREAMOUTPUT']._serialized_start=4268 + _globals['_STREAMOUTPUT']._serialized_end=4339 + _globals['_ENCODINGOPTIONS']._serialized_start=4342 + _globals['_ENCODINGOPTIONS']._serialized_end=4653 + _globals['_UPDATELAYOUTREQUEST']._serialized_start=4655 + _globals['_UPDATELAYOUTREQUEST']._serialized_end=4711 + _globals['_UPDATESTREAMREQUEST']._serialized_start=4713 + _globals['_UPDATESTREAMREQUEST']._serialized_end=4806 + _globals['_LISTEGRESSREQUEST']._serialized_start=4808 + _globals['_LISTEGRESSREQUEST']._serialized_end=4881 + _globals['_LISTEGRESSRESPONSE']._serialized_start=4883 + _globals['_LISTEGRESSRESPONSE']._serialized_end=4939 + _globals['_STOPEGRESSREQUEST']._serialized_start=4941 + _globals['_STOPEGRESSREQUEST']._serialized_end=4979 + _globals['_EGRESSINFO']._serialized_start=4982 + _globals['_EGRESSINFO']._serialized_end=5804 + _globals['_STREAMINFOLIST']._serialized_start=5806 + _globals['_STREAMINFOLIST']._serialized_end=5861 + _globals['_STREAMINFO']._serialized_start=5864 + _globals['_STREAMINFO']._serialized_end=6052 + _globals['_STREAMINFO_STATUS']._serialized_start=6006 + _globals['_STREAMINFO_STATUS']._serialized_end=6052 + _globals['_FILEINFO']._serialized_start=6054 + _globals['_FILEINFO']._serialized_end=6170 + _globals['_SEGMENTSINFO']._serialized_start=6173 + _globals['_SEGMENTSINFO']._serialized_end=6390 + _globals['_IMAGESINFO']._serialized_start=6392 + _globals['_IMAGESINFO']._serialized_end=6463 + _globals['_AUTOPARTICIPANTEGRESS']._serialized_start=6466 + _globals['_AUTOPARTICIPANTEGRESS']._serialized_end=6701 + _globals['_AUTOTRACKEGRESS']._serialized_start=6704 + _globals['_AUTOTRACKEGRESS']._serialized_end=6927 + _globals['_EGRESS']._serialized_start=7611 + _globals['_EGRESS']._serialized_end=8279 # @@protoc_insertion_point(module_scope) diff --git a/livekit-protocol/livekit/protocol/egress.pyi b/livekit-protocol/livekit/protocol/egress.pyi index f55f67ed..054d149b 100644 --- a/livekit-protocol/livekit/protocol/egress.pyi +++ b/livekit-protocol/livekit/protocol/egress.pyi @@ -8,33 +8,33 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map DESCRIPTOR: _descriptor.FileDescriptor class EncodedFileType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] DEFAULT_FILETYPE: _ClassVar[EncodedFileType] MP4: _ClassVar[EncodedFileType] OGG: _ClassVar[EncodedFileType] class SegmentedFileProtocol(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] DEFAULT_SEGMENTED_FILE_PROTOCOL: _ClassVar[SegmentedFileProtocol] HLS_PROTOCOL: _ClassVar[SegmentedFileProtocol] class SegmentedFileSuffix(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] INDEX: _ClassVar[SegmentedFileSuffix] TIMESTAMP: _ClassVar[SegmentedFileSuffix] class ImageFileSuffix(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] IMAGE_SUFFIX_INDEX: _ClassVar[ImageFileSuffix] IMAGE_SUFFIX_TIMESTAMP: _ClassVar[ImageFileSuffix] class StreamProtocol(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] DEFAULT_PROTOCOL: _ClassVar[StreamProtocol] RTMP: _ClassVar[StreamProtocol] class EncodingOptionsPreset(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] H264_720P_30: _ClassVar[EncodingOptionsPreset] H264_720P_60: _ClassVar[EncodingOptionsPreset] H264_1080P_30: _ClassVar[EncodingOptionsPreset] @@ -45,7 +45,7 @@ class EncodingOptionsPreset(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): PORTRAIT_H264_1080P_60: _ClassVar[EncodingOptionsPreset] class EgressStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] EGRESS_STARTING: _ClassVar[EgressStatus] EGRESS_ACTIVE: _ClassVar[EgressStatus] EGRESS_ENDING: _ClassVar[EgressStatus] @@ -81,7 +81,7 @@ EGRESS_ABORTED: EgressStatus EGRESS_LIMIT_REACHED: EgressStatus class RoomCompositeEgressRequest(_message.Message): - __slots__ = ("room_name", "layout", "audio_only", "video_only", "custom_base_url", "file", "stream", "segments", "preset", "advanced", "file_outputs", "stream_outputs", "segment_outputs", "image_outputs") + __slots__ = ["room_name", "layout", "audio_only", "video_only", "custom_base_url", "file", "stream", "segments", "preset", "advanced", "file_outputs", "stream_outputs", "segment_outputs", "image_outputs"] ROOM_NAME_FIELD_NUMBER: _ClassVar[int] LAYOUT_FIELD_NUMBER: _ClassVar[int] AUDIO_ONLY_FIELD_NUMBER: _ClassVar[int] @@ -113,7 +113,7 @@ class RoomCompositeEgressRequest(_message.Message): def __init__(self, room_name: _Optional[str] = ..., layout: _Optional[str] = ..., audio_only: bool = ..., video_only: bool = ..., custom_base_url: _Optional[str] = ..., file: _Optional[_Union[EncodedFileOutput, _Mapping]] = ..., stream: _Optional[_Union[StreamOutput, _Mapping]] = ..., segments: _Optional[_Union[SegmentedFileOutput, _Mapping]] = ..., preset: _Optional[_Union[EncodingOptionsPreset, str]] = ..., advanced: _Optional[_Union[EncodingOptions, _Mapping]] = ..., file_outputs: _Optional[_Iterable[_Union[EncodedFileOutput, _Mapping]]] = ..., stream_outputs: _Optional[_Iterable[_Union[StreamOutput, _Mapping]]] = ..., segment_outputs: _Optional[_Iterable[_Union[SegmentedFileOutput, _Mapping]]] = ..., image_outputs: _Optional[_Iterable[_Union[ImageOutput, _Mapping]]] = ...) -> None: ... class WebEgressRequest(_message.Message): - __slots__ = ("url", "audio_only", "video_only", "await_start_signal", "file", "stream", "segments", "preset", "advanced", "file_outputs", "stream_outputs", "segment_outputs", "image_outputs") + __slots__ = ["url", "audio_only", "video_only", "await_start_signal", "file", "stream", "segments", "preset", "advanced", "file_outputs", "stream_outputs", "segment_outputs", "image_outputs"] URL_FIELD_NUMBER: _ClassVar[int] AUDIO_ONLY_FIELD_NUMBER: _ClassVar[int] VIDEO_ONLY_FIELD_NUMBER: _ClassVar[int] @@ -143,7 +143,7 @@ class WebEgressRequest(_message.Message): def __init__(self, url: _Optional[str] = ..., audio_only: bool = ..., video_only: bool = ..., await_start_signal: bool = ..., file: _Optional[_Union[EncodedFileOutput, _Mapping]] = ..., stream: _Optional[_Union[StreamOutput, _Mapping]] = ..., segments: _Optional[_Union[SegmentedFileOutput, _Mapping]] = ..., preset: _Optional[_Union[EncodingOptionsPreset, str]] = ..., advanced: _Optional[_Union[EncodingOptions, _Mapping]] = ..., file_outputs: _Optional[_Iterable[_Union[EncodedFileOutput, _Mapping]]] = ..., stream_outputs: _Optional[_Iterable[_Union[StreamOutput, _Mapping]]] = ..., segment_outputs: _Optional[_Iterable[_Union[SegmentedFileOutput, _Mapping]]] = ..., image_outputs: _Optional[_Iterable[_Union[ImageOutput, _Mapping]]] = ...) -> None: ... class ParticipantEgressRequest(_message.Message): - __slots__ = ("room_name", "identity", "screen_share", "preset", "advanced", "file_outputs", "stream_outputs", "segment_outputs", "image_outputs") + __slots__ = ["room_name", "identity", "screen_share", "preset", "advanced", "file_outputs", "stream_outputs", "segment_outputs", "image_outputs"] ROOM_NAME_FIELD_NUMBER: _ClassVar[int] IDENTITY_FIELD_NUMBER: _ClassVar[int] SCREEN_SHARE_FIELD_NUMBER: _ClassVar[int] @@ -165,7 +165,7 @@ class ParticipantEgressRequest(_message.Message): def __init__(self, room_name: _Optional[str] = ..., identity: _Optional[str] = ..., screen_share: bool = ..., preset: _Optional[_Union[EncodingOptionsPreset, str]] = ..., advanced: _Optional[_Union[EncodingOptions, _Mapping]] = ..., file_outputs: _Optional[_Iterable[_Union[EncodedFileOutput, _Mapping]]] = ..., stream_outputs: _Optional[_Iterable[_Union[StreamOutput, _Mapping]]] = ..., segment_outputs: _Optional[_Iterable[_Union[SegmentedFileOutput, _Mapping]]] = ..., image_outputs: _Optional[_Iterable[_Union[ImageOutput, _Mapping]]] = ...) -> None: ... class TrackCompositeEgressRequest(_message.Message): - __slots__ = ("room_name", "audio_track_id", "video_track_id", "file", "stream", "segments", "preset", "advanced", "file_outputs", "stream_outputs", "segment_outputs", "image_outputs") + __slots__ = ["room_name", "audio_track_id", "video_track_id", "file", "stream", "segments", "preset", "advanced", "file_outputs", "stream_outputs", "segment_outputs", "image_outputs"] ROOM_NAME_FIELD_NUMBER: _ClassVar[int] AUDIO_TRACK_ID_FIELD_NUMBER: _ClassVar[int] VIDEO_TRACK_ID_FIELD_NUMBER: _ClassVar[int] @@ -193,7 +193,7 @@ class TrackCompositeEgressRequest(_message.Message): def __init__(self, room_name: _Optional[str] = ..., audio_track_id: _Optional[str] = ..., video_track_id: _Optional[str] = ..., file: _Optional[_Union[EncodedFileOutput, _Mapping]] = ..., stream: _Optional[_Union[StreamOutput, _Mapping]] = ..., segments: _Optional[_Union[SegmentedFileOutput, _Mapping]] = ..., preset: _Optional[_Union[EncodingOptionsPreset, str]] = ..., advanced: _Optional[_Union[EncodingOptions, _Mapping]] = ..., file_outputs: _Optional[_Iterable[_Union[EncodedFileOutput, _Mapping]]] = ..., stream_outputs: _Optional[_Iterable[_Union[StreamOutput, _Mapping]]] = ..., segment_outputs: _Optional[_Iterable[_Union[SegmentedFileOutput, _Mapping]]] = ..., image_outputs: _Optional[_Iterable[_Union[ImageOutput, _Mapping]]] = ...) -> None: ... class TrackEgressRequest(_message.Message): - __slots__ = ("room_name", "track_id", "file", "websocket_url") + __slots__ = ["room_name", "track_id", "file", "websocket_url"] ROOM_NAME_FIELD_NUMBER: _ClassVar[int] TRACK_ID_FIELD_NUMBER: _ClassVar[int] FILE_FIELD_NUMBER: _ClassVar[int] @@ -205,7 +205,7 @@ class TrackEgressRequest(_message.Message): def __init__(self, room_name: _Optional[str] = ..., track_id: _Optional[str] = ..., file: _Optional[_Union[DirectFileOutput, _Mapping]] = ..., websocket_url: _Optional[str] = ...) -> None: ... class EncodedFileOutput(_message.Message): - __slots__ = ("file_type", "filepath", "disable_manifest", "s3", "gcp", "azure", "aliOSS") + __slots__ = ["file_type", "filepath", "disable_manifest", "s3", "gcp", "azure", "aliOSS"] FILE_TYPE_FIELD_NUMBER: _ClassVar[int] FILEPATH_FIELD_NUMBER: _ClassVar[int] DISABLE_MANIFEST_FIELD_NUMBER: _ClassVar[int] @@ -223,7 +223,7 @@ class EncodedFileOutput(_message.Message): def __init__(self, file_type: _Optional[_Union[EncodedFileType, str]] = ..., filepath: _Optional[str] = ..., disable_manifest: bool = ..., s3: _Optional[_Union[S3Upload, _Mapping]] = ..., gcp: _Optional[_Union[GCPUpload, _Mapping]] = ..., azure: _Optional[_Union[AzureBlobUpload, _Mapping]] = ..., aliOSS: _Optional[_Union[AliOSSUpload, _Mapping]] = ...) -> None: ... class SegmentedFileOutput(_message.Message): - __slots__ = ("protocol", "filename_prefix", "playlist_name", "live_playlist_name", "segment_duration", "filename_suffix", "disable_manifest", "s3", "gcp", "azure", "aliOSS") + __slots__ = ["protocol", "filename_prefix", "playlist_name", "live_playlist_name", "segment_duration", "filename_suffix", "disable_manifest", "s3", "gcp", "azure", "aliOSS"] PROTOCOL_FIELD_NUMBER: _ClassVar[int] FILENAME_PREFIX_FIELD_NUMBER: _ClassVar[int] PLAYLIST_NAME_FIELD_NUMBER: _ClassVar[int] @@ -249,7 +249,7 @@ class SegmentedFileOutput(_message.Message): def __init__(self, protocol: _Optional[_Union[SegmentedFileProtocol, str]] = ..., filename_prefix: _Optional[str] = ..., playlist_name: _Optional[str] = ..., live_playlist_name: _Optional[str] = ..., segment_duration: _Optional[int] = ..., filename_suffix: _Optional[_Union[SegmentedFileSuffix, str]] = ..., disable_manifest: bool = ..., s3: _Optional[_Union[S3Upload, _Mapping]] = ..., gcp: _Optional[_Union[GCPUpload, _Mapping]] = ..., azure: _Optional[_Union[AzureBlobUpload, _Mapping]] = ..., aliOSS: _Optional[_Union[AliOSSUpload, _Mapping]] = ...) -> None: ... class DirectFileOutput(_message.Message): - __slots__ = ("filepath", "disable_manifest", "s3", "gcp", "azure", "aliOSS") + __slots__ = ["filepath", "disable_manifest", "s3", "gcp", "azure", "aliOSS"] FILEPATH_FIELD_NUMBER: _ClassVar[int] DISABLE_MANIFEST_FIELD_NUMBER: _ClassVar[int] S3_FIELD_NUMBER: _ClassVar[int] @@ -265,7 +265,7 @@ class DirectFileOutput(_message.Message): def __init__(self, filepath: _Optional[str] = ..., disable_manifest: bool = ..., s3: _Optional[_Union[S3Upload, _Mapping]] = ..., gcp: _Optional[_Union[GCPUpload, _Mapping]] = ..., azure: _Optional[_Union[AzureBlobUpload, _Mapping]] = ..., aliOSS: _Optional[_Union[AliOSSUpload, _Mapping]] = ...) -> None: ... class ImageOutput(_message.Message): - __slots__ = ("capture_interval", "width", "height", "filename_prefix", "filename_suffix", "image_codec", "disable_manifest", "s3", "gcp", "azure", "aliOSS") + __slots__ = ["capture_interval", "width", "height", "filename_prefix", "filename_suffix", "image_codec", "disable_manifest", "s3", "gcp", "azure", "aliOSS"] CAPTURE_INTERVAL_FIELD_NUMBER: _ClassVar[int] WIDTH_FIELD_NUMBER: _ClassVar[int] HEIGHT_FIELD_NUMBER: _ClassVar[int] @@ -291,9 +291,9 @@ class ImageOutput(_message.Message): def __init__(self, capture_interval: _Optional[int] = ..., width: _Optional[int] = ..., height: _Optional[int] = ..., filename_prefix: _Optional[str] = ..., filename_suffix: _Optional[_Union[ImageFileSuffix, str]] = ..., image_codec: _Optional[_Union[_models.ImageCodec, str]] = ..., disable_manifest: bool = ..., s3: _Optional[_Union[S3Upload, _Mapping]] = ..., gcp: _Optional[_Union[GCPUpload, _Mapping]] = ..., azure: _Optional[_Union[AzureBlobUpload, _Mapping]] = ..., aliOSS: _Optional[_Union[AliOSSUpload, _Mapping]] = ...) -> None: ... class S3Upload(_message.Message): - __slots__ = ("access_key", "secret", "region", "endpoint", "bucket", "force_path_style", "metadata", "tagging", "content_disposition", "proxy") + __slots__ = ["access_key", "secret", "session_token", "region", "endpoint", "bucket", "force_path_style", "metadata", "tagging", "content_disposition", "proxy"] class MetadataEntry(_message.Message): - __slots__ = ("key", "value") + __slots__ = ["key", "value"] KEY_FIELD_NUMBER: _ClassVar[int] VALUE_FIELD_NUMBER: _ClassVar[int] key: str @@ -301,6 +301,7 @@ class S3Upload(_message.Message): def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... ACCESS_KEY_FIELD_NUMBER: _ClassVar[int] SECRET_FIELD_NUMBER: _ClassVar[int] + SESSION_TOKEN_FIELD_NUMBER: _ClassVar[int] REGION_FIELD_NUMBER: _ClassVar[int] ENDPOINT_FIELD_NUMBER: _ClassVar[int] BUCKET_FIELD_NUMBER: _ClassVar[int] @@ -311,6 +312,7 @@ class S3Upload(_message.Message): PROXY_FIELD_NUMBER: _ClassVar[int] access_key: str secret: str + session_token: str region: str endpoint: str bucket: str @@ -319,10 +321,10 @@ class S3Upload(_message.Message): tagging: str content_disposition: str proxy: ProxyConfig - def __init__(self, access_key: _Optional[str] = ..., secret: _Optional[str] = ..., region: _Optional[str] = ..., endpoint: _Optional[str] = ..., bucket: _Optional[str] = ..., force_path_style: bool = ..., metadata: _Optional[_Mapping[str, str]] = ..., tagging: _Optional[str] = ..., content_disposition: _Optional[str] = ..., proxy: _Optional[_Union[ProxyConfig, _Mapping]] = ...) -> None: ... + def __init__(self, access_key: _Optional[str] = ..., secret: _Optional[str] = ..., session_token: _Optional[str] = ..., region: _Optional[str] = ..., endpoint: _Optional[str] = ..., bucket: _Optional[str] = ..., force_path_style: bool = ..., metadata: _Optional[_Mapping[str, str]] = ..., tagging: _Optional[str] = ..., content_disposition: _Optional[str] = ..., proxy: _Optional[_Union[ProxyConfig, _Mapping]] = ...) -> None: ... class GCPUpload(_message.Message): - __slots__ = ("credentials", "bucket", "proxy") + __slots__ = ["credentials", "bucket", "proxy"] CREDENTIALS_FIELD_NUMBER: _ClassVar[int] BUCKET_FIELD_NUMBER: _ClassVar[int] PROXY_FIELD_NUMBER: _ClassVar[int] @@ -332,7 +334,7 @@ class GCPUpload(_message.Message): def __init__(self, credentials: _Optional[str] = ..., bucket: _Optional[str] = ..., proxy: _Optional[_Union[ProxyConfig, _Mapping]] = ...) -> None: ... class AzureBlobUpload(_message.Message): - __slots__ = ("account_name", "account_key", "container_name") + __slots__ = ["account_name", "account_key", "container_name"] ACCOUNT_NAME_FIELD_NUMBER: _ClassVar[int] ACCOUNT_KEY_FIELD_NUMBER: _ClassVar[int] CONTAINER_NAME_FIELD_NUMBER: _ClassVar[int] @@ -342,7 +344,7 @@ class AzureBlobUpload(_message.Message): def __init__(self, account_name: _Optional[str] = ..., account_key: _Optional[str] = ..., container_name: _Optional[str] = ...) -> None: ... class AliOSSUpload(_message.Message): - __slots__ = ("access_key", "secret", "region", "endpoint", "bucket") + __slots__ = ["access_key", "secret", "region", "endpoint", "bucket"] ACCESS_KEY_FIELD_NUMBER: _ClassVar[int] SECRET_FIELD_NUMBER: _ClassVar[int] REGION_FIELD_NUMBER: _ClassVar[int] @@ -356,7 +358,7 @@ class AliOSSUpload(_message.Message): def __init__(self, access_key: _Optional[str] = ..., secret: _Optional[str] = ..., region: _Optional[str] = ..., endpoint: _Optional[str] = ..., bucket: _Optional[str] = ...) -> None: ... class ProxyConfig(_message.Message): - __slots__ = ("url", "username", "password") + __slots__ = ["url", "username", "password"] URL_FIELD_NUMBER: _ClassVar[int] USERNAME_FIELD_NUMBER: _ClassVar[int] PASSWORD_FIELD_NUMBER: _ClassVar[int] @@ -366,7 +368,7 @@ class ProxyConfig(_message.Message): def __init__(self, url: _Optional[str] = ..., username: _Optional[str] = ..., password: _Optional[str] = ...) -> None: ... class StreamOutput(_message.Message): - __slots__ = ("protocol", "urls") + __slots__ = ["protocol", "urls"] PROTOCOL_FIELD_NUMBER: _ClassVar[int] URLS_FIELD_NUMBER: _ClassVar[int] protocol: StreamProtocol @@ -374,7 +376,7 @@ class StreamOutput(_message.Message): def __init__(self, protocol: _Optional[_Union[StreamProtocol, str]] = ..., urls: _Optional[_Iterable[str]] = ...) -> None: ... class EncodingOptions(_message.Message): - __slots__ = ("width", "height", "depth", "framerate", "audio_codec", "audio_bitrate", "audio_quality", "audio_frequency", "video_codec", "video_bitrate", "video_quality", "key_frame_interval") + __slots__ = ["width", "height", "depth", "framerate", "audio_codec", "audio_bitrate", "audio_quality", "audio_frequency", "video_codec", "video_bitrate", "video_quality", "key_frame_interval"] WIDTH_FIELD_NUMBER: _ClassVar[int] HEIGHT_FIELD_NUMBER: _ClassVar[int] DEPTH_FIELD_NUMBER: _ClassVar[int] @@ -402,7 +404,7 @@ class EncodingOptions(_message.Message): def __init__(self, width: _Optional[int] = ..., height: _Optional[int] = ..., depth: _Optional[int] = ..., framerate: _Optional[int] = ..., audio_codec: _Optional[_Union[_models.AudioCodec, str]] = ..., audio_bitrate: _Optional[int] = ..., audio_quality: _Optional[int] = ..., audio_frequency: _Optional[int] = ..., video_codec: _Optional[_Union[_models.VideoCodec, str]] = ..., video_bitrate: _Optional[int] = ..., video_quality: _Optional[int] = ..., key_frame_interval: _Optional[float] = ...) -> None: ... class UpdateLayoutRequest(_message.Message): - __slots__ = ("egress_id", "layout") + __slots__ = ["egress_id", "layout"] EGRESS_ID_FIELD_NUMBER: _ClassVar[int] LAYOUT_FIELD_NUMBER: _ClassVar[int] egress_id: str @@ -410,7 +412,7 @@ class UpdateLayoutRequest(_message.Message): def __init__(self, egress_id: _Optional[str] = ..., layout: _Optional[str] = ...) -> None: ... class UpdateStreamRequest(_message.Message): - __slots__ = ("egress_id", "add_output_urls", "remove_output_urls") + __slots__ = ["egress_id", "add_output_urls", "remove_output_urls"] EGRESS_ID_FIELD_NUMBER: _ClassVar[int] ADD_OUTPUT_URLS_FIELD_NUMBER: _ClassVar[int] REMOVE_OUTPUT_URLS_FIELD_NUMBER: _ClassVar[int] @@ -420,7 +422,7 @@ class UpdateStreamRequest(_message.Message): def __init__(self, egress_id: _Optional[str] = ..., add_output_urls: _Optional[_Iterable[str]] = ..., remove_output_urls: _Optional[_Iterable[str]] = ...) -> None: ... class ListEgressRequest(_message.Message): - __slots__ = ("room_name", "egress_id", "active") + __slots__ = ["room_name", "egress_id", "active"] ROOM_NAME_FIELD_NUMBER: _ClassVar[int] EGRESS_ID_FIELD_NUMBER: _ClassVar[int] ACTIVE_FIELD_NUMBER: _ClassVar[int] @@ -430,19 +432,19 @@ class ListEgressRequest(_message.Message): def __init__(self, room_name: _Optional[str] = ..., egress_id: _Optional[str] = ..., active: bool = ...) -> None: ... class ListEgressResponse(_message.Message): - __slots__ = ("items",) + __slots__ = ["items"] ITEMS_FIELD_NUMBER: _ClassVar[int] items: _containers.RepeatedCompositeFieldContainer[EgressInfo] def __init__(self, items: _Optional[_Iterable[_Union[EgressInfo, _Mapping]]] = ...) -> None: ... class StopEgressRequest(_message.Message): - __slots__ = ("egress_id",) + __slots__ = ["egress_id"] EGRESS_ID_FIELD_NUMBER: _ClassVar[int] egress_id: str def __init__(self, egress_id: _Optional[str] = ...) -> None: ... class EgressInfo(_message.Message): - __slots__ = ("egress_id", "room_id", "room_name", "status", "started_at", "ended_at", "updated_at", "details", "error", "room_composite", "web", "participant", "track_composite", "track", "stream", "file", "segments", "stream_results", "file_results", "segment_results", "image_results") + __slots__ = ["egress_id", "room_id", "room_name", "status", "started_at", "ended_at", "updated_at", "details", "error", "error_code", "room_composite", "web", "participant", "track_composite", "track", "stream", "file", "segments", "stream_results", "file_results", "segment_results", "image_results"] EGRESS_ID_FIELD_NUMBER: _ClassVar[int] ROOM_ID_FIELD_NUMBER: _ClassVar[int] ROOM_NAME_FIELD_NUMBER: _ClassVar[int] @@ -452,6 +454,7 @@ class EgressInfo(_message.Message): UPDATED_AT_FIELD_NUMBER: _ClassVar[int] DETAILS_FIELD_NUMBER: _ClassVar[int] ERROR_FIELD_NUMBER: _ClassVar[int] + ERROR_CODE_FIELD_NUMBER: _ClassVar[int] ROOM_COMPOSITE_FIELD_NUMBER: _ClassVar[int] WEB_FIELD_NUMBER: _ClassVar[int] PARTICIPANT_FIELD_NUMBER: _ClassVar[int] @@ -473,6 +476,7 @@ class EgressInfo(_message.Message): updated_at: int details: str error: str + error_code: int room_composite: RoomCompositeEgressRequest web: WebEgressRequest participant: ParticipantEgressRequest @@ -485,18 +489,18 @@ class EgressInfo(_message.Message): file_results: _containers.RepeatedCompositeFieldContainer[FileInfo] segment_results: _containers.RepeatedCompositeFieldContainer[SegmentsInfo] image_results: _containers.RepeatedCompositeFieldContainer[ImagesInfo] - def __init__(self, egress_id: _Optional[str] = ..., room_id: _Optional[str] = ..., room_name: _Optional[str] = ..., status: _Optional[_Union[EgressStatus, str]] = ..., started_at: _Optional[int] = ..., ended_at: _Optional[int] = ..., updated_at: _Optional[int] = ..., details: _Optional[str] = ..., error: _Optional[str] = ..., room_composite: _Optional[_Union[RoomCompositeEgressRequest, _Mapping]] = ..., web: _Optional[_Union[WebEgressRequest, _Mapping]] = ..., participant: _Optional[_Union[ParticipantEgressRequest, _Mapping]] = ..., track_composite: _Optional[_Union[TrackCompositeEgressRequest, _Mapping]] = ..., track: _Optional[_Union[TrackEgressRequest, _Mapping]] = ..., stream: _Optional[_Union[StreamInfoList, _Mapping]] = ..., file: _Optional[_Union[FileInfo, _Mapping]] = ..., segments: _Optional[_Union[SegmentsInfo, _Mapping]] = ..., stream_results: _Optional[_Iterable[_Union[StreamInfo, _Mapping]]] = ..., file_results: _Optional[_Iterable[_Union[FileInfo, _Mapping]]] = ..., segment_results: _Optional[_Iterable[_Union[SegmentsInfo, _Mapping]]] = ..., image_results: _Optional[_Iterable[_Union[ImagesInfo, _Mapping]]] = ...) -> None: ... + def __init__(self, egress_id: _Optional[str] = ..., room_id: _Optional[str] = ..., room_name: _Optional[str] = ..., status: _Optional[_Union[EgressStatus, str]] = ..., started_at: _Optional[int] = ..., ended_at: _Optional[int] = ..., updated_at: _Optional[int] = ..., details: _Optional[str] = ..., error: _Optional[str] = ..., error_code: _Optional[int] = ..., room_composite: _Optional[_Union[RoomCompositeEgressRequest, _Mapping]] = ..., web: _Optional[_Union[WebEgressRequest, _Mapping]] = ..., participant: _Optional[_Union[ParticipantEgressRequest, _Mapping]] = ..., track_composite: _Optional[_Union[TrackCompositeEgressRequest, _Mapping]] = ..., track: _Optional[_Union[TrackEgressRequest, _Mapping]] = ..., stream: _Optional[_Union[StreamInfoList, _Mapping]] = ..., file: _Optional[_Union[FileInfo, _Mapping]] = ..., segments: _Optional[_Union[SegmentsInfo, _Mapping]] = ..., stream_results: _Optional[_Iterable[_Union[StreamInfo, _Mapping]]] = ..., file_results: _Optional[_Iterable[_Union[FileInfo, _Mapping]]] = ..., segment_results: _Optional[_Iterable[_Union[SegmentsInfo, _Mapping]]] = ..., image_results: _Optional[_Iterable[_Union[ImagesInfo, _Mapping]]] = ...) -> None: ... class StreamInfoList(_message.Message): - __slots__ = ("info",) + __slots__ = ["info"] INFO_FIELD_NUMBER: _ClassVar[int] info: _containers.RepeatedCompositeFieldContainer[StreamInfo] def __init__(self, info: _Optional[_Iterable[_Union[StreamInfo, _Mapping]]] = ...) -> None: ... class StreamInfo(_message.Message): - __slots__ = ("url", "started_at", "ended_at", "duration", "status", "error") + __slots__ = ["url", "started_at", "ended_at", "duration", "status", "error"] class Status(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] ACTIVE: _ClassVar[StreamInfo.Status] FINISHED: _ClassVar[StreamInfo.Status] FAILED: _ClassVar[StreamInfo.Status] @@ -518,7 +522,7 @@ class StreamInfo(_message.Message): def __init__(self, url: _Optional[str] = ..., started_at: _Optional[int] = ..., ended_at: _Optional[int] = ..., duration: _Optional[int] = ..., status: _Optional[_Union[StreamInfo.Status, str]] = ..., error: _Optional[str] = ...) -> None: ... class FileInfo(_message.Message): - __slots__ = ("filename", "started_at", "ended_at", "duration", "size", "location") + __slots__ = ["filename", "started_at", "ended_at", "duration", "size", "location"] FILENAME_FIELD_NUMBER: _ClassVar[int] STARTED_AT_FIELD_NUMBER: _ClassVar[int] ENDED_AT_FIELD_NUMBER: _ClassVar[int] @@ -534,7 +538,7 @@ class FileInfo(_message.Message): def __init__(self, filename: _Optional[str] = ..., started_at: _Optional[int] = ..., ended_at: _Optional[int] = ..., duration: _Optional[int] = ..., size: _Optional[int] = ..., location: _Optional[str] = ...) -> None: ... class SegmentsInfo(_message.Message): - __slots__ = ("playlist_name", "live_playlist_name", "duration", "size", "playlist_location", "live_playlist_location", "segment_count", "started_at", "ended_at") + __slots__ = ["playlist_name", "live_playlist_name", "duration", "size", "playlist_location", "live_playlist_location", "segment_count", "started_at", "ended_at"] PLAYLIST_NAME_FIELD_NUMBER: _ClassVar[int] LIVE_PLAYLIST_NAME_FIELD_NUMBER: _ClassVar[int] DURATION_FIELD_NUMBER: _ClassVar[int] @@ -556,7 +560,7 @@ class SegmentsInfo(_message.Message): def __init__(self, playlist_name: _Optional[str] = ..., live_playlist_name: _Optional[str] = ..., duration: _Optional[int] = ..., size: _Optional[int] = ..., playlist_location: _Optional[str] = ..., live_playlist_location: _Optional[str] = ..., segment_count: _Optional[int] = ..., started_at: _Optional[int] = ..., ended_at: _Optional[int] = ...) -> None: ... class ImagesInfo(_message.Message): - __slots__ = ("image_count", "started_at", "ended_at") + __slots__ = ["image_count", "started_at", "ended_at"] IMAGE_COUNT_FIELD_NUMBER: _ClassVar[int] STARTED_AT_FIELD_NUMBER: _ClassVar[int] ENDED_AT_FIELD_NUMBER: _ClassVar[int] @@ -566,7 +570,7 @@ class ImagesInfo(_message.Message): def __init__(self, image_count: _Optional[int] = ..., started_at: _Optional[int] = ..., ended_at: _Optional[int] = ...) -> None: ... class AutoParticipantEgress(_message.Message): - __slots__ = ("preset", "advanced", "file_outputs", "segment_outputs") + __slots__ = ["preset", "advanced", "file_outputs", "segment_outputs"] PRESET_FIELD_NUMBER: _ClassVar[int] ADVANCED_FIELD_NUMBER: _ClassVar[int] FILE_OUTPUTS_FIELD_NUMBER: _ClassVar[int] @@ -578,15 +582,17 @@ class AutoParticipantEgress(_message.Message): def __init__(self, preset: _Optional[_Union[EncodingOptionsPreset, str]] = ..., advanced: _Optional[_Union[EncodingOptions, _Mapping]] = ..., file_outputs: _Optional[_Iterable[_Union[EncodedFileOutput, _Mapping]]] = ..., segment_outputs: _Optional[_Iterable[_Union[SegmentedFileOutput, _Mapping]]] = ...) -> None: ... class AutoTrackEgress(_message.Message): - __slots__ = ("filepath", "disable_manifest", "s3", "gcp", "azure") + __slots__ = ["filepath", "disable_manifest", "s3", "gcp", "azure", "aliOSS"] FILEPATH_FIELD_NUMBER: _ClassVar[int] DISABLE_MANIFEST_FIELD_NUMBER: _ClassVar[int] S3_FIELD_NUMBER: _ClassVar[int] GCP_FIELD_NUMBER: _ClassVar[int] AZURE_FIELD_NUMBER: _ClassVar[int] + ALIOSS_FIELD_NUMBER: _ClassVar[int] filepath: str disable_manifest: bool s3: S3Upload gcp: GCPUpload azure: AzureBlobUpload - def __init__(self, filepath: _Optional[str] = ..., disable_manifest: bool = ..., s3: _Optional[_Union[S3Upload, _Mapping]] = ..., gcp: _Optional[_Union[GCPUpload, _Mapping]] = ..., azure: _Optional[_Union[AzureBlobUpload, _Mapping]] = ...) -> None: ... + aliOSS: AliOSSUpload + def __init__(self, filepath: _Optional[str] = ..., disable_manifest: bool = ..., s3: _Optional[_Union[S3Upload, _Mapping]] = ..., gcp: _Optional[_Union[GCPUpload, _Mapping]] = ..., azure: _Optional[_Union[AzureBlobUpload, _Mapping]] = ..., aliOSS: _Optional[_Union[AliOSSUpload, _Mapping]] = ...) -> None: ... diff --git a/livekit-protocol/livekit/protocol/ingress.py b/livekit-protocol/livekit/protocol/ingress.py index 26e01aec..da6d8cdf 100644 --- a/livekit-protocol/livekit/protocol/ingress.py +++ b/livekit-protocol/livekit/protocol/ingress.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_ingress.proto -# Protobuf Python Version: 4.25.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -15,48 +14,55 @@ from . import models as _models_ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15livekit_ingress.proto\x12\x07livekit\x1a\x14livekit_models.proto\"\xbb\x02\n\x14\x43reateIngressRequest\x12)\n\ninput_type\x18\x01 \x01(\x0e\x32\x15.livekit.IngressInput\x12\x0b\n\x03url\x18\t \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\troom_name\x18\x03 \x01(\t\x12\x1c\n\x14participant_identity\x18\x04 \x01(\t\x12\x18\n\x10participant_name\x18\x05 \x01(\t\x12\x1c\n\x14participant_metadata\x18\n \x01(\t\x12\x1a\n\x12\x62ypass_transcoding\x18\x08 \x01(\x08\x12+\n\x05\x61udio\x18\x06 \x01(\x0b\x32\x1c.livekit.IngressAudioOptions\x12+\n\x05video\x18\x07 \x01(\x0b\x32\x1c.livekit.IngressVideoOptions\"\xcd\x01\n\x13IngressAudioOptions\x12\x0c\n\x04name\x18\x01 \x01(\t\x12$\n\x06source\x18\x02 \x01(\x0e\x32\x14.livekit.TrackSource\x12\x35\n\x06preset\x18\x03 \x01(\x0e\x32#.livekit.IngressAudioEncodingPresetH\x00\x12\x37\n\x07options\x18\x04 \x01(\x0b\x32$.livekit.IngressAudioEncodingOptionsH\x00\x42\x12\n\x10\x65ncoding_options\"\xcd\x01\n\x13IngressVideoOptions\x12\x0c\n\x04name\x18\x01 \x01(\t\x12$\n\x06source\x18\x02 \x01(\x0e\x32\x14.livekit.TrackSource\x12\x35\n\x06preset\x18\x03 \x01(\x0e\x32#.livekit.IngressVideoEncodingPresetH\x00\x12\x37\n\x07options\x18\x04 \x01(\x0b\x32$.livekit.IngressVideoEncodingOptionsH\x00\x42\x12\n\x10\x65ncoding_options\"\x7f\n\x1bIngressAudioEncodingOptions\x12(\n\x0b\x61udio_codec\x18\x01 \x01(\x0e\x32\x13.livekit.AudioCodec\x12\x0f\n\x07\x62itrate\x18\x02 \x01(\r\x12\x13\n\x0b\x64isable_dtx\x18\x03 \x01(\x08\x12\x10\n\x08\x63hannels\x18\x04 \x01(\r\"\x80\x01\n\x1bIngressVideoEncodingOptions\x12(\n\x0bvideo_codec\x18\x01 \x01(\x0e\x32\x13.livekit.VideoCodec\x12\x12\n\nframe_rate\x18\x02 \x01(\x01\x12#\n\x06layers\x18\x03 \x03(\x0b\x32\x13.livekit.VideoLayer\"\x92\x03\n\x0bIngressInfo\x12\x12\n\ningress_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\nstream_key\x18\x03 \x01(\t\x12\x0b\n\x03url\x18\x04 \x01(\t\x12)\n\ninput_type\x18\x05 \x01(\x0e\x32\x15.livekit.IngressInput\x12\x1a\n\x12\x62ypass_transcoding\x18\r \x01(\x08\x12+\n\x05\x61udio\x18\x06 \x01(\x0b\x32\x1c.livekit.IngressAudioOptions\x12+\n\x05video\x18\x07 \x01(\x0b\x32\x1c.livekit.IngressVideoOptions\x12\x11\n\troom_name\x18\x08 \x01(\t\x12\x1c\n\x14participant_identity\x18\t \x01(\t\x12\x18\n\x10participant_name\x18\n \x01(\t\x12\x1c\n\x14participant_metadata\x18\x0e \x01(\t\x12\x10\n\x08reusable\x18\x0b \x01(\x08\x12$\n\x05state\x18\x0c \x01(\x0b\x32\x15.livekit.IngressState\"\x9e\x03\n\x0cIngressState\x12,\n\x06status\x18\x01 \x01(\x0e\x32\x1c.livekit.IngressState.Status\x12\r\n\x05\x65rror\x18\x02 \x01(\t\x12\'\n\x05video\x18\x03 \x01(\x0b\x32\x18.livekit.InputVideoState\x12\'\n\x05\x61udio\x18\x04 \x01(\x0b\x32\x18.livekit.InputAudioState\x12\x0f\n\x07room_id\x18\x05 \x01(\t\x12\x12\n\nstarted_at\x18\x07 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x08 \x01(\x03\x12\x12\n\nupdated_at\x18\n \x01(\x03\x12\x13\n\x0bresource_id\x18\t \x01(\t\x12\"\n\x06tracks\x18\x06 \x03(\x0b\x32\x12.livekit.TrackInfo\"{\n\x06Status\x12\x15\n\x11\x45NDPOINT_INACTIVE\x10\x00\x12\x16\n\x12\x45NDPOINT_BUFFERING\x10\x01\x12\x17\n\x13\x45NDPOINT_PUBLISHING\x10\x02\x12\x12\n\x0e\x45NDPOINT_ERROR\x10\x03\x12\x15\n\x11\x45NDPOINT_COMPLETE\x10\x04\"o\n\x0fInputVideoState\x12\x11\n\tmime_type\x18\x01 \x01(\t\x12\x17\n\x0f\x61verage_bitrate\x18\x02 \x01(\r\x12\r\n\x05width\x18\x03 \x01(\r\x12\x0e\n\x06height\x18\x04 \x01(\r\x12\x11\n\tframerate\x18\x05 \x01(\x01\"d\n\x0fInputAudioState\x12\x11\n\tmime_type\x18\x01 \x01(\t\x12\x17\n\x0f\x61verage_bitrate\x18\x02 \x01(\r\x12\x10\n\x08\x63hannels\x18\x03 \x01(\r\x12\x13\n\x0bsample_rate\x18\x04 \x01(\r\"\xb3\x02\n\x14UpdateIngressRequest\x12\x12\n\ningress_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\troom_name\x18\x03 \x01(\t\x12\x1c\n\x14participant_identity\x18\x04 \x01(\t\x12\x18\n\x10participant_name\x18\x05 \x01(\t\x12\x1c\n\x14participant_metadata\x18\t \x01(\t\x12\x1f\n\x12\x62ypass_transcoding\x18\x08 \x01(\x08H\x00\x88\x01\x01\x12+\n\x05\x61udio\x18\x06 \x01(\x0b\x32\x1c.livekit.IngressAudioOptions\x12+\n\x05video\x18\x07 \x01(\x0b\x32\x1c.livekit.IngressVideoOptionsB\x15\n\x13_bypass_transcoding\";\n\x12ListIngressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x12\n\ningress_id\x18\x02 \x01(\t\":\n\x13ListIngressResponse\x12#\n\x05items\x18\x01 \x03(\x0b\x32\x14.livekit.IngressInfo\"*\n\x14\x44\x65leteIngressRequest\x12\x12\n\ningress_id\x18\x01 \x01(\t*=\n\x0cIngressInput\x12\x0e\n\nRTMP_INPUT\x10\x00\x12\x0e\n\nWHIP_INPUT\x10\x01\x12\r\n\tURL_INPUT\x10\x02*I\n\x1aIngressAudioEncodingPreset\x12\x16\n\x12OPUS_STEREO_96KBPS\x10\x00\x12\x13\n\x0fOPUS_MONO_64KBS\x10\x01*\x84\x03\n\x1aIngressVideoEncodingPreset\x12\x1c\n\x18H264_720P_30FPS_3_LAYERS\x10\x00\x12\x1d\n\x19H264_1080P_30FPS_3_LAYERS\x10\x01\x12\x1c\n\x18H264_540P_25FPS_2_LAYERS\x10\x02\x12\x1b\n\x17H264_720P_30FPS_1_LAYER\x10\x03\x12\x1c\n\x18H264_1080P_30FPS_1_LAYER\x10\x04\x12(\n$H264_720P_30FPS_3_LAYERS_HIGH_MOTION\x10\x05\x12)\n%H264_1080P_30FPS_3_LAYERS_HIGH_MOTION\x10\x06\x12(\n$H264_540P_25FPS_2_LAYERS_HIGH_MOTION\x10\x07\x12\'\n#H264_720P_30FPS_1_LAYER_HIGH_MOTION\x10\x08\x12(\n$H264_1080P_30FPS_1_LAYER_HIGH_MOTION\x10\t2\xa5\x02\n\x07Ingress\x12\x44\n\rCreateIngress\x12\x1d.livekit.CreateIngressRequest\x1a\x14.livekit.IngressInfo\x12\x44\n\rUpdateIngress\x12\x1d.livekit.UpdateIngressRequest\x1a\x14.livekit.IngressInfo\x12H\n\x0bListIngress\x12\x1b.livekit.ListIngressRequest\x1a\x1c.livekit.ListIngressResponse\x12\x44\n\rDeleteIngress\x12\x1d.livekit.DeleteIngressRequest\x1a\x14.livekit.IngressInfoBFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15livekit_ingress.proto\x12\x07livekit\x1a\x14livekit_models.proto\"\xf7\x02\n\x14\x43reateIngressRequest\x12)\n\ninput_type\x18\x01 \x01(\x0e\x32\x15.livekit.IngressInput\x12\x0b\n\x03url\x18\t \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\troom_name\x18\x03 \x01(\t\x12\x1c\n\x14participant_identity\x18\x04 \x01(\t\x12\x18\n\x10participant_name\x18\x05 \x01(\t\x12\x1c\n\x14participant_metadata\x18\n \x01(\t\x12\x1e\n\x12\x62ypass_transcoding\x18\x08 \x01(\x08\x42\x02\x18\x01\x12\x1f\n\x12\x65nable_transcoding\x18\x0b \x01(\x08H\x00\x88\x01\x01\x12+\n\x05\x61udio\x18\x06 \x01(\x0b\x32\x1c.livekit.IngressAudioOptions\x12+\n\x05video\x18\x07 \x01(\x0b\x32\x1c.livekit.IngressVideoOptionsB\x15\n\x13_enable_transcoding\"\xcd\x01\n\x13IngressAudioOptions\x12\x0c\n\x04name\x18\x01 \x01(\t\x12$\n\x06source\x18\x02 \x01(\x0e\x32\x14.livekit.TrackSource\x12\x35\n\x06preset\x18\x03 \x01(\x0e\x32#.livekit.IngressAudioEncodingPresetH\x00\x12\x37\n\x07options\x18\x04 \x01(\x0b\x32$.livekit.IngressAudioEncodingOptionsH\x00\x42\x12\n\x10\x65ncoding_options\"\xcd\x01\n\x13IngressVideoOptions\x12\x0c\n\x04name\x18\x01 \x01(\t\x12$\n\x06source\x18\x02 \x01(\x0e\x32\x14.livekit.TrackSource\x12\x35\n\x06preset\x18\x03 \x01(\x0e\x32#.livekit.IngressVideoEncodingPresetH\x00\x12\x37\n\x07options\x18\x04 \x01(\x0b\x32$.livekit.IngressVideoEncodingOptionsH\x00\x42\x12\n\x10\x65ncoding_options\"\x7f\n\x1bIngressAudioEncodingOptions\x12(\n\x0b\x61udio_codec\x18\x01 \x01(\x0e\x32\x13.livekit.AudioCodec\x12\x0f\n\x07\x62itrate\x18\x02 \x01(\r\x12\x13\n\x0b\x64isable_dtx\x18\x03 \x01(\x08\x12\x10\n\x08\x63hannels\x18\x04 \x01(\r\"\x80\x01\n\x1bIngressVideoEncodingOptions\x12(\n\x0bvideo_codec\x18\x01 \x01(\x0e\x32\x13.livekit.VideoCodec\x12\x12\n\nframe_rate\x18\x02 \x01(\x01\x12#\n\x06layers\x18\x03 \x03(\x0b\x32\x13.livekit.VideoLayer\"\xce\x03\n\x0bIngressInfo\x12\x12\n\ningress_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\nstream_key\x18\x03 \x01(\t\x12\x0b\n\x03url\x18\x04 \x01(\t\x12)\n\ninput_type\x18\x05 \x01(\x0e\x32\x15.livekit.IngressInput\x12\x1e\n\x12\x62ypass_transcoding\x18\r \x01(\x08\x42\x02\x18\x01\x12\x1f\n\x12\x65nable_transcoding\x18\x0f \x01(\x08H\x00\x88\x01\x01\x12+\n\x05\x61udio\x18\x06 \x01(\x0b\x32\x1c.livekit.IngressAudioOptions\x12+\n\x05video\x18\x07 \x01(\x0b\x32\x1c.livekit.IngressVideoOptions\x12\x11\n\troom_name\x18\x08 \x01(\t\x12\x1c\n\x14participant_identity\x18\t \x01(\t\x12\x18\n\x10participant_name\x18\n \x01(\t\x12\x1c\n\x14participant_metadata\x18\x0e \x01(\t\x12\x10\n\x08reusable\x18\x0b \x01(\x08\x12$\n\x05state\x18\x0c \x01(\x0b\x32\x15.livekit.IngressStateB\x15\n\x13_enable_transcoding\"\x9e\x03\n\x0cIngressState\x12,\n\x06status\x18\x01 \x01(\x0e\x32\x1c.livekit.IngressState.Status\x12\r\n\x05\x65rror\x18\x02 \x01(\t\x12\'\n\x05video\x18\x03 \x01(\x0b\x32\x18.livekit.InputVideoState\x12\'\n\x05\x61udio\x18\x04 \x01(\x0b\x32\x18.livekit.InputAudioState\x12\x0f\n\x07room_id\x18\x05 \x01(\t\x12\x12\n\nstarted_at\x18\x07 \x01(\x03\x12\x10\n\x08\x65nded_at\x18\x08 \x01(\x03\x12\x12\n\nupdated_at\x18\n \x01(\x03\x12\x13\n\x0bresource_id\x18\t \x01(\t\x12\"\n\x06tracks\x18\x06 \x03(\x0b\x32\x12.livekit.TrackInfo\"{\n\x06Status\x12\x15\n\x11\x45NDPOINT_INACTIVE\x10\x00\x12\x16\n\x12\x45NDPOINT_BUFFERING\x10\x01\x12\x17\n\x13\x45NDPOINT_PUBLISHING\x10\x02\x12\x12\n\x0e\x45NDPOINT_ERROR\x10\x03\x12\x15\n\x11\x45NDPOINT_COMPLETE\x10\x04\"o\n\x0fInputVideoState\x12\x11\n\tmime_type\x18\x01 \x01(\t\x12\x17\n\x0f\x61verage_bitrate\x18\x02 \x01(\r\x12\r\n\x05width\x18\x03 \x01(\r\x12\x0e\n\x06height\x18\x04 \x01(\r\x12\x11\n\tframerate\x18\x05 \x01(\x01\"d\n\x0fInputAudioState\x12\x11\n\tmime_type\x18\x01 \x01(\t\x12\x17\n\x0f\x61verage_bitrate\x18\x02 \x01(\r\x12\x10\n\x08\x63hannels\x18\x03 \x01(\r\x12\x13\n\x0bsample_rate\x18\x04 \x01(\r\"\xef\x02\n\x14UpdateIngressRequest\x12\x12\n\ningress_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\troom_name\x18\x03 \x01(\t\x12\x1c\n\x14participant_identity\x18\x04 \x01(\t\x12\x18\n\x10participant_name\x18\x05 \x01(\t\x12\x1c\n\x14participant_metadata\x18\t \x01(\t\x12#\n\x12\x62ypass_transcoding\x18\x08 \x01(\x08\x42\x02\x18\x01H\x00\x88\x01\x01\x12\x1f\n\x12\x65nable_transcoding\x18\n \x01(\x08H\x01\x88\x01\x01\x12+\n\x05\x61udio\x18\x06 \x01(\x0b\x32\x1c.livekit.IngressAudioOptions\x12+\n\x05video\x18\x07 \x01(\x0b\x32\x1c.livekit.IngressVideoOptionsB\x15\n\x13_bypass_transcodingB\x15\n\x13_enable_transcoding\";\n\x12ListIngressRequest\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x12\n\ningress_id\x18\x02 \x01(\t\":\n\x13ListIngressResponse\x12#\n\x05items\x18\x01 \x03(\x0b\x32\x14.livekit.IngressInfo\"*\n\x14\x44\x65leteIngressRequest\x12\x12\n\ningress_id\x18\x01 \x01(\t*=\n\x0cIngressInput\x12\x0e\n\nRTMP_INPUT\x10\x00\x12\x0e\n\nWHIP_INPUT\x10\x01\x12\r\n\tURL_INPUT\x10\x02*I\n\x1aIngressAudioEncodingPreset\x12\x16\n\x12OPUS_STEREO_96KBPS\x10\x00\x12\x13\n\x0fOPUS_MONO_64KBS\x10\x01*\x84\x03\n\x1aIngressVideoEncodingPreset\x12\x1c\n\x18H264_720P_30FPS_3_LAYERS\x10\x00\x12\x1d\n\x19H264_1080P_30FPS_3_LAYERS\x10\x01\x12\x1c\n\x18H264_540P_25FPS_2_LAYERS\x10\x02\x12\x1b\n\x17H264_720P_30FPS_1_LAYER\x10\x03\x12\x1c\n\x18H264_1080P_30FPS_1_LAYER\x10\x04\x12(\n$H264_720P_30FPS_3_LAYERS_HIGH_MOTION\x10\x05\x12)\n%H264_1080P_30FPS_3_LAYERS_HIGH_MOTION\x10\x06\x12(\n$H264_540P_25FPS_2_LAYERS_HIGH_MOTION\x10\x07\x12\'\n#H264_720P_30FPS_1_LAYER_HIGH_MOTION\x10\x08\x12(\n$H264_1080P_30FPS_1_LAYER_HIGH_MOTION\x10\t2\xa5\x02\n\x07Ingress\x12\x44\n\rCreateIngress\x12\x1d.livekit.CreateIngressRequest\x1a\x14.livekit.IngressInfo\x12\x44\n\rUpdateIngress\x12\x1d.livekit.UpdateIngressRequest\x1a\x14.livekit.IngressInfo\x12H\n\x0bListIngress\x12\x1b.livekit.ListIngressRequest\x1a\x1c.livekit.ListIngressResponse\x12\x44\n\rDeleteIngress\x12\x1d.livekit.DeleteIngressRequest\x1a\x14.livekit.IngressInfoBFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'ingress', _globals) if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None - _globals['DESCRIPTOR']._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' - _globals['_INGRESSINPUT']._serialized_start=2562 - _globals['_INGRESSINPUT']._serialized_end=2623 - _globals['_INGRESSAUDIOENCODINGPRESET']._serialized_start=2625 - _globals['_INGRESSAUDIOENCODINGPRESET']._serialized_end=2698 - _globals['_INGRESSVIDEOENCODINGPRESET']._serialized_start=2701 - _globals['_INGRESSVIDEOENCODINGPRESET']._serialized_end=3089 + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' + _CREATEINGRESSREQUEST.fields_by_name['bypass_transcoding']._options = None + _CREATEINGRESSREQUEST.fields_by_name['bypass_transcoding']._serialized_options = b'\030\001' + _INGRESSINFO.fields_by_name['bypass_transcoding']._options = None + _INGRESSINFO.fields_by_name['bypass_transcoding']._serialized_options = b'\030\001' + _UPDATEINGRESSREQUEST.fields_by_name['bypass_transcoding']._options = None + _UPDATEINGRESSREQUEST.fields_by_name['bypass_transcoding']._serialized_options = b'\030\001' + _globals['_INGRESSINPUT']._serialized_start=2742 + _globals['_INGRESSINPUT']._serialized_end=2803 + _globals['_INGRESSAUDIOENCODINGPRESET']._serialized_start=2805 + _globals['_INGRESSAUDIOENCODINGPRESET']._serialized_end=2878 + _globals['_INGRESSVIDEOENCODINGPRESET']._serialized_start=2881 + _globals['_INGRESSVIDEOENCODINGPRESET']._serialized_end=3269 _globals['_CREATEINGRESSREQUEST']._serialized_start=57 - _globals['_CREATEINGRESSREQUEST']._serialized_end=372 - _globals['_INGRESSAUDIOOPTIONS']._serialized_start=375 - _globals['_INGRESSAUDIOOPTIONS']._serialized_end=580 - _globals['_INGRESSVIDEOOPTIONS']._serialized_start=583 - _globals['_INGRESSVIDEOOPTIONS']._serialized_end=788 - _globals['_INGRESSAUDIOENCODINGOPTIONS']._serialized_start=790 - _globals['_INGRESSAUDIOENCODINGOPTIONS']._serialized_end=917 - _globals['_INGRESSVIDEOENCODINGOPTIONS']._serialized_start=920 - _globals['_INGRESSVIDEOENCODINGOPTIONS']._serialized_end=1048 - _globals['_INGRESSINFO']._serialized_start=1051 - _globals['_INGRESSINFO']._serialized_end=1453 - _globals['_INGRESSSTATE']._serialized_start=1456 - _globals['_INGRESSSTATE']._serialized_end=1870 - _globals['_INGRESSSTATE_STATUS']._serialized_start=1747 - _globals['_INGRESSSTATE_STATUS']._serialized_end=1870 - _globals['_INPUTVIDEOSTATE']._serialized_start=1872 - _globals['_INPUTVIDEOSTATE']._serialized_end=1983 - _globals['_INPUTAUDIOSTATE']._serialized_start=1985 - _globals['_INPUTAUDIOSTATE']._serialized_end=2085 - _globals['_UPDATEINGRESSREQUEST']._serialized_start=2088 - _globals['_UPDATEINGRESSREQUEST']._serialized_end=2395 - _globals['_LISTINGRESSREQUEST']._serialized_start=2397 - _globals['_LISTINGRESSREQUEST']._serialized_end=2456 - _globals['_LISTINGRESSRESPONSE']._serialized_start=2458 - _globals['_LISTINGRESSRESPONSE']._serialized_end=2516 - _globals['_DELETEINGRESSREQUEST']._serialized_start=2518 - _globals['_DELETEINGRESSREQUEST']._serialized_end=2560 - _globals['_INGRESS']._serialized_start=3092 - _globals['_INGRESS']._serialized_end=3385 + _globals['_CREATEINGRESSREQUEST']._serialized_end=432 + _globals['_INGRESSAUDIOOPTIONS']._serialized_start=435 + _globals['_INGRESSAUDIOOPTIONS']._serialized_end=640 + _globals['_INGRESSVIDEOOPTIONS']._serialized_start=643 + _globals['_INGRESSVIDEOOPTIONS']._serialized_end=848 + _globals['_INGRESSAUDIOENCODINGOPTIONS']._serialized_start=850 + _globals['_INGRESSAUDIOENCODINGOPTIONS']._serialized_end=977 + _globals['_INGRESSVIDEOENCODINGOPTIONS']._serialized_start=980 + _globals['_INGRESSVIDEOENCODINGOPTIONS']._serialized_end=1108 + _globals['_INGRESSINFO']._serialized_start=1111 + _globals['_INGRESSINFO']._serialized_end=1573 + _globals['_INGRESSSTATE']._serialized_start=1576 + _globals['_INGRESSSTATE']._serialized_end=1990 + _globals['_INGRESSSTATE_STATUS']._serialized_start=1867 + _globals['_INGRESSSTATE_STATUS']._serialized_end=1990 + _globals['_INPUTVIDEOSTATE']._serialized_start=1992 + _globals['_INPUTVIDEOSTATE']._serialized_end=2103 + _globals['_INPUTAUDIOSTATE']._serialized_start=2105 + _globals['_INPUTAUDIOSTATE']._serialized_end=2205 + _globals['_UPDATEINGRESSREQUEST']._serialized_start=2208 + _globals['_UPDATEINGRESSREQUEST']._serialized_end=2575 + _globals['_LISTINGRESSREQUEST']._serialized_start=2577 + _globals['_LISTINGRESSREQUEST']._serialized_end=2636 + _globals['_LISTINGRESSRESPONSE']._serialized_start=2638 + _globals['_LISTINGRESSRESPONSE']._serialized_end=2696 + _globals['_DELETEINGRESSREQUEST']._serialized_start=2698 + _globals['_DELETEINGRESSREQUEST']._serialized_end=2740 + _globals['_INGRESS']._serialized_start=3272 + _globals['_INGRESS']._serialized_end=3565 # @@protoc_insertion_point(module_scope) diff --git a/livekit-protocol/livekit/protocol/ingress.pyi b/livekit-protocol/livekit/protocol/ingress.pyi index 5a3c0d9a..49d8a497 100644 --- a/livekit-protocol/livekit/protocol/ingress.pyi +++ b/livekit-protocol/livekit/protocol/ingress.pyi @@ -8,18 +8,18 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map DESCRIPTOR: _descriptor.FileDescriptor class IngressInput(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] RTMP_INPUT: _ClassVar[IngressInput] WHIP_INPUT: _ClassVar[IngressInput] URL_INPUT: _ClassVar[IngressInput] class IngressAudioEncodingPreset(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] OPUS_STEREO_96KBPS: _ClassVar[IngressAudioEncodingPreset] OPUS_MONO_64KBS: _ClassVar[IngressAudioEncodingPreset] class IngressVideoEncodingPreset(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] H264_720P_30FPS_3_LAYERS: _ClassVar[IngressVideoEncodingPreset] H264_1080P_30FPS_3_LAYERS: _ClassVar[IngressVideoEncodingPreset] H264_540P_25FPS_2_LAYERS: _ClassVar[IngressVideoEncodingPreset] @@ -47,7 +47,7 @@ H264_720P_30FPS_1_LAYER_HIGH_MOTION: IngressVideoEncodingPreset H264_1080P_30FPS_1_LAYER_HIGH_MOTION: IngressVideoEncodingPreset class CreateIngressRequest(_message.Message): - __slots__ = ("input_type", "url", "name", "room_name", "participant_identity", "participant_name", "participant_metadata", "bypass_transcoding", "audio", "video") + __slots__ = ["input_type", "url", "name", "room_name", "participant_identity", "participant_name", "participant_metadata", "bypass_transcoding", "enable_transcoding", "audio", "video"] INPUT_TYPE_FIELD_NUMBER: _ClassVar[int] URL_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] @@ -56,6 +56,7 @@ class CreateIngressRequest(_message.Message): PARTICIPANT_NAME_FIELD_NUMBER: _ClassVar[int] PARTICIPANT_METADATA_FIELD_NUMBER: _ClassVar[int] BYPASS_TRANSCODING_FIELD_NUMBER: _ClassVar[int] + ENABLE_TRANSCODING_FIELD_NUMBER: _ClassVar[int] AUDIO_FIELD_NUMBER: _ClassVar[int] VIDEO_FIELD_NUMBER: _ClassVar[int] input_type: IngressInput @@ -66,12 +67,13 @@ class CreateIngressRequest(_message.Message): participant_name: str participant_metadata: str bypass_transcoding: bool + enable_transcoding: bool audio: IngressAudioOptions video: IngressVideoOptions - def __init__(self, input_type: _Optional[_Union[IngressInput, str]] = ..., url: _Optional[str] = ..., name: _Optional[str] = ..., room_name: _Optional[str] = ..., participant_identity: _Optional[str] = ..., participant_name: _Optional[str] = ..., participant_metadata: _Optional[str] = ..., bypass_transcoding: bool = ..., audio: _Optional[_Union[IngressAudioOptions, _Mapping]] = ..., video: _Optional[_Union[IngressVideoOptions, _Mapping]] = ...) -> None: ... + def __init__(self, input_type: _Optional[_Union[IngressInput, str]] = ..., url: _Optional[str] = ..., name: _Optional[str] = ..., room_name: _Optional[str] = ..., participant_identity: _Optional[str] = ..., participant_name: _Optional[str] = ..., participant_metadata: _Optional[str] = ..., bypass_transcoding: bool = ..., enable_transcoding: bool = ..., audio: _Optional[_Union[IngressAudioOptions, _Mapping]] = ..., video: _Optional[_Union[IngressVideoOptions, _Mapping]] = ...) -> None: ... class IngressAudioOptions(_message.Message): - __slots__ = ("name", "source", "preset", "options") + __slots__ = ["name", "source", "preset", "options"] NAME_FIELD_NUMBER: _ClassVar[int] SOURCE_FIELD_NUMBER: _ClassVar[int] PRESET_FIELD_NUMBER: _ClassVar[int] @@ -83,7 +85,7 @@ class IngressAudioOptions(_message.Message): def __init__(self, name: _Optional[str] = ..., source: _Optional[_Union[_models.TrackSource, str]] = ..., preset: _Optional[_Union[IngressAudioEncodingPreset, str]] = ..., options: _Optional[_Union[IngressAudioEncodingOptions, _Mapping]] = ...) -> None: ... class IngressVideoOptions(_message.Message): - __slots__ = ("name", "source", "preset", "options") + __slots__ = ["name", "source", "preset", "options"] NAME_FIELD_NUMBER: _ClassVar[int] SOURCE_FIELD_NUMBER: _ClassVar[int] PRESET_FIELD_NUMBER: _ClassVar[int] @@ -95,7 +97,7 @@ class IngressVideoOptions(_message.Message): def __init__(self, name: _Optional[str] = ..., source: _Optional[_Union[_models.TrackSource, str]] = ..., preset: _Optional[_Union[IngressVideoEncodingPreset, str]] = ..., options: _Optional[_Union[IngressVideoEncodingOptions, _Mapping]] = ...) -> None: ... class IngressAudioEncodingOptions(_message.Message): - __slots__ = ("audio_codec", "bitrate", "disable_dtx", "channels") + __slots__ = ["audio_codec", "bitrate", "disable_dtx", "channels"] AUDIO_CODEC_FIELD_NUMBER: _ClassVar[int] BITRATE_FIELD_NUMBER: _ClassVar[int] DISABLE_DTX_FIELD_NUMBER: _ClassVar[int] @@ -107,7 +109,7 @@ class IngressAudioEncodingOptions(_message.Message): def __init__(self, audio_codec: _Optional[_Union[_models.AudioCodec, str]] = ..., bitrate: _Optional[int] = ..., disable_dtx: bool = ..., channels: _Optional[int] = ...) -> None: ... class IngressVideoEncodingOptions(_message.Message): - __slots__ = ("video_codec", "frame_rate", "layers") + __slots__ = ["video_codec", "frame_rate", "layers"] VIDEO_CODEC_FIELD_NUMBER: _ClassVar[int] FRAME_RATE_FIELD_NUMBER: _ClassVar[int] LAYERS_FIELD_NUMBER: _ClassVar[int] @@ -117,13 +119,14 @@ class IngressVideoEncodingOptions(_message.Message): def __init__(self, video_codec: _Optional[_Union[_models.VideoCodec, str]] = ..., frame_rate: _Optional[float] = ..., layers: _Optional[_Iterable[_Union[_models.VideoLayer, _Mapping]]] = ...) -> None: ... class IngressInfo(_message.Message): - __slots__ = ("ingress_id", "name", "stream_key", "url", "input_type", "bypass_transcoding", "audio", "video", "room_name", "participant_identity", "participant_name", "participant_metadata", "reusable", "state") + __slots__ = ["ingress_id", "name", "stream_key", "url", "input_type", "bypass_transcoding", "enable_transcoding", "audio", "video", "room_name", "participant_identity", "participant_name", "participant_metadata", "reusable", "state"] INGRESS_ID_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] STREAM_KEY_FIELD_NUMBER: _ClassVar[int] URL_FIELD_NUMBER: _ClassVar[int] INPUT_TYPE_FIELD_NUMBER: _ClassVar[int] BYPASS_TRANSCODING_FIELD_NUMBER: _ClassVar[int] + ENABLE_TRANSCODING_FIELD_NUMBER: _ClassVar[int] AUDIO_FIELD_NUMBER: _ClassVar[int] VIDEO_FIELD_NUMBER: _ClassVar[int] ROOM_NAME_FIELD_NUMBER: _ClassVar[int] @@ -138,6 +141,7 @@ class IngressInfo(_message.Message): url: str input_type: IngressInput bypass_transcoding: bool + enable_transcoding: bool audio: IngressAudioOptions video: IngressVideoOptions room_name: str @@ -146,12 +150,12 @@ class IngressInfo(_message.Message): participant_metadata: str reusable: bool state: IngressState - def __init__(self, ingress_id: _Optional[str] = ..., name: _Optional[str] = ..., stream_key: _Optional[str] = ..., url: _Optional[str] = ..., input_type: _Optional[_Union[IngressInput, str]] = ..., bypass_transcoding: bool = ..., audio: _Optional[_Union[IngressAudioOptions, _Mapping]] = ..., video: _Optional[_Union[IngressVideoOptions, _Mapping]] = ..., room_name: _Optional[str] = ..., participant_identity: _Optional[str] = ..., participant_name: _Optional[str] = ..., participant_metadata: _Optional[str] = ..., reusable: bool = ..., state: _Optional[_Union[IngressState, _Mapping]] = ...) -> None: ... + def __init__(self, ingress_id: _Optional[str] = ..., name: _Optional[str] = ..., stream_key: _Optional[str] = ..., url: _Optional[str] = ..., input_type: _Optional[_Union[IngressInput, str]] = ..., bypass_transcoding: bool = ..., enable_transcoding: bool = ..., audio: _Optional[_Union[IngressAudioOptions, _Mapping]] = ..., video: _Optional[_Union[IngressVideoOptions, _Mapping]] = ..., room_name: _Optional[str] = ..., participant_identity: _Optional[str] = ..., participant_name: _Optional[str] = ..., participant_metadata: _Optional[str] = ..., reusable: bool = ..., state: _Optional[_Union[IngressState, _Mapping]] = ...) -> None: ... class IngressState(_message.Message): - __slots__ = ("status", "error", "video", "audio", "room_id", "started_at", "ended_at", "updated_at", "resource_id", "tracks") + __slots__ = ["status", "error", "video", "audio", "room_id", "started_at", "ended_at", "updated_at", "resource_id", "tracks"] class Status(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] ENDPOINT_INACTIVE: _ClassVar[IngressState.Status] ENDPOINT_BUFFERING: _ClassVar[IngressState.Status] ENDPOINT_PUBLISHING: _ClassVar[IngressState.Status] @@ -185,7 +189,7 @@ class IngressState(_message.Message): def __init__(self, status: _Optional[_Union[IngressState.Status, str]] = ..., error: _Optional[str] = ..., video: _Optional[_Union[InputVideoState, _Mapping]] = ..., audio: _Optional[_Union[InputAudioState, _Mapping]] = ..., room_id: _Optional[str] = ..., started_at: _Optional[int] = ..., ended_at: _Optional[int] = ..., updated_at: _Optional[int] = ..., resource_id: _Optional[str] = ..., tracks: _Optional[_Iterable[_Union[_models.TrackInfo, _Mapping]]] = ...) -> None: ... class InputVideoState(_message.Message): - __slots__ = ("mime_type", "average_bitrate", "width", "height", "framerate") + __slots__ = ["mime_type", "average_bitrate", "width", "height", "framerate"] MIME_TYPE_FIELD_NUMBER: _ClassVar[int] AVERAGE_BITRATE_FIELD_NUMBER: _ClassVar[int] WIDTH_FIELD_NUMBER: _ClassVar[int] @@ -199,7 +203,7 @@ class InputVideoState(_message.Message): def __init__(self, mime_type: _Optional[str] = ..., average_bitrate: _Optional[int] = ..., width: _Optional[int] = ..., height: _Optional[int] = ..., framerate: _Optional[float] = ...) -> None: ... class InputAudioState(_message.Message): - __slots__ = ("mime_type", "average_bitrate", "channels", "sample_rate") + __slots__ = ["mime_type", "average_bitrate", "channels", "sample_rate"] MIME_TYPE_FIELD_NUMBER: _ClassVar[int] AVERAGE_BITRATE_FIELD_NUMBER: _ClassVar[int] CHANNELS_FIELD_NUMBER: _ClassVar[int] @@ -211,7 +215,7 @@ class InputAudioState(_message.Message): def __init__(self, mime_type: _Optional[str] = ..., average_bitrate: _Optional[int] = ..., channels: _Optional[int] = ..., sample_rate: _Optional[int] = ...) -> None: ... class UpdateIngressRequest(_message.Message): - __slots__ = ("ingress_id", "name", "room_name", "participant_identity", "participant_name", "participant_metadata", "bypass_transcoding", "audio", "video") + __slots__ = ["ingress_id", "name", "room_name", "participant_identity", "participant_name", "participant_metadata", "bypass_transcoding", "enable_transcoding", "audio", "video"] INGRESS_ID_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] ROOM_NAME_FIELD_NUMBER: _ClassVar[int] @@ -219,6 +223,7 @@ class UpdateIngressRequest(_message.Message): PARTICIPANT_NAME_FIELD_NUMBER: _ClassVar[int] PARTICIPANT_METADATA_FIELD_NUMBER: _ClassVar[int] BYPASS_TRANSCODING_FIELD_NUMBER: _ClassVar[int] + ENABLE_TRANSCODING_FIELD_NUMBER: _ClassVar[int] AUDIO_FIELD_NUMBER: _ClassVar[int] VIDEO_FIELD_NUMBER: _ClassVar[int] ingress_id: str @@ -228,12 +233,13 @@ class UpdateIngressRequest(_message.Message): participant_name: str participant_metadata: str bypass_transcoding: bool + enable_transcoding: bool audio: IngressAudioOptions video: IngressVideoOptions - def __init__(self, ingress_id: _Optional[str] = ..., name: _Optional[str] = ..., room_name: _Optional[str] = ..., participant_identity: _Optional[str] = ..., participant_name: _Optional[str] = ..., participant_metadata: _Optional[str] = ..., bypass_transcoding: bool = ..., audio: _Optional[_Union[IngressAudioOptions, _Mapping]] = ..., video: _Optional[_Union[IngressVideoOptions, _Mapping]] = ...) -> None: ... + def __init__(self, ingress_id: _Optional[str] = ..., name: _Optional[str] = ..., room_name: _Optional[str] = ..., participant_identity: _Optional[str] = ..., participant_name: _Optional[str] = ..., participant_metadata: _Optional[str] = ..., bypass_transcoding: bool = ..., enable_transcoding: bool = ..., audio: _Optional[_Union[IngressAudioOptions, _Mapping]] = ..., video: _Optional[_Union[IngressVideoOptions, _Mapping]] = ...) -> None: ... class ListIngressRequest(_message.Message): - __slots__ = ("room_name", "ingress_id") + __slots__ = ["room_name", "ingress_id"] ROOM_NAME_FIELD_NUMBER: _ClassVar[int] INGRESS_ID_FIELD_NUMBER: _ClassVar[int] room_name: str @@ -241,13 +247,13 @@ class ListIngressRequest(_message.Message): def __init__(self, room_name: _Optional[str] = ..., ingress_id: _Optional[str] = ...) -> None: ... class ListIngressResponse(_message.Message): - __slots__ = ("items",) + __slots__ = ["items"] ITEMS_FIELD_NUMBER: _ClassVar[int] items: _containers.RepeatedCompositeFieldContainer[IngressInfo] def __init__(self, items: _Optional[_Iterable[_Union[IngressInfo, _Mapping]]] = ...) -> None: ... class DeleteIngressRequest(_message.Message): - __slots__ = ("ingress_id",) + __slots__ = ["ingress_id"] INGRESS_ID_FIELD_NUMBER: _ClassVar[int] ingress_id: str def __init__(self, ingress_id: _Optional[str] = ...) -> None: ... diff --git a/livekit-protocol/livekit/protocol/models.py b/livekit-protocol/livekit/protocol/models.py index 7b7b98cf..a9964aa9 100644 --- a/livekit-protocol/livekit/protocol/models.py +++ b/livekit-protocol/livekit/protocol/models.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_models.proto -# Protobuf Python Version: 4.25.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -15,52 +14,59 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14livekit_models.proto\x12\x07livekit\x1a\x1fgoogle/protobuf/timestamp.proto\"\xc9\x02\n\x04Room\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x15\n\rempty_timeout\x18\x03 \x01(\r\x12\x19\n\x11\x64\x65parture_timeout\x18\x0e \x01(\r\x12\x18\n\x10max_participants\x18\x04 \x01(\r\x12\x15\n\rcreation_time\x18\x05 \x01(\x03\x12\x15\n\rturn_password\x18\x06 \x01(\t\x12&\n\x0e\x65nabled_codecs\x18\x07 \x03(\x0b\x32\x0e.livekit.Codec\x12\x10\n\x08metadata\x18\x08 \x01(\t\x12\x18\n\x10num_participants\x18\t \x01(\r\x12\x16\n\x0enum_publishers\x18\x0b \x01(\r\x12\x18\n\x10\x61\x63tive_recording\x18\n \x01(\x08\x12&\n\x07version\x18\r \x01(\x0b\x32\x15.livekit.TimedVersion\"(\n\x05\x43odec\x12\x0c\n\x04mime\x18\x01 \x01(\t\x12\x11\n\tfmtp_line\x18\x02 \x01(\t\"9\n\x0cPlayoutDelay\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0b\n\x03min\x18\x02 \x01(\r\x12\x0b\n\x03max\x18\x03 \x01(\r\"\xde\x01\n\x15ParticipantPermission\x12\x15\n\rcan_subscribe\x18\x01 \x01(\x08\x12\x13\n\x0b\x63\x61n_publish\x18\x02 \x01(\x08\x12\x18\n\x10\x63\x61n_publish_data\x18\x03 \x01(\x08\x12\x31\n\x13\x63\x61n_publish_sources\x18\t \x03(\x0e\x32\x14.livekit.TrackSource\x12\x0e\n\x06hidden\x18\x07 \x01(\x08\x12\x10\n\x08recorder\x18\x08 \x01(\x08\x12\x1b\n\x13\x63\x61n_update_metadata\x18\n \x01(\x08\x12\r\n\x05\x61gent\x18\x0b \x01(\x08\"\xd1\x03\n\x0fParticipantInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12-\n\x05state\x18\x03 \x01(\x0e\x32\x1e.livekit.ParticipantInfo.State\x12\"\n\x06tracks\x18\x04 \x03(\x0b\x32\x12.livekit.TrackInfo\x12\x10\n\x08metadata\x18\x05 \x01(\t\x12\x11\n\tjoined_at\x18\x06 \x01(\x03\x12\x0c\n\x04name\x18\t \x01(\t\x12\x0f\n\x07version\x18\n \x01(\r\x12\x32\n\npermission\x18\x0b \x01(\x0b\x32\x1e.livekit.ParticipantPermission\x12\x0e\n\x06region\x18\x0c \x01(\t\x12\x14\n\x0cis_publisher\x18\r \x01(\x08\x12+\n\x04kind\x18\x0e \x01(\x0e\x32\x1d.livekit.ParticipantInfo.Kind\">\n\x05State\x12\x0b\n\x07JOINING\x10\x00\x12\n\n\x06JOINED\x10\x01\x12\n\n\x06\x41\x43TIVE\x10\x02\x12\x10\n\x0c\x44ISCONNECTED\x10\x03\"A\n\x04Kind\x12\x0c\n\x08STANDARD\x10\x00\x12\x0b\n\x07INGRESS\x10\x01\x12\n\n\x06\x45GRESS\x10\x02\x12\x07\n\x03SIP\x10\x03\x12\t\n\x05\x41GENT\x10\x04\"3\n\nEncryption\"%\n\x04Type\x12\x08\n\x04NONE\x10\x00\x12\x07\n\x03GCM\x10\x01\x12\n\n\x06\x43USTOM\x10\x02\"f\n\x12SimulcastCodecInfo\x12\x11\n\tmime_type\x18\x01 \x01(\t\x12\x0b\n\x03mid\x18\x02 \x01(\t\x12\x0b\n\x03\x63id\x18\x03 \x01(\t\x12#\n\x06layers\x18\x04 \x03(\x0b\x32\x13.livekit.VideoLayer\"\xc1\x03\n\tTrackInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12 \n\x04type\x18\x02 \x01(\x0e\x32\x12.livekit.TrackType\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\r\n\x05muted\x18\x04 \x01(\x08\x12\r\n\x05width\x18\x05 \x01(\r\x12\x0e\n\x06height\x18\x06 \x01(\r\x12\x11\n\tsimulcast\x18\x07 \x01(\x08\x12\x13\n\x0b\x64isable_dtx\x18\x08 \x01(\x08\x12$\n\x06source\x18\t \x01(\x0e\x32\x14.livekit.TrackSource\x12#\n\x06layers\x18\n \x03(\x0b\x32\x13.livekit.VideoLayer\x12\x11\n\tmime_type\x18\x0b \x01(\t\x12\x0b\n\x03mid\x18\x0c \x01(\t\x12+\n\x06\x63odecs\x18\r \x03(\x0b\x32\x1b.livekit.SimulcastCodecInfo\x12\x0e\n\x06stereo\x18\x0e \x01(\x08\x12\x13\n\x0b\x64isable_red\x18\x0f \x01(\x08\x12,\n\nencryption\x18\x10 \x01(\x0e\x32\x18.livekit.Encryption.Type\x12\x0e\n\x06stream\x18\x11 \x01(\t\x12&\n\x07version\x18\x12 \x01(\x0b\x32\x15.livekit.TimedVersion\"r\n\nVideoLayer\x12&\n\x07quality\x18\x01 \x01(\x0e\x32\x15.livekit.VideoQuality\x12\r\n\x05width\x18\x02 \x01(\r\x12\x0e\n\x06height\x18\x03 \x01(\r\x12\x0f\n\x07\x62itrate\x18\x04 \x01(\r\x12\x0c\n\x04ssrc\x18\x05 \x01(\r\"\xd1\x02\n\nDataPacket\x12*\n\x04kind\x18\x01 \x01(\x0e\x32\x18.livekit.DataPacket.KindB\x02\x18\x01\x12\x1c\n\x14participant_identity\x18\x04 \x01(\t\x12\x1e\n\x16\x64\x65stination_identities\x18\x05 \x03(\t\x12#\n\x04user\x18\x02 \x01(\x0b\x32\x13.livekit.UserPacketH\x00\x12\x33\n\x07speaker\x18\x03 \x01(\x0b\x32\x1c.livekit.ActiveSpeakerUpdateB\x02\x18\x01H\x00\x12$\n\x08sip_dtmf\x18\x06 \x01(\x0b\x32\x10.livekit.SipDTMFH\x00\x12/\n\rtranscription\x18\x07 \x01(\x0b\x32\x16.livekit.TranscriptionH\x00\"\x1f\n\x04Kind\x12\x0c\n\x08RELIABLE\x10\x00\x12\t\n\x05LOSSY\x10\x01\x42\x07\n\x05value\"=\n\x13\x41\x63tiveSpeakerUpdate\x12&\n\x08speakers\x18\x01 \x03(\x0b\x32\x14.livekit.SpeakerInfo\"9\n\x0bSpeakerInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\r\n\x05level\x18\x02 \x01(\x02\x12\x0e\n\x06\x61\x63tive\x18\x03 \x01(\x08\"\xa0\x02\n\nUserPacket\x12\x1b\n\x0fparticipant_sid\x18\x01 \x01(\tB\x02\x18\x01\x12 \n\x14participant_identity\x18\x05 \x01(\tB\x02\x18\x01\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\x12\x1c\n\x10\x64\x65stination_sids\x18\x03 \x03(\tB\x02\x18\x01\x12\"\n\x16\x64\x65stination_identities\x18\x06 \x03(\tB\x02\x18\x01\x12\x12\n\x05topic\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x0f\n\x02id\x18\x08 \x01(\tH\x01\x88\x01\x01\x12\x17\n\nstart_time\x18\t \x01(\x04H\x02\x88\x01\x01\x12\x15\n\x08\x65nd_time\x18\n \x01(\x04H\x03\x88\x01\x01\x42\x08\n\x06_topicB\x05\n\x03_idB\r\n\x0b_start_timeB\x0b\n\t_end_time\"&\n\x07SipDTMF\x12\x0c\n\x04\x63ode\x18\x03 \x01(\r\x12\r\n\x05\x64igit\x18\x04 \x01(\t\"\x82\x01\n\rTranscription\x12\x1c\n\x14participant_identity\x18\x02 \x01(\t\x12\x10\n\x08track_id\x18\x03 \x01(\t\x12/\n\x08segments\x18\x04 \x03(\x0b\x32\x1d.livekit.TranscriptionSegment\x12\x10\n\x08language\x18\x05 \x01(\t\"e\n\x14TranscriptionSegment\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x12\n\nstart_time\x18\x03 \x01(\x04\x12\x10\n\x08\x65nd_time\x18\x04 \x01(\x04\x12\r\n\x05\x66inal\x18\x05 \x01(\x08\"@\n\x11ParticipantTracks\x12\x17\n\x0fparticipant_sid\x18\x01 \x01(\t\x12\x12\n\ntrack_sids\x18\x02 \x03(\t\"\xce\x01\n\nServerInfo\x12,\n\x07\x65\x64ition\x18\x01 \x01(\x0e\x32\x1b.livekit.ServerInfo.Edition\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x10\n\x08protocol\x18\x03 \x01(\x05\x12\x0e\n\x06region\x18\x04 \x01(\t\x12\x0f\n\x07node_id\x18\x05 \x01(\t\x12\x12\n\ndebug_info\x18\x06 \x01(\t\x12\x16\n\x0e\x61gent_protocol\x18\x07 \x01(\x05\"\"\n\x07\x45\x64ition\x12\x0c\n\x08Standard\x10\x00\x12\t\n\x05\x43loud\x10\x01\"\xdd\x02\n\nClientInfo\x12$\n\x03sdk\x18\x01 \x01(\x0e\x32\x17.livekit.ClientInfo.SDK\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x10\n\x08protocol\x18\x03 \x01(\x05\x12\n\n\x02os\x18\x04 \x01(\t\x12\x12\n\nos_version\x18\x05 \x01(\t\x12\x14\n\x0c\x64\x65vice_model\x18\x06 \x01(\t\x12\x0f\n\x07\x62rowser\x18\x07 \x01(\t\x12\x17\n\x0f\x62rowser_version\x18\x08 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\t \x01(\t\x12\x0f\n\x07network\x18\n \x01(\t\"\x83\x01\n\x03SDK\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x06\n\x02JS\x10\x01\x12\t\n\x05SWIFT\x10\x02\x12\x0b\n\x07\x41NDROID\x10\x03\x12\x0b\n\x07\x46LUTTER\x10\x04\x12\x06\n\x02GO\x10\x05\x12\t\n\x05UNITY\x10\x06\x12\x10\n\x0cREACT_NATIVE\x10\x07\x12\x08\n\x04RUST\x10\x08\x12\n\n\x06PYTHON\x10\t\x12\x07\n\x03\x43PP\x10\n\"\x8c\x02\n\x13\x43lientConfiguration\x12*\n\x05video\x18\x01 \x01(\x0b\x32\x1b.livekit.VideoConfiguration\x12+\n\x06screen\x18\x02 \x01(\x0b\x32\x1b.livekit.VideoConfiguration\x12\x37\n\x11resume_connection\x18\x03 \x01(\x0e\x32\x1c.livekit.ClientConfigSetting\x12\x30\n\x0f\x64isabled_codecs\x18\x04 \x01(\x0b\x32\x17.livekit.DisabledCodecs\x12\x31\n\x0b\x66orce_relay\x18\x05 \x01(\x0e\x32\x1c.livekit.ClientConfigSetting\"L\n\x12VideoConfiguration\x12\x36\n\x10hardware_encoder\x18\x01 \x01(\x0e\x32\x1c.livekit.ClientConfigSetting\"Q\n\x0e\x44isabledCodecs\x12\x1e\n\x06\x63odecs\x18\x01 \x03(\x0b\x32\x0e.livekit.Codec\x12\x1f\n\x07publish\x18\x02 \x03(\x0b\x32\x0e.livekit.Codec\"\x80\x02\n\x08RTPDrift\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08\x64uration\x18\x03 \x01(\x01\x12\x17\n\x0fstart_timestamp\x18\x04 \x01(\x04\x12\x15\n\rend_timestamp\x18\x05 \x01(\x04\x12\x17\n\x0frtp_clock_ticks\x18\x06 \x01(\x04\x12\x15\n\rdrift_samples\x18\x07 \x01(\x03\x12\x10\n\x08\x64rift_ms\x18\x08 \x01(\x01\x12\x12\n\nclock_rate\x18\t \x01(\x01\"\xa0\n\n\x08RTPStats\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08\x64uration\x18\x03 \x01(\x01\x12\x0f\n\x07packets\x18\x04 \x01(\r\x12\x13\n\x0bpacket_rate\x18\x05 \x01(\x01\x12\r\n\x05\x62ytes\x18\x06 \x01(\x04\x12\x14\n\x0cheader_bytes\x18\' \x01(\x04\x12\x0f\n\x07\x62itrate\x18\x07 \x01(\x01\x12\x14\n\x0cpackets_lost\x18\x08 \x01(\r\x12\x18\n\x10packet_loss_rate\x18\t \x01(\x01\x12\x1e\n\x16packet_loss_percentage\x18\n \x01(\x02\x12\x19\n\x11packets_duplicate\x18\x0b \x01(\r\x12\x1d\n\x15packet_duplicate_rate\x18\x0c \x01(\x01\x12\x17\n\x0f\x62ytes_duplicate\x18\r \x01(\x04\x12\x1e\n\x16header_bytes_duplicate\x18( \x01(\x04\x12\x19\n\x11\x62itrate_duplicate\x18\x0e \x01(\x01\x12\x17\n\x0fpackets_padding\x18\x0f \x01(\r\x12\x1b\n\x13packet_padding_rate\x18\x10 \x01(\x01\x12\x15\n\rbytes_padding\x18\x11 \x01(\x04\x12\x1c\n\x14header_bytes_padding\x18) \x01(\x04\x12\x17\n\x0f\x62itrate_padding\x18\x12 \x01(\x01\x12\x1c\n\x14packets_out_of_order\x18\x13 \x01(\r\x12\x0e\n\x06\x66rames\x18\x14 \x01(\r\x12\x12\n\nframe_rate\x18\x15 \x01(\x01\x12\x16\n\x0ejitter_current\x18\x16 \x01(\x01\x12\x12\n\njitter_max\x18\x17 \x01(\x01\x12:\n\rgap_histogram\x18\x18 \x03(\x0b\x32#.livekit.RTPStats.GapHistogramEntry\x12\r\n\x05nacks\x18\x19 \x01(\r\x12\x11\n\tnack_acks\x18% \x01(\r\x12\x13\n\x0bnack_misses\x18\x1a \x01(\r\x12\x15\n\rnack_repeated\x18& \x01(\r\x12\x0c\n\x04plis\x18\x1b \x01(\r\x12,\n\x08last_pli\x18\x1c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04\x66irs\x18\x1d \x01(\r\x12,\n\x08last_fir\x18\x1e \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0brtt_current\x18\x1f \x01(\r\x12\x0f\n\x07rtt_max\x18 \x01(\r\x12\x12\n\nkey_frames\x18! \x01(\r\x12\x32\n\x0elast_key_frame\x18\" \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x17\n\x0flayer_lock_plis\x18# \x01(\r\x12\x37\n\x13last_layer_lock_pli\x18$ \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\x0cpacket_drift\x18, \x01(\x0b\x32\x11.livekit.RTPDrift\x12\'\n\x0creport_drift\x18- \x01(\x0b\x32\x11.livekit.RTPDrift\x12/\n\x14rebased_report_drift\x18. \x01(\x0b\x32\x11.livekit.RTPDrift\x1a\x33\n\x11GapHistogramEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\"1\n\x0cTimedVersion\x12\x12\n\nunix_micro\x18\x01 \x01(\x03\x12\r\n\x05ticks\x18\x02 \x01(\x05*/\n\nAudioCodec\x12\x0e\n\nDEFAULT_AC\x10\x00\x12\x08\n\x04OPUS\x10\x01\x12\x07\n\x03\x41\x41\x43\x10\x02*V\n\nVideoCodec\x12\x0e\n\nDEFAULT_VC\x10\x00\x12\x11\n\rH264_BASELINE\x10\x01\x12\r\n\tH264_MAIN\x10\x02\x12\r\n\tH264_HIGH\x10\x03\x12\x07\n\x03VP8\x10\x04*)\n\nImageCodec\x12\x0e\n\nIC_DEFAULT\x10\x00\x12\x0b\n\x07IC_JPEG\x10\x01*+\n\tTrackType\x12\t\n\x05\x41UDIO\x10\x00\x12\t\n\x05VIDEO\x10\x01\x12\x08\n\x04\x44\x41TA\x10\x02*`\n\x0bTrackSource\x12\x0b\n\x07UNKNOWN\x10\x00\x12\n\n\x06\x43\x41MERA\x10\x01\x12\x0e\n\nMICROPHONE\x10\x02\x12\x10\n\x0cSCREEN_SHARE\x10\x03\x12\x16\n\x12SCREEN_SHARE_AUDIO\x10\x04*6\n\x0cVideoQuality\x12\x07\n\x03LOW\x10\x00\x12\n\n\x06MEDIUM\x10\x01\x12\x08\n\x04HIGH\x10\x02\x12\x07\n\x03OFF\x10\x03*@\n\x11\x43onnectionQuality\x12\x08\n\x04POOR\x10\x00\x12\x08\n\x04GOOD\x10\x01\x12\r\n\tEXCELLENT\x10\x02\x12\x08\n\x04LOST\x10\x03*;\n\x13\x43lientConfigSetting\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x44ISABLED\x10\x01\x12\x0b\n\x07\x45NABLED\x10\x02*\xdb\x01\n\x10\x44isconnectReason\x12\x12\n\x0eUNKNOWN_REASON\x10\x00\x12\x14\n\x10\x43LIENT_INITIATED\x10\x01\x12\x16\n\x12\x44UPLICATE_IDENTITY\x10\x02\x12\x13\n\x0fSERVER_SHUTDOWN\x10\x03\x12\x17\n\x13PARTICIPANT_REMOVED\x10\x04\x12\x10\n\x0cROOM_DELETED\x10\x05\x12\x12\n\x0eSTATE_MISMATCH\x10\x06\x12\x10\n\x0cJOIN_FAILURE\x10\x07\x12\r\n\tMIGRATION\x10\x08\x12\x10\n\x0cSIGNAL_CLOSE\x10\t*\x89\x01\n\x0fReconnectReason\x12\x0e\n\nRR_UNKNOWN\x10\x00\x12\x1a\n\x16RR_SIGNAL_DISCONNECTED\x10\x01\x12\x17\n\x13RR_PUBLISHER_FAILED\x10\x02\x12\x18\n\x14RR_SUBSCRIBER_FAILED\x10\x03\x12\x17\n\x13RR_SWITCH_CANDIDATE\x10\x04*T\n\x11SubscriptionError\x12\x0e\n\nSE_UNKNOWN\x10\x00\x12\x18\n\x14SE_CODEC_UNSUPPORTED\x10\x01\x12\x15\n\x11SE_TRACK_NOTFOUND\x10\x02*\xa3\x01\n\x11\x41udioTrackFeature\x12\r\n\tTF_STEREO\x10\x00\x12\r\n\tTF_NO_DTX\x10\x01\x12\x18\n\x14TF_AUTO_GAIN_CONTROL\x10\x02\x12\x18\n\x14TF_ECHO_CANCELLATION\x10\x03\x12\x18\n\x14TF_NOISE_SUPPRESSION\x10\x04\x12\"\n\x1eTF_ENHANCED_NOISE_CANCELLATION\x10\x05\x42\x46Z#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14livekit_models.proto\x12\x07livekit\x1a\x1fgoogle/protobuf/timestamp.proto\"\xc9\x02\n\x04Room\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x15\n\rempty_timeout\x18\x03 \x01(\r\x12\x19\n\x11\x64\x65parture_timeout\x18\x0e \x01(\r\x12\x18\n\x10max_participants\x18\x04 \x01(\r\x12\x15\n\rcreation_time\x18\x05 \x01(\x03\x12\x15\n\rturn_password\x18\x06 \x01(\t\x12&\n\x0e\x65nabled_codecs\x18\x07 \x03(\x0b\x32\x0e.livekit.Codec\x12\x10\n\x08metadata\x18\x08 \x01(\t\x12\x18\n\x10num_participants\x18\t \x01(\r\x12\x16\n\x0enum_publishers\x18\x0b \x01(\r\x12\x18\n\x10\x61\x63tive_recording\x18\n \x01(\x08\x12&\n\x07version\x18\r \x01(\x0b\x32\x15.livekit.TimedVersion\"(\n\x05\x43odec\x12\x0c\n\x04mime\x18\x01 \x01(\t\x12\x11\n\tfmtp_line\x18\x02 \x01(\t\"9\n\x0cPlayoutDelay\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0b\n\x03min\x18\x02 \x01(\r\x12\x0b\n\x03max\x18\x03 \x01(\r\"\xe6\x01\n\x15ParticipantPermission\x12\x15\n\rcan_subscribe\x18\x01 \x01(\x08\x12\x13\n\x0b\x63\x61n_publish\x18\x02 \x01(\x08\x12\x18\n\x10\x63\x61n_publish_data\x18\x03 \x01(\x08\x12\x31\n\x13\x63\x61n_publish_sources\x18\t \x03(\x0e\x32\x14.livekit.TrackSource\x12\x0e\n\x06hidden\x18\x07 \x01(\x08\x12\x14\n\x08recorder\x18\x08 \x01(\x08\x42\x02\x18\x01\x12\x1b\n\x13\x63\x61n_update_metadata\x18\n \x01(\x08\x12\x11\n\x05\x61gent\x18\x0b \x01(\x08\x42\x02\x18\x01\"\xc2\x04\n\x0fParticipantInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12-\n\x05state\x18\x03 \x01(\x0e\x32\x1e.livekit.ParticipantInfo.State\x12\"\n\x06tracks\x18\x04 \x03(\x0b\x32\x12.livekit.TrackInfo\x12\x10\n\x08metadata\x18\x05 \x01(\t\x12\x11\n\tjoined_at\x18\x06 \x01(\x03\x12\x0c\n\x04name\x18\t \x01(\t\x12\x0f\n\x07version\x18\n \x01(\r\x12\x32\n\npermission\x18\x0b \x01(\x0b\x32\x1e.livekit.ParticipantPermission\x12\x0e\n\x06region\x18\x0c \x01(\t\x12\x14\n\x0cis_publisher\x18\r \x01(\x08\x12+\n\x04kind\x18\x0e \x01(\x0e\x32\x1d.livekit.ParticipantInfo.Kind\x12<\n\nattributes\x18\x0f \x03(\x0b\x32(.livekit.ParticipantInfo.AttributesEntry\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\">\n\x05State\x12\x0b\n\x07JOINING\x10\x00\x12\n\n\x06JOINED\x10\x01\x12\n\n\x06\x41\x43TIVE\x10\x02\x12\x10\n\x0c\x44ISCONNECTED\x10\x03\"A\n\x04Kind\x12\x0c\n\x08STANDARD\x10\x00\x12\x0b\n\x07INGRESS\x10\x01\x12\n\n\x06\x45GRESS\x10\x02\x12\x07\n\x03SIP\x10\x03\x12\t\n\x05\x41GENT\x10\x04\"3\n\nEncryption\"%\n\x04Type\x12\x08\n\x04NONE\x10\x00\x12\x07\n\x03GCM\x10\x01\x12\n\n\x06\x43USTOM\x10\x02\"f\n\x12SimulcastCodecInfo\x12\x11\n\tmime_type\x18\x01 \x01(\t\x12\x0b\n\x03mid\x18\x02 \x01(\t\x12\x0b\n\x03\x63id\x18\x03 \x01(\t\x12#\n\x06layers\x18\x04 \x03(\x0b\x32\x13.livekit.VideoLayer\"\xf5\x03\n\tTrackInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12 \n\x04type\x18\x02 \x01(\x0e\x32\x12.livekit.TrackType\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\r\n\x05muted\x18\x04 \x01(\x08\x12\r\n\x05width\x18\x05 \x01(\r\x12\x0e\n\x06height\x18\x06 \x01(\r\x12\x11\n\tsimulcast\x18\x07 \x01(\x08\x12\x13\n\x0b\x64isable_dtx\x18\x08 \x01(\x08\x12$\n\x06source\x18\t \x01(\x0e\x32\x14.livekit.TrackSource\x12#\n\x06layers\x18\n \x03(\x0b\x32\x13.livekit.VideoLayer\x12\x11\n\tmime_type\x18\x0b \x01(\t\x12\x0b\n\x03mid\x18\x0c \x01(\t\x12+\n\x06\x63odecs\x18\r \x03(\x0b\x32\x1b.livekit.SimulcastCodecInfo\x12\x0e\n\x06stereo\x18\x0e \x01(\x08\x12\x13\n\x0b\x64isable_red\x18\x0f \x01(\x08\x12,\n\nencryption\x18\x10 \x01(\x0e\x32\x18.livekit.Encryption.Type\x12\x0e\n\x06stream\x18\x11 \x01(\t\x12&\n\x07version\x18\x12 \x01(\x0b\x32\x15.livekit.TimedVersion\x12\x32\n\x0e\x61udio_features\x18\x13 \x03(\x0e\x32\x1a.livekit.AudioTrackFeature\"r\n\nVideoLayer\x12&\n\x07quality\x18\x01 \x01(\x0e\x32\x15.livekit.VideoQuality\x12\r\n\x05width\x18\x02 \x01(\r\x12\x0e\n\x06height\x18\x03 \x01(\r\x12\x0f\n\x07\x62itrate\x18\x04 \x01(\r\x12\x0c\n\x04ssrc\x18\x05 \x01(\r\"\xd1\x02\n\nDataPacket\x12*\n\x04kind\x18\x01 \x01(\x0e\x32\x18.livekit.DataPacket.KindB\x02\x18\x01\x12\x1c\n\x14participant_identity\x18\x04 \x01(\t\x12\x1e\n\x16\x64\x65stination_identities\x18\x05 \x03(\t\x12#\n\x04user\x18\x02 \x01(\x0b\x32\x13.livekit.UserPacketH\x00\x12\x33\n\x07speaker\x18\x03 \x01(\x0b\x32\x1c.livekit.ActiveSpeakerUpdateB\x02\x18\x01H\x00\x12$\n\x08sip_dtmf\x18\x06 \x01(\x0b\x32\x10.livekit.SipDTMFH\x00\x12/\n\rtranscription\x18\x07 \x01(\x0b\x32\x16.livekit.TranscriptionH\x00\"\x1f\n\x04Kind\x12\x0c\n\x08RELIABLE\x10\x00\x12\t\n\x05LOSSY\x10\x01\x42\x07\n\x05value\"=\n\x13\x41\x63tiveSpeakerUpdate\x12&\n\x08speakers\x18\x01 \x03(\x0b\x32\x14.livekit.SpeakerInfo\"9\n\x0bSpeakerInfo\x12\x0b\n\x03sid\x18\x01 \x01(\t\x12\r\n\x05level\x18\x02 \x01(\x02\x12\x0e\n\x06\x61\x63tive\x18\x03 \x01(\x08\"\xa0\x02\n\nUserPacket\x12\x1b\n\x0fparticipant_sid\x18\x01 \x01(\tB\x02\x18\x01\x12 \n\x14participant_identity\x18\x05 \x01(\tB\x02\x18\x01\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\x12\x1c\n\x10\x64\x65stination_sids\x18\x03 \x03(\tB\x02\x18\x01\x12\"\n\x16\x64\x65stination_identities\x18\x06 \x03(\tB\x02\x18\x01\x12\x12\n\x05topic\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x0f\n\x02id\x18\x08 \x01(\tH\x01\x88\x01\x01\x12\x17\n\nstart_time\x18\t \x01(\x04H\x02\x88\x01\x01\x12\x15\n\x08\x65nd_time\x18\n \x01(\x04H\x03\x88\x01\x01\x42\x08\n\x06_topicB\x05\n\x03_idB\r\n\x0b_start_timeB\x0b\n\t_end_time\"&\n\x07SipDTMF\x12\x0c\n\x04\x63ode\x18\x03 \x01(\r\x12\r\n\x05\x64igit\x18\x04 \x01(\t\"|\n\rTranscription\x12(\n transcribed_participant_identity\x18\x02 \x01(\t\x12\x10\n\x08track_id\x18\x03 \x01(\t\x12/\n\x08segments\x18\x04 \x03(\x0b\x32\x1d.livekit.TranscriptionSegment\"w\n\x14TranscriptionSegment\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x12\n\nstart_time\x18\x03 \x01(\x04\x12\x10\n\x08\x65nd_time\x18\x04 \x01(\x04\x12\r\n\x05\x66inal\x18\x05 \x01(\x08\x12\x10\n\x08language\x18\x06 \x01(\t\"@\n\x11ParticipantTracks\x12\x17\n\x0fparticipant_sid\x18\x01 \x01(\t\x12\x12\n\ntrack_sids\x18\x02 \x03(\t\"\xce\x01\n\nServerInfo\x12,\n\x07\x65\x64ition\x18\x01 \x01(\x0e\x32\x1b.livekit.ServerInfo.Edition\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x10\n\x08protocol\x18\x03 \x01(\x05\x12\x0e\n\x06region\x18\x04 \x01(\t\x12\x0f\n\x07node_id\x18\x05 \x01(\t\x12\x12\n\ndebug_info\x18\x06 \x01(\t\x12\x16\n\x0e\x61gent_protocol\x18\x07 \x01(\x05\"\"\n\x07\x45\x64ition\x12\x0c\n\x08Standard\x10\x00\x12\t\n\x05\x43loud\x10\x01\"\xdd\x02\n\nClientInfo\x12$\n\x03sdk\x18\x01 \x01(\x0e\x32\x17.livekit.ClientInfo.SDK\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x10\n\x08protocol\x18\x03 \x01(\x05\x12\n\n\x02os\x18\x04 \x01(\t\x12\x12\n\nos_version\x18\x05 \x01(\t\x12\x14\n\x0c\x64\x65vice_model\x18\x06 \x01(\t\x12\x0f\n\x07\x62rowser\x18\x07 \x01(\t\x12\x17\n\x0f\x62rowser_version\x18\x08 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\t \x01(\t\x12\x0f\n\x07network\x18\n \x01(\t\"\x83\x01\n\x03SDK\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x06\n\x02JS\x10\x01\x12\t\n\x05SWIFT\x10\x02\x12\x0b\n\x07\x41NDROID\x10\x03\x12\x0b\n\x07\x46LUTTER\x10\x04\x12\x06\n\x02GO\x10\x05\x12\t\n\x05UNITY\x10\x06\x12\x10\n\x0cREACT_NATIVE\x10\x07\x12\x08\n\x04RUST\x10\x08\x12\n\n\x06PYTHON\x10\t\x12\x07\n\x03\x43PP\x10\n\"\x8c\x02\n\x13\x43lientConfiguration\x12*\n\x05video\x18\x01 \x01(\x0b\x32\x1b.livekit.VideoConfiguration\x12+\n\x06screen\x18\x02 \x01(\x0b\x32\x1b.livekit.VideoConfiguration\x12\x37\n\x11resume_connection\x18\x03 \x01(\x0e\x32\x1c.livekit.ClientConfigSetting\x12\x30\n\x0f\x64isabled_codecs\x18\x04 \x01(\x0b\x32\x17.livekit.DisabledCodecs\x12\x31\n\x0b\x66orce_relay\x18\x05 \x01(\x0e\x32\x1c.livekit.ClientConfigSetting\"L\n\x12VideoConfiguration\x12\x36\n\x10hardware_encoder\x18\x01 \x01(\x0e\x32\x1c.livekit.ClientConfigSetting\"Q\n\x0e\x44isabledCodecs\x12\x1e\n\x06\x63odecs\x18\x01 \x03(\x0b\x32\x0e.livekit.Codec\x12\x1f\n\x07publish\x18\x02 \x03(\x0b\x32\x0e.livekit.Codec\"\x80\x02\n\x08RTPDrift\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08\x64uration\x18\x03 \x01(\x01\x12\x17\n\x0fstart_timestamp\x18\x04 \x01(\x04\x12\x15\n\rend_timestamp\x18\x05 \x01(\x04\x12\x17\n\x0frtp_clock_ticks\x18\x06 \x01(\x04\x12\x15\n\rdrift_samples\x18\x07 \x01(\x03\x12\x10\n\x08\x64rift_ms\x18\x08 \x01(\x01\x12\x12\n\nclock_rate\x18\t \x01(\x01\"\xa0\n\n\x08RTPStats\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08\x64uration\x18\x03 \x01(\x01\x12\x0f\n\x07packets\x18\x04 \x01(\r\x12\x13\n\x0bpacket_rate\x18\x05 \x01(\x01\x12\r\n\x05\x62ytes\x18\x06 \x01(\x04\x12\x14\n\x0cheader_bytes\x18\' \x01(\x04\x12\x0f\n\x07\x62itrate\x18\x07 \x01(\x01\x12\x14\n\x0cpackets_lost\x18\x08 \x01(\r\x12\x18\n\x10packet_loss_rate\x18\t \x01(\x01\x12\x1e\n\x16packet_loss_percentage\x18\n \x01(\x02\x12\x19\n\x11packets_duplicate\x18\x0b \x01(\r\x12\x1d\n\x15packet_duplicate_rate\x18\x0c \x01(\x01\x12\x17\n\x0f\x62ytes_duplicate\x18\r \x01(\x04\x12\x1e\n\x16header_bytes_duplicate\x18( \x01(\x04\x12\x19\n\x11\x62itrate_duplicate\x18\x0e \x01(\x01\x12\x17\n\x0fpackets_padding\x18\x0f \x01(\r\x12\x1b\n\x13packet_padding_rate\x18\x10 \x01(\x01\x12\x15\n\rbytes_padding\x18\x11 \x01(\x04\x12\x1c\n\x14header_bytes_padding\x18) \x01(\x04\x12\x17\n\x0f\x62itrate_padding\x18\x12 \x01(\x01\x12\x1c\n\x14packets_out_of_order\x18\x13 \x01(\r\x12\x0e\n\x06\x66rames\x18\x14 \x01(\r\x12\x12\n\nframe_rate\x18\x15 \x01(\x01\x12\x16\n\x0ejitter_current\x18\x16 \x01(\x01\x12\x12\n\njitter_max\x18\x17 \x01(\x01\x12:\n\rgap_histogram\x18\x18 \x03(\x0b\x32#.livekit.RTPStats.GapHistogramEntry\x12\r\n\x05nacks\x18\x19 \x01(\r\x12\x11\n\tnack_acks\x18% \x01(\r\x12\x13\n\x0bnack_misses\x18\x1a \x01(\r\x12\x15\n\rnack_repeated\x18& \x01(\r\x12\x0c\n\x04plis\x18\x1b \x01(\r\x12,\n\x08last_pli\x18\x1c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0c\n\x04\x66irs\x18\x1d \x01(\r\x12,\n\x08last_fir\x18\x1e \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0brtt_current\x18\x1f \x01(\r\x12\x0f\n\x07rtt_max\x18 \x01(\r\x12\x12\n\nkey_frames\x18! \x01(\r\x12\x32\n\x0elast_key_frame\x18\" \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x17\n\x0flayer_lock_plis\x18# \x01(\r\x12\x37\n\x13last_layer_lock_pli\x18$ \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\x0cpacket_drift\x18, \x01(\x0b\x32\x11.livekit.RTPDrift\x12\'\n\x0creport_drift\x18- \x01(\x0b\x32\x11.livekit.RTPDrift\x12/\n\x14rebased_report_drift\x18. \x01(\x0b\x32\x11.livekit.RTPDrift\x1a\x33\n\x11GapHistogramEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\"1\n\x0cTimedVersion\x12\x12\n\nunix_micro\x18\x01 \x01(\x03\x12\r\n\x05ticks\x18\x02 \x01(\x05*/\n\nAudioCodec\x12\x0e\n\nDEFAULT_AC\x10\x00\x12\x08\n\x04OPUS\x10\x01\x12\x07\n\x03\x41\x41\x43\x10\x02*V\n\nVideoCodec\x12\x0e\n\nDEFAULT_VC\x10\x00\x12\x11\n\rH264_BASELINE\x10\x01\x12\r\n\tH264_MAIN\x10\x02\x12\r\n\tH264_HIGH\x10\x03\x12\x07\n\x03VP8\x10\x04*)\n\nImageCodec\x12\x0e\n\nIC_DEFAULT\x10\x00\x12\x0b\n\x07IC_JPEG\x10\x01*+\n\tTrackType\x12\t\n\x05\x41UDIO\x10\x00\x12\t\n\x05VIDEO\x10\x01\x12\x08\n\x04\x44\x41TA\x10\x02*`\n\x0bTrackSource\x12\x0b\n\x07UNKNOWN\x10\x00\x12\n\n\x06\x43\x41MERA\x10\x01\x12\x0e\n\nMICROPHONE\x10\x02\x12\x10\n\x0cSCREEN_SHARE\x10\x03\x12\x16\n\x12SCREEN_SHARE_AUDIO\x10\x04*6\n\x0cVideoQuality\x12\x07\n\x03LOW\x10\x00\x12\n\n\x06MEDIUM\x10\x01\x12\x08\n\x04HIGH\x10\x02\x12\x07\n\x03OFF\x10\x03*@\n\x11\x43onnectionQuality\x12\x08\n\x04POOR\x10\x00\x12\x08\n\x04GOOD\x10\x01\x12\r\n\tEXCELLENT\x10\x02\x12\x08\n\x04LOST\x10\x03*;\n\x13\x43lientConfigSetting\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x44ISABLED\x10\x01\x12\x0b\n\x07\x45NABLED\x10\x02*\xdb\x01\n\x10\x44isconnectReason\x12\x12\n\x0eUNKNOWN_REASON\x10\x00\x12\x14\n\x10\x43LIENT_INITIATED\x10\x01\x12\x16\n\x12\x44UPLICATE_IDENTITY\x10\x02\x12\x13\n\x0fSERVER_SHUTDOWN\x10\x03\x12\x17\n\x13PARTICIPANT_REMOVED\x10\x04\x12\x10\n\x0cROOM_DELETED\x10\x05\x12\x12\n\x0eSTATE_MISMATCH\x10\x06\x12\x10\n\x0cJOIN_FAILURE\x10\x07\x12\r\n\tMIGRATION\x10\x08\x12\x10\n\x0cSIGNAL_CLOSE\x10\t*\x89\x01\n\x0fReconnectReason\x12\x0e\n\nRR_UNKNOWN\x10\x00\x12\x1a\n\x16RR_SIGNAL_DISCONNECTED\x10\x01\x12\x17\n\x13RR_PUBLISHER_FAILED\x10\x02\x12\x18\n\x14RR_SUBSCRIBER_FAILED\x10\x03\x12\x17\n\x13RR_SWITCH_CANDIDATE\x10\x04*T\n\x11SubscriptionError\x12\x0e\n\nSE_UNKNOWN\x10\x00\x12\x18\n\x14SE_CODEC_UNSUPPORTED\x10\x01\x12\x15\n\x11SE_TRACK_NOTFOUND\x10\x02*\xa3\x01\n\x11\x41udioTrackFeature\x12\r\n\tTF_STEREO\x10\x00\x12\r\n\tTF_NO_DTX\x10\x01\x12\x18\n\x14TF_AUTO_GAIN_CONTROL\x10\x02\x12\x18\n\x14TF_ECHO_CANCELLATION\x10\x03\x12\x18\n\x14TF_NOISE_SUPPRESSION\x10\x04\x12\"\n\x1eTF_ENHANCED_NOISE_CANCELLATION\x10\x05\x42\x46Z#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'models', _globals) if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None - _globals['DESCRIPTOR']._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' - _globals['_DATAPACKET'].fields_by_name['kind']._options = None - _globals['_DATAPACKET'].fields_by_name['kind']._serialized_options = b'\030\001' - _globals['_DATAPACKET'].fields_by_name['speaker']._options = None - _globals['_DATAPACKET'].fields_by_name['speaker']._serialized_options = b'\030\001' - _globals['_USERPACKET'].fields_by_name['participant_sid']._options = None - _globals['_USERPACKET'].fields_by_name['participant_sid']._serialized_options = b'\030\001' - _globals['_USERPACKET'].fields_by_name['participant_identity']._options = None - _globals['_USERPACKET'].fields_by_name['participant_identity']._serialized_options = b'\030\001' - _globals['_USERPACKET'].fields_by_name['destination_sids']._options = None - _globals['_USERPACKET'].fields_by_name['destination_sids']._serialized_options = b'\030\001' - _globals['_USERPACKET'].fields_by_name['destination_identities']._options = None - _globals['_USERPACKET'].fields_by_name['destination_identities']._serialized_options = b'\030\001' - _globals['_RTPSTATS_GAPHISTOGRAMENTRY']._options = None - _globals['_RTPSTATS_GAPHISTOGRAMENTRY']._serialized_options = b'8\001' - _globals['_AUDIOCODEC']._serialized_start=5630 - _globals['_AUDIOCODEC']._serialized_end=5677 - _globals['_VIDEOCODEC']._serialized_start=5679 - _globals['_VIDEOCODEC']._serialized_end=5765 - _globals['_IMAGECODEC']._serialized_start=5767 - _globals['_IMAGECODEC']._serialized_end=5808 - _globals['_TRACKTYPE']._serialized_start=5810 - _globals['_TRACKTYPE']._serialized_end=5853 - _globals['_TRACKSOURCE']._serialized_start=5855 - _globals['_TRACKSOURCE']._serialized_end=5951 - _globals['_VIDEOQUALITY']._serialized_start=5953 - _globals['_VIDEOQUALITY']._serialized_end=6007 - _globals['_CONNECTIONQUALITY']._serialized_start=6009 - _globals['_CONNECTIONQUALITY']._serialized_end=6073 - _globals['_CLIENTCONFIGSETTING']._serialized_start=6075 - _globals['_CLIENTCONFIGSETTING']._serialized_end=6134 - _globals['_DISCONNECTREASON']._serialized_start=6137 - _globals['_DISCONNECTREASON']._serialized_end=6356 - _globals['_RECONNECTREASON']._serialized_start=6359 - _globals['_RECONNECTREASON']._serialized_end=6496 - _globals['_SUBSCRIPTIONERROR']._serialized_start=6498 - _globals['_SUBSCRIPTIONERROR']._serialized_end=6582 - _globals['_AUDIOTRACKFEATURE']._serialized_start=6585 - _globals['_AUDIOTRACKFEATURE']._serialized_end=6748 + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' + _PARTICIPANTPERMISSION.fields_by_name['recorder']._options = None + _PARTICIPANTPERMISSION.fields_by_name['recorder']._serialized_options = b'\030\001' + _PARTICIPANTPERMISSION.fields_by_name['agent']._options = None + _PARTICIPANTPERMISSION.fields_by_name['agent']._serialized_options = b'\030\001' + _PARTICIPANTINFO_ATTRIBUTESENTRY._options = None + _PARTICIPANTINFO_ATTRIBUTESENTRY._serialized_options = b'8\001' + _DATAPACKET.fields_by_name['kind']._options = None + _DATAPACKET.fields_by_name['kind']._serialized_options = b'\030\001' + _DATAPACKET.fields_by_name['speaker']._options = None + _DATAPACKET.fields_by_name['speaker']._serialized_options = b'\030\001' + _USERPACKET.fields_by_name['participant_sid']._options = None + _USERPACKET.fields_by_name['participant_sid']._serialized_options = b'\030\001' + _USERPACKET.fields_by_name['participant_identity']._options = None + _USERPACKET.fields_by_name['participant_identity']._serialized_options = b'\030\001' + _USERPACKET.fields_by_name['destination_sids']._options = None + _USERPACKET.fields_by_name['destination_sids']._serialized_options = b'\030\001' + _USERPACKET.fields_by_name['destination_identities']._options = None + _USERPACKET.fields_by_name['destination_identities']._serialized_options = b'\030\001' + _RTPSTATS_GAPHISTOGRAMENTRY._options = None + _RTPSTATS_GAPHISTOGRAMENTRY._serialized_options = b'8\001' + _globals['_AUDIOCODEC']._serialized_start=5814 + _globals['_AUDIOCODEC']._serialized_end=5861 + _globals['_VIDEOCODEC']._serialized_start=5863 + _globals['_VIDEOCODEC']._serialized_end=5949 + _globals['_IMAGECODEC']._serialized_start=5951 + _globals['_IMAGECODEC']._serialized_end=5992 + _globals['_TRACKTYPE']._serialized_start=5994 + _globals['_TRACKTYPE']._serialized_end=6037 + _globals['_TRACKSOURCE']._serialized_start=6039 + _globals['_TRACKSOURCE']._serialized_end=6135 + _globals['_VIDEOQUALITY']._serialized_start=6137 + _globals['_VIDEOQUALITY']._serialized_end=6191 + _globals['_CONNECTIONQUALITY']._serialized_start=6193 + _globals['_CONNECTIONQUALITY']._serialized_end=6257 + _globals['_CLIENTCONFIGSETTING']._serialized_start=6259 + _globals['_CLIENTCONFIGSETTING']._serialized_end=6318 + _globals['_DISCONNECTREASON']._serialized_start=6321 + _globals['_DISCONNECTREASON']._serialized_end=6540 + _globals['_RECONNECTREASON']._serialized_start=6543 + _globals['_RECONNECTREASON']._serialized_end=6680 + _globals['_SUBSCRIPTIONERROR']._serialized_start=6682 + _globals['_SUBSCRIPTIONERROR']._serialized_end=6766 + _globals['_AUDIOTRACKFEATURE']._serialized_start=6769 + _globals['_AUDIOTRACKFEATURE']._serialized_end=6932 _globals['_ROOM']._serialized_start=67 _globals['_ROOM']._serialized_end=396 _globals['_CODEC']._serialized_start=398 @@ -68,61 +74,63 @@ _globals['_PLAYOUTDELAY']._serialized_start=440 _globals['_PLAYOUTDELAY']._serialized_end=497 _globals['_PARTICIPANTPERMISSION']._serialized_start=500 - _globals['_PARTICIPANTPERMISSION']._serialized_end=722 - _globals['_PARTICIPANTINFO']._serialized_start=725 - _globals['_PARTICIPANTINFO']._serialized_end=1190 - _globals['_PARTICIPANTINFO_STATE']._serialized_start=1061 - _globals['_PARTICIPANTINFO_STATE']._serialized_end=1123 - _globals['_PARTICIPANTINFO_KIND']._serialized_start=1125 - _globals['_PARTICIPANTINFO_KIND']._serialized_end=1190 - _globals['_ENCRYPTION']._serialized_start=1192 - _globals['_ENCRYPTION']._serialized_end=1243 - _globals['_ENCRYPTION_TYPE']._serialized_start=1206 - _globals['_ENCRYPTION_TYPE']._serialized_end=1243 - _globals['_SIMULCASTCODECINFO']._serialized_start=1245 - _globals['_SIMULCASTCODECINFO']._serialized_end=1347 - _globals['_TRACKINFO']._serialized_start=1350 - _globals['_TRACKINFO']._serialized_end=1799 - _globals['_VIDEOLAYER']._serialized_start=1801 - _globals['_VIDEOLAYER']._serialized_end=1915 - _globals['_DATAPACKET']._serialized_start=1918 - _globals['_DATAPACKET']._serialized_end=2255 - _globals['_DATAPACKET_KIND']._serialized_start=2215 - _globals['_DATAPACKET_KIND']._serialized_end=2246 - _globals['_ACTIVESPEAKERUPDATE']._serialized_start=2257 - _globals['_ACTIVESPEAKERUPDATE']._serialized_end=2318 - _globals['_SPEAKERINFO']._serialized_start=2320 - _globals['_SPEAKERINFO']._serialized_end=2377 - _globals['_USERPACKET']._serialized_start=2380 - _globals['_USERPACKET']._serialized_end=2668 - _globals['_SIPDTMF']._serialized_start=2670 - _globals['_SIPDTMF']._serialized_end=2708 - _globals['_TRANSCRIPTION']._serialized_start=2711 - _globals['_TRANSCRIPTION']._serialized_end=2841 - _globals['_TRANSCRIPTIONSEGMENT']._serialized_start=2843 - _globals['_TRANSCRIPTIONSEGMENT']._serialized_end=2944 - _globals['_PARTICIPANTTRACKS']._serialized_start=2946 - _globals['_PARTICIPANTTRACKS']._serialized_end=3010 - _globals['_SERVERINFO']._serialized_start=3013 - _globals['_SERVERINFO']._serialized_end=3219 - _globals['_SERVERINFO_EDITION']._serialized_start=3185 - _globals['_SERVERINFO_EDITION']._serialized_end=3219 - _globals['_CLIENTINFO']._serialized_start=3222 - _globals['_CLIENTINFO']._serialized_end=3571 - _globals['_CLIENTINFO_SDK']._serialized_start=3440 - _globals['_CLIENTINFO_SDK']._serialized_end=3571 - _globals['_CLIENTCONFIGURATION']._serialized_start=3574 - _globals['_CLIENTCONFIGURATION']._serialized_end=3842 - _globals['_VIDEOCONFIGURATION']._serialized_start=3844 - _globals['_VIDEOCONFIGURATION']._serialized_end=3920 - _globals['_DISABLEDCODECS']._serialized_start=3922 - _globals['_DISABLEDCODECS']._serialized_end=4003 - _globals['_RTPDRIFT']._serialized_start=4006 - _globals['_RTPDRIFT']._serialized_end=4262 - _globals['_RTPSTATS']._serialized_start=4265 - _globals['_RTPSTATS']._serialized_end=5577 - _globals['_RTPSTATS_GAPHISTOGRAMENTRY']._serialized_start=5526 - _globals['_RTPSTATS_GAPHISTOGRAMENTRY']._serialized_end=5577 - _globals['_TIMEDVERSION']._serialized_start=5579 - _globals['_TIMEDVERSION']._serialized_end=5628 + _globals['_PARTICIPANTPERMISSION']._serialized_end=730 + _globals['_PARTICIPANTINFO']._serialized_start=733 + _globals['_PARTICIPANTINFO']._serialized_end=1311 + _globals['_PARTICIPANTINFO_ATTRIBUTESENTRY']._serialized_start=1131 + _globals['_PARTICIPANTINFO_ATTRIBUTESENTRY']._serialized_end=1180 + _globals['_PARTICIPANTINFO_STATE']._serialized_start=1182 + _globals['_PARTICIPANTINFO_STATE']._serialized_end=1244 + _globals['_PARTICIPANTINFO_KIND']._serialized_start=1246 + _globals['_PARTICIPANTINFO_KIND']._serialized_end=1311 + _globals['_ENCRYPTION']._serialized_start=1313 + _globals['_ENCRYPTION']._serialized_end=1364 + _globals['_ENCRYPTION_TYPE']._serialized_start=1327 + _globals['_ENCRYPTION_TYPE']._serialized_end=1364 + _globals['_SIMULCASTCODECINFO']._serialized_start=1366 + _globals['_SIMULCASTCODECINFO']._serialized_end=1468 + _globals['_TRACKINFO']._serialized_start=1471 + _globals['_TRACKINFO']._serialized_end=1972 + _globals['_VIDEOLAYER']._serialized_start=1974 + _globals['_VIDEOLAYER']._serialized_end=2088 + _globals['_DATAPACKET']._serialized_start=2091 + _globals['_DATAPACKET']._serialized_end=2428 + _globals['_DATAPACKET_KIND']._serialized_start=2388 + _globals['_DATAPACKET_KIND']._serialized_end=2419 + _globals['_ACTIVESPEAKERUPDATE']._serialized_start=2430 + _globals['_ACTIVESPEAKERUPDATE']._serialized_end=2491 + _globals['_SPEAKERINFO']._serialized_start=2493 + _globals['_SPEAKERINFO']._serialized_end=2550 + _globals['_USERPACKET']._serialized_start=2553 + _globals['_USERPACKET']._serialized_end=2841 + _globals['_SIPDTMF']._serialized_start=2843 + _globals['_SIPDTMF']._serialized_end=2881 + _globals['_TRANSCRIPTION']._serialized_start=2883 + _globals['_TRANSCRIPTION']._serialized_end=3007 + _globals['_TRANSCRIPTIONSEGMENT']._serialized_start=3009 + _globals['_TRANSCRIPTIONSEGMENT']._serialized_end=3128 + _globals['_PARTICIPANTTRACKS']._serialized_start=3130 + _globals['_PARTICIPANTTRACKS']._serialized_end=3194 + _globals['_SERVERINFO']._serialized_start=3197 + _globals['_SERVERINFO']._serialized_end=3403 + _globals['_SERVERINFO_EDITION']._serialized_start=3369 + _globals['_SERVERINFO_EDITION']._serialized_end=3403 + _globals['_CLIENTINFO']._serialized_start=3406 + _globals['_CLIENTINFO']._serialized_end=3755 + _globals['_CLIENTINFO_SDK']._serialized_start=3624 + _globals['_CLIENTINFO_SDK']._serialized_end=3755 + _globals['_CLIENTCONFIGURATION']._serialized_start=3758 + _globals['_CLIENTCONFIGURATION']._serialized_end=4026 + _globals['_VIDEOCONFIGURATION']._serialized_start=4028 + _globals['_VIDEOCONFIGURATION']._serialized_end=4104 + _globals['_DISABLEDCODECS']._serialized_start=4106 + _globals['_DISABLEDCODECS']._serialized_end=4187 + _globals['_RTPDRIFT']._serialized_start=4190 + _globals['_RTPDRIFT']._serialized_end=4446 + _globals['_RTPSTATS']._serialized_start=4449 + _globals['_RTPSTATS']._serialized_end=5761 + _globals['_RTPSTATS_GAPHISTOGRAMENTRY']._serialized_start=5710 + _globals['_RTPSTATS_GAPHISTOGRAMENTRY']._serialized_end=5761 + _globals['_TIMEDVERSION']._serialized_start=5763 + _globals['_TIMEDVERSION']._serialized_end=5812 # @@protoc_insertion_point(module_scope) diff --git a/livekit-protocol/livekit/protocol/models.pyi b/livekit-protocol/livekit/protocol/models.pyi index 04034a65..15f8b67a 100644 --- a/livekit-protocol/livekit/protocol/models.pyi +++ b/livekit-protocol/livekit/protocol/models.pyi @@ -8,13 +8,13 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map DESCRIPTOR: _descriptor.FileDescriptor class AudioCodec(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] DEFAULT_AC: _ClassVar[AudioCodec] OPUS: _ClassVar[AudioCodec] AAC: _ClassVar[AudioCodec] class VideoCodec(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] DEFAULT_VC: _ClassVar[VideoCodec] H264_BASELINE: _ClassVar[VideoCodec] H264_MAIN: _ClassVar[VideoCodec] @@ -22,18 +22,18 @@ class VideoCodec(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): VP8: _ClassVar[VideoCodec] class ImageCodec(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] IC_DEFAULT: _ClassVar[ImageCodec] IC_JPEG: _ClassVar[ImageCodec] class TrackType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] AUDIO: _ClassVar[TrackType] VIDEO: _ClassVar[TrackType] DATA: _ClassVar[TrackType] class TrackSource(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] UNKNOWN: _ClassVar[TrackSource] CAMERA: _ClassVar[TrackSource] MICROPHONE: _ClassVar[TrackSource] @@ -41,27 +41,27 @@ class TrackSource(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): SCREEN_SHARE_AUDIO: _ClassVar[TrackSource] class VideoQuality(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] LOW: _ClassVar[VideoQuality] MEDIUM: _ClassVar[VideoQuality] HIGH: _ClassVar[VideoQuality] OFF: _ClassVar[VideoQuality] class ConnectionQuality(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] POOR: _ClassVar[ConnectionQuality] GOOD: _ClassVar[ConnectionQuality] EXCELLENT: _ClassVar[ConnectionQuality] LOST: _ClassVar[ConnectionQuality] class ClientConfigSetting(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] UNSET: _ClassVar[ClientConfigSetting] DISABLED: _ClassVar[ClientConfigSetting] ENABLED: _ClassVar[ClientConfigSetting] class DisconnectReason(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] UNKNOWN_REASON: _ClassVar[DisconnectReason] CLIENT_INITIATED: _ClassVar[DisconnectReason] DUPLICATE_IDENTITY: _ClassVar[DisconnectReason] @@ -74,7 +74,7 @@ class DisconnectReason(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): SIGNAL_CLOSE: _ClassVar[DisconnectReason] class ReconnectReason(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] RR_UNKNOWN: _ClassVar[ReconnectReason] RR_SIGNAL_DISCONNECTED: _ClassVar[ReconnectReason] RR_PUBLISHER_FAILED: _ClassVar[ReconnectReason] @@ -82,13 +82,13 @@ class ReconnectReason(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): RR_SWITCH_CANDIDATE: _ClassVar[ReconnectReason] class SubscriptionError(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] SE_UNKNOWN: _ClassVar[SubscriptionError] SE_CODEC_UNSUPPORTED: _ClassVar[SubscriptionError] SE_TRACK_NOTFOUND: _ClassVar[SubscriptionError] class AudioTrackFeature(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] TF_STEREO: _ClassVar[AudioTrackFeature] TF_NO_DTX: _ClassVar[AudioTrackFeature] TF_AUTO_GAIN_CONTROL: _ClassVar[AudioTrackFeature] @@ -150,7 +150,7 @@ TF_NOISE_SUPPRESSION: AudioTrackFeature TF_ENHANCED_NOISE_CANCELLATION: AudioTrackFeature class Room(_message.Message): - __slots__ = ("sid", "name", "empty_timeout", "departure_timeout", "max_participants", "creation_time", "turn_password", "enabled_codecs", "metadata", "num_participants", "num_publishers", "active_recording", "version") + __slots__ = ["sid", "name", "empty_timeout", "departure_timeout", "max_participants", "creation_time", "turn_password", "enabled_codecs", "metadata", "num_participants", "num_publishers", "active_recording", "version"] SID_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] EMPTY_TIMEOUT_FIELD_NUMBER: _ClassVar[int] @@ -180,7 +180,7 @@ class Room(_message.Message): def __init__(self, sid: _Optional[str] = ..., name: _Optional[str] = ..., empty_timeout: _Optional[int] = ..., departure_timeout: _Optional[int] = ..., max_participants: _Optional[int] = ..., creation_time: _Optional[int] = ..., turn_password: _Optional[str] = ..., enabled_codecs: _Optional[_Iterable[_Union[Codec, _Mapping]]] = ..., metadata: _Optional[str] = ..., num_participants: _Optional[int] = ..., num_publishers: _Optional[int] = ..., active_recording: bool = ..., version: _Optional[_Union[TimedVersion, _Mapping]] = ...) -> None: ... class Codec(_message.Message): - __slots__ = ("mime", "fmtp_line") + __slots__ = ["mime", "fmtp_line"] MIME_FIELD_NUMBER: _ClassVar[int] FMTP_LINE_FIELD_NUMBER: _ClassVar[int] mime: str @@ -188,7 +188,7 @@ class Codec(_message.Message): def __init__(self, mime: _Optional[str] = ..., fmtp_line: _Optional[str] = ...) -> None: ... class PlayoutDelay(_message.Message): - __slots__ = ("enabled", "min", "max") + __slots__ = ["enabled", "min", "max"] ENABLED_FIELD_NUMBER: _ClassVar[int] MIN_FIELD_NUMBER: _ClassVar[int] MAX_FIELD_NUMBER: _ClassVar[int] @@ -198,7 +198,7 @@ class PlayoutDelay(_message.Message): def __init__(self, enabled: bool = ..., min: _Optional[int] = ..., max: _Optional[int] = ...) -> None: ... class ParticipantPermission(_message.Message): - __slots__ = ("can_subscribe", "can_publish", "can_publish_data", "can_publish_sources", "hidden", "recorder", "can_update_metadata", "agent") + __slots__ = ["can_subscribe", "can_publish", "can_publish_data", "can_publish_sources", "hidden", "recorder", "can_update_metadata", "agent"] CAN_SUBSCRIBE_FIELD_NUMBER: _ClassVar[int] CAN_PUBLISH_FIELD_NUMBER: _ClassVar[int] CAN_PUBLISH_DATA_FIELD_NUMBER: _ClassVar[int] @@ -218,9 +218,9 @@ class ParticipantPermission(_message.Message): def __init__(self, can_subscribe: bool = ..., can_publish: bool = ..., can_publish_data: bool = ..., can_publish_sources: _Optional[_Iterable[_Union[TrackSource, str]]] = ..., hidden: bool = ..., recorder: bool = ..., can_update_metadata: bool = ..., agent: bool = ...) -> None: ... class ParticipantInfo(_message.Message): - __slots__ = ("sid", "identity", "state", "tracks", "metadata", "joined_at", "name", "version", "permission", "region", "is_publisher", "kind") + __slots__ = ["sid", "identity", "state", "tracks", "metadata", "joined_at", "name", "version", "permission", "region", "is_publisher", "kind", "attributes"] class State(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] JOINING: _ClassVar[ParticipantInfo.State] JOINED: _ClassVar[ParticipantInfo.State] ACTIVE: _ClassVar[ParticipantInfo.State] @@ -230,7 +230,7 @@ class ParticipantInfo(_message.Message): ACTIVE: ParticipantInfo.State DISCONNECTED: ParticipantInfo.State class Kind(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] STANDARD: _ClassVar[ParticipantInfo.Kind] INGRESS: _ClassVar[ParticipantInfo.Kind] EGRESS: _ClassVar[ParticipantInfo.Kind] @@ -241,6 +241,13 @@ class ParticipantInfo(_message.Message): EGRESS: ParticipantInfo.Kind SIP: ParticipantInfo.Kind AGENT: ParticipantInfo.Kind + class AttributesEntry(_message.Message): + __slots__ = ["key", "value"] + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... SID_FIELD_NUMBER: _ClassVar[int] IDENTITY_FIELD_NUMBER: _ClassVar[int] STATE_FIELD_NUMBER: _ClassVar[int] @@ -253,6 +260,7 @@ class ParticipantInfo(_message.Message): REGION_FIELD_NUMBER: _ClassVar[int] IS_PUBLISHER_FIELD_NUMBER: _ClassVar[int] KIND_FIELD_NUMBER: _ClassVar[int] + ATTRIBUTES_FIELD_NUMBER: _ClassVar[int] sid: str identity: str state: ParticipantInfo.State @@ -265,12 +273,13 @@ class ParticipantInfo(_message.Message): region: str is_publisher: bool kind: ParticipantInfo.Kind - def __init__(self, sid: _Optional[str] = ..., identity: _Optional[str] = ..., state: _Optional[_Union[ParticipantInfo.State, str]] = ..., tracks: _Optional[_Iterable[_Union[TrackInfo, _Mapping]]] = ..., metadata: _Optional[str] = ..., joined_at: _Optional[int] = ..., name: _Optional[str] = ..., version: _Optional[int] = ..., permission: _Optional[_Union[ParticipantPermission, _Mapping]] = ..., region: _Optional[str] = ..., is_publisher: bool = ..., kind: _Optional[_Union[ParticipantInfo.Kind, str]] = ...) -> None: ... + attributes: _containers.ScalarMap[str, str] + def __init__(self, sid: _Optional[str] = ..., identity: _Optional[str] = ..., state: _Optional[_Union[ParticipantInfo.State, str]] = ..., tracks: _Optional[_Iterable[_Union[TrackInfo, _Mapping]]] = ..., metadata: _Optional[str] = ..., joined_at: _Optional[int] = ..., name: _Optional[str] = ..., version: _Optional[int] = ..., permission: _Optional[_Union[ParticipantPermission, _Mapping]] = ..., region: _Optional[str] = ..., is_publisher: bool = ..., kind: _Optional[_Union[ParticipantInfo.Kind, str]] = ..., attributes: _Optional[_Mapping[str, str]] = ...) -> None: ... class Encryption(_message.Message): - __slots__ = () + __slots__ = [] class Type(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] NONE: _ClassVar[Encryption.Type] GCM: _ClassVar[Encryption.Type] CUSTOM: _ClassVar[Encryption.Type] @@ -280,7 +289,7 @@ class Encryption(_message.Message): def __init__(self) -> None: ... class SimulcastCodecInfo(_message.Message): - __slots__ = ("mime_type", "mid", "cid", "layers") + __slots__ = ["mime_type", "mid", "cid", "layers"] MIME_TYPE_FIELD_NUMBER: _ClassVar[int] MID_FIELD_NUMBER: _ClassVar[int] CID_FIELD_NUMBER: _ClassVar[int] @@ -292,7 +301,7 @@ class SimulcastCodecInfo(_message.Message): def __init__(self, mime_type: _Optional[str] = ..., mid: _Optional[str] = ..., cid: _Optional[str] = ..., layers: _Optional[_Iterable[_Union[VideoLayer, _Mapping]]] = ...) -> None: ... class TrackInfo(_message.Message): - __slots__ = ("sid", "type", "name", "muted", "width", "height", "simulcast", "disable_dtx", "source", "layers", "mime_type", "mid", "codecs", "stereo", "disable_red", "encryption", "stream", "version") + __slots__ = ["sid", "type", "name", "muted", "width", "height", "simulcast", "disable_dtx", "source", "layers", "mime_type", "mid", "codecs", "stereo", "disable_red", "encryption", "stream", "version", "audio_features"] SID_FIELD_NUMBER: _ClassVar[int] TYPE_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] @@ -311,6 +320,7 @@ class TrackInfo(_message.Message): ENCRYPTION_FIELD_NUMBER: _ClassVar[int] STREAM_FIELD_NUMBER: _ClassVar[int] VERSION_FIELD_NUMBER: _ClassVar[int] + AUDIO_FEATURES_FIELD_NUMBER: _ClassVar[int] sid: str type: TrackType name: str @@ -329,10 +339,11 @@ class TrackInfo(_message.Message): encryption: Encryption.Type stream: str version: TimedVersion - def __init__(self, sid: _Optional[str] = ..., type: _Optional[_Union[TrackType, str]] = ..., name: _Optional[str] = ..., muted: bool = ..., width: _Optional[int] = ..., height: _Optional[int] = ..., simulcast: bool = ..., disable_dtx: bool = ..., source: _Optional[_Union[TrackSource, str]] = ..., layers: _Optional[_Iterable[_Union[VideoLayer, _Mapping]]] = ..., mime_type: _Optional[str] = ..., mid: _Optional[str] = ..., codecs: _Optional[_Iterable[_Union[SimulcastCodecInfo, _Mapping]]] = ..., stereo: bool = ..., disable_red: bool = ..., encryption: _Optional[_Union[Encryption.Type, str]] = ..., stream: _Optional[str] = ..., version: _Optional[_Union[TimedVersion, _Mapping]] = ...) -> None: ... + audio_features: _containers.RepeatedScalarFieldContainer[AudioTrackFeature] + def __init__(self, sid: _Optional[str] = ..., type: _Optional[_Union[TrackType, str]] = ..., name: _Optional[str] = ..., muted: bool = ..., width: _Optional[int] = ..., height: _Optional[int] = ..., simulcast: bool = ..., disable_dtx: bool = ..., source: _Optional[_Union[TrackSource, str]] = ..., layers: _Optional[_Iterable[_Union[VideoLayer, _Mapping]]] = ..., mime_type: _Optional[str] = ..., mid: _Optional[str] = ..., codecs: _Optional[_Iterable[_Union[SimulcastCodecInfo, _Mapping]]] = ..., stereo: bool = ..., disable_red: bool = ..., encryption: _Optional[_Union[Encryption.Type, str]] = ..., stream: _Optional[str] = ..., version: _Optional[_Union[TimedVersion, _Mapping]] = ..., audio_features: _Optional[_Iterable[_Union[AudioTrackFeature, str]]] = ...) -> None: ... class VideoLayer(_message.Message): - __slots__ = ("quality", "width", "height", "bitrate", "ssrc") + __slots__ = ["quality", "width", "height", "bitrate", "ssrc"] QUALITY_FIELD_NUMBER: _ClassVar[int] WIDTH_FIELD_NUMBER: _ClassVar[int] HEIGHT_FIELD_NUMBER: _ClassVar[int] @@ -346,9 +357,9 @@ class VideoLayer(_message.Message): def __init__(self, quality: _Optional[_Union[VideoQuality, str]] = ..., width: _Optional[int] = ..., height: _Optional[int] = ..., bitrate: _Optional[int] = ..., ssrc: _Optional[int] = ...) -> None: ... class DataPacket(_message.Message): - __slots__ = ("kind", "participant_identity", "destination_identities", "user", "speaker", "sip_dtmf", "transcription") + __slots__ = ["kind", "participant_identity", "destination_identities", "user", "speaker", "sip_dtmf", "transcription"] class Kind(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] RELIABLE: _ClassVar[DataPacket.Kind] LOSSY: _ClassVar[DataPacket.Kind] RELIABLE: DataPacket.Kind @@ -370,13 +381,13 @@ class DataPacket(_message.Message): def __init__(self, kind: _Optional[_Union[DataPacket.Kind, str]] = ..., participant_identity: _Optional[str] = ..., destination_identities: _Optional[_Iterable[str]] = ..., user: _Optional[_Union[UserPacket, _Mapping]] = ..., speaker: _Optional[_Union[ActiveSpeakerUpdate, _Mapping]] = ..., sip_dtmf: _Optional[_Union[SipDTMF, _Mapping]] = ..., transcription: _Optional[_Union[Transcription, _Mapping]] = ...) -> None: ... class ActiveSpeakerUpdate(_message.Message): - __slots__ = ("speakers",) + __slots__ = ["speakers"] SPEAKERS_FIELD_NUMBER: _ClassVar[int] speakers: _containers.RepeatedCompositeFieldContainer[SpeakerInfo] def __init__(self, speakers: _Optional[_Iterable[_Union[SpeakerInfo, _Mapping]]] = ...) -> None: ... class SpeakerInfo(_message.Message): - __slots__ = ("sid", "level", "active") + __slots__ = ["sid", "level", "active"] SID_FIELD_NUMBER: _ClassVar[int] LEVEL_FIELD_NUMBER: _ClassVar[int] ACTIVE_FIELD_NUMBER: _ClassVar[int] @@ -386,7 +397,7 @@ class SpeakerInfo(_message.Message): def __init__(self, sid: _Optional[str] = ..., level: _Optional[float] = ..., active: bool = ...) -> None: ... class UserPacket(_message.Message): - __slots__ = ("participant_sid", "participant_identity", "payload", "destination_sids", "destination_identities", "topic", "id", "start_time", "end_time") + __slots__ = ["participant_sid", "participant_identity", "payload", "destination_sids", "destination_identities", "topic", "id", "start_time", "end_time"] PARTICIPANT_SID_FIELD_NUMBER: _ClassVar[int] PARTICIPANT_IDENTITY_FIELD_NUMBER: _ClassVar[int] PAYLOAD_FIELD_NUMBER: _ClassVar[int] @@ -408,7 +419,7 @@ class UserPacket(_message.Message): def __init__(self, participant_sid: _Optional[str] = ..., participant_identity: _Optional[str] = ..., payload: _Optional[bytes] = ..., destination_sids: _Optional[_Iterable[str]] = ..., destination_identities: _Optional[_Iterable[str]] = ..., topic: _Optional[str] = ..., id: _Optional[str] = ..., start_time: _Optional[int] = ..., end_time: _Optional[int] = ...) -> None: ... class SipDTMF(_message.Message): - __slots__ = ("code", "digit") + __slots__ = ["code", "digit"] CODE_FIELD_NUMBER: _ClassVar[int] DIGIT_FIELD_NUMBER: _ClassVar[int] code: int @@ -416,33 +427,33 @@ class SipDTMF(_message.Message): def __init__(self, code: _Optional[int] = ..., digit: _Optional[str] = ...) -> None: ... class Transcription(_message.Message): - __slots__ = ("participant_identity", "track_id", "segments", "language") - PARTICIPANT_IDENTITY_FIELD_NUMBER: _ClassVar[int] + __slots__ = ["transcribed_participant_identity", "track_id", "segments"] + TRANSCRIBED_PARTICIPANT_IDENTITY_FIELD_NUMBER: _ClassVar[int] TRACK_ID_FIELD_NUMBER: _ClassVar[int] SEGMENTS_FIELD_NUMBER: _ClassVar[int] - LANGUAGE_FIELD_NUMBER: _ClassVar[int] - participant_identity: str + transcribed_participant_identity: str track_id: str segments: _containers.RepeatedCompositeFieldContainer[TranscriptionSegment] - language: str - def __init__(self, participant_identity: _Optional[str] = ..., track_id: _Optional[str] = ..., segments: _Optional[_Iterable[_Union[TranscriptionSegment, _Mapping]]] = ..., language: _Optional[str] = ...) -> None: ... + def __init__(self, transcribed_participant_identity: _Optional[str] = ..., track_id: _Optional[str] = ..., segments: _Optional[_Iterable[_Union[TranscriptionSegment, _Mapping]]] = ...) -> None: ... class TranscriptionSegment(_message.Message): - __slots__ = ("id", "text", "start_time", "end_time", "final") + __slots__ = ["id", "text", "start_time", "end_time", "final", "language"] ID_FIELD_NUMBER: _ClassVar[int] TEXT_FIELD_NUMBER: _ClassVar[int] START_TIME_FIELD_NUMBER: _ClassVar[int] END_TIME_FIELD_NUMBER: _ClassVar[int] FINAL_FIELD_NUMBER: _ClassVar[int] + LANGUAGE_FIELD_NUMBER: _ClassVar[int] id: str text: str start_time: int end_time: int final: bool - def __init__(self, id: _Optional[str] = ..., text: _Optional[str] = ..., start_time: _Optional[int] = ..., end_time: _Optional[int] = ..., final: bool = ...) -> None: ... + language: str + def __init__(self, id: _Optional[str] = ..., text: _Optional[str] = ..., start_time: _Optional[int] = ..., end_time: _Optional[int] = ..., final: bool = ..., language: _Optional[str] = ...) -> None: ... class ParticipantTracks(_message.Message): - __slots__ = ("participant_sid", "track_sids") + __slots__ = ["participant_sid", "track_sids"] PARTICIPANT_SID_FIELD_NUMBER: _ClassVar[int] TRACK_SIDS_FIELD_NUMBER: _ClassVar[int] participant_sid: str @@ -450,9 +461,9 @@ class ParticipantTracks(_message.Message): def __init__(self, participant_sid: _Optional[str] = ..., track_sids: _Optional[_Iterable[str]] = ...) -> None: ... class ServerInfo(_message.Message): - __slots__ = ("edition", "version", "protocol", "region", "node_id", "debug_info", "agent_protocol") + __slots__ = ["edition", "version", "protocol", "region", "node_id", "debug_info", "agent_protocol"] class Edition(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] Standard: _ClassVar[ServerInfo.Edition] Cloud: _ClassVar[ServerInfo.Edition] Standard: ServerInfo.Edition @@ -474,9 +485,9 @@ class ServerInfo(_message.Message): def __init__(self, edition: _Optional[_Union[ServerInfo.Edition, str]] = ..., version: _Optional[str] = ..., protocol: _Optional[int] = ..., region: _Optional[str] = ..., node_id: _Optional[str] = ..., debug_info: _Optional[str] = ..., agent_protocol: _Optional[int] = ...) -> None: ... class ClientInfo(_message.Message): - __slots__ = ("sdk", "version", "protocol", "os", "os_version", "device_model", "browser", "browser_version", "address", "network") + __slots__ = ["sdk", "version", "protocol", "os", "os_version", "device_model", "browser", "browser_version", "address", "network"] class SDK(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] UNKNOWN: _ClassVar[ClientInfo.SDK] JS: _ClassVar[ClientInfo.SDK] SWIFT: _ClassVar[ClientInfo.SDK] @@ -522,7 +533,7 @@ class ClientInfo(_message.Message): def __init__(self, sdk: _Optional[_Union[ClientInfo.SDK, str]] = ..., version: _Optional[str] = ..., protocol: _Optional[int] = ..., os: _Optional[str] = ..., os_version: _Optional[str] = ..., device_model: _Optional[str] = ..., browser: _Optional[str] = ..., browser_version: _Optional[str] = ..., address: _Optional[str] = ..., network: _Optional[str] = ...) -> None: ... class ClientConfiguration(_message.Message): - __slots__ = ("video", "screen", "resume_connection", "disabled_codecs", "force_relay") + __slots__ = ["video", "screen", "resume_connection", "disabled_codecs", "force_relay"] VIDEO_FIELD_NUMBER: _ClassVar[int] SCREEN_FIELD_NUMBER: _ClassVar[int] RESUME_CONNECTION_FIELD_NUMBER: _ClassVar[int] @@ -536,13 +547,13 @@ class ClientConfiguration(_message.Message): def __init__(self, video: _Optional[_Union[VideoConfiguration, _Mapping]] = ..., screen: _Optional[_Union[VideoConfiguration, _Mapping]] = ..., resume_connection: _Optional[_Union[ClientConfigSetting, str]] = ..., disabled_codecs: _Optional[_Union[DisabledCodecs, _Mapping]] = ..., force_relay: _Optional[_Union[ClientConfigSetting, str]] = ...) -> None: ... class VideoConfiguration(_message.Message): - __slots__ = ("hardware_encoder",) + __slots__ = ["hardware_encoder"] HARDWARE_ENCODER_FIELD_NUMBER: _ClassVar[int] hardware_encoder: ClientConfigSetting def __init__(self, hardware_encoder: _Optional[_Union[ClientConfigSetting, str]] = ...) -> None: ... class DisabledCodecs(_message.Message): - __slots__ = ("codecs", "publish") + __slots__ = ["codecs", "publish"] CODECS_FIELD_NUMBER: _ClassVar[int] PUBLISH_FIELD_NUMBER: _ClassVar[int] codecs: _containers.RepeatedCompositeFieldContainer[Codec] @@ -550,7 +561,7 @@ class DisabledCodecs(_message.Message): def __init__(self, codecs: _Optional[_Iterable[_Union[Codec, _Mapping]]] = ..., publish: _Optional[_Iterable[_Union[Codec, _Mapping]]] = ...) -> None: ... class RTPDrift(_message.Message): - __slots__ = ("start_time", "end_time", "duration", "start_timestamp", "end_timestamp", "rtp_clock_ticks", "drift_samples", "drift_ms", "clock_rate") + __slots__ = ["start_time", "end_time", "duration", "start_timestamp", "end_timestamp", "rtp_clock_ticks", "drift_samples", "drift_ms", "clock_rate"] START_TIME_FIELD_NUMBER: _ClassVar[int] END_TIME_FIELD_NUMBER: _ClassVar[int] DURATION_FIELD_NUMBER: _ClassVar[int] @@ -572,9 +583,9 @@ class RTPDrift(_message.Message): def __init__(self, start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., end_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[float] = ..., start_timestamp: _Optional[int] = ..., end_timestamp: _Optional[int] = ..., rtp_clock_ticks: _Optional[int] = ..., drift_samples: _Optional[int] = ..., drift_ms: _Optional[float] = ..., clock_rate: _Optional[float] = ...) -> None: ... class RTPStats(_message.Message): - __slots__ = ("start_time", "end_time", "duration", "packets", "packet_rate", "bytes", "header_bytes", "bitrate", "packets_lost", "packet_loss_rate", "packet_loss_percentage", "packets_duplicate", "packet_duplicate_rate", "bytes_duplicate", "header_bytes_duplicate", "bitrate_duplicate", "packets_padding", "packet_padding_rate", "bytes_padding", "header_bytes_padding", "bitrate_padding", "packets_out_of_order", "frames", "frame_rate", "jitter_current", "jitter_max", "gap_histogram", "nacks", "nack_acks", "nack_misses", "nack_repeated", "plis", "last_pli", "firs", "last_fir", "rtt_current", "rtt_max", "key_frames", "last_key_frame", "layer_lock_plis", "last_layer_lock_pli", "packet_drift", "report_drift", "rebased_report_drift") + __slots__ = ["start_time", "end_time", "duration", "packets", "packet_rate", "bytes", "header_bytes", "bitrate", "packets_lost", "packet_loss_rate", "packet_loss_percentage", "packets_duplicate", "packet_duplicate_rate", "bytes_duplicate", "header_bytes_duplicate", "bitrate_duplicate", "packets_padding", "packet_padding_rate", "bytes_padding", "header_bytes_padding", "bitrate_padding", "packets_out_of_order", "frames", "frame_rate", "jitter_current", "jitter_max", "gap_histogram", "nacks", "nack_acks", "nack_misses", "nack_repeated", "plis", "last_pli", "firs", "last_fir", "rtt_current", "rtt_max", "key_frames", "last_key_frame", "layer_lock_plis", "last_layer_lock_pli", "packet_drift", "report_drift", "rebased_report_drift"] class GapHistogramEntry(_message.Message): - __slots__ = ("key", "value") + __slots__ = ["key", "value"] KEY_FIELD_NUMBER: _ClassVar[int] VALUE_FIELD_NUMBER: _ClassVar[int] key: int @@ -671,7 +682,7 @@ class RTPStats(_message.Message): def __init__(self, start_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., end_time: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., duration: _Optional[float] = ..., packets: _Optional[int] = ..., packet_rate: _Optional[float] = ..., bytes: _Optional[int] = ..., header_bytes: _Optional[int] = ..., bitrate: _Optional[float] = ..., packets_lost: _Optional[int] = ..., packet_loss_rate: _Optional[float] = ..., packet_loss_percentage: _Optional[float] = ..., packets_duplicate: _Optional[int] = ..., packet_duplicate_rate: _Optional[float] = ..., bytes_duplicate: _Optional[int] = ..., header_bytes_duplicate: _Optional[int] = ..., bitrate_duplicate: _Optional[float] = ..., packets_padding: _Optional[int] = ..., packet_padding_rate: _Optional[float] = ..., bytes_padding: _Optional[int] = ..., header_bytes_padding: _Optional[int] = ..., bitrate_padding: _Optional[float] = ..., packets_out_of_order: _Optional[int] = ..., frames: _Optional[int] = ..., frame_rate: _Optional[float] = ..., jitter_current: _Optional[float] = ..., jitter_max: _Optional[float] = ..., gap_histogram: _Optional[_Mapping[int, int]] = ..., nacks: _Optional[int] = ..., nack_acks: _Optional[int] = ..., nack_misses: _Optional[int] = ..., nack_repeated: _Optional[int] = ..., plis: _Optional[int] = ..., last_pli: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., firs: _Optional[int] = ..., last_fir: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., rtt_current: _Optional[int] = ..., rtt_max: _Optional[int] = ..., key_frames: _Optional[int] = ..., last_key_frame: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., layer_lock_plis: _Optional[int] = ..., last_layer_lock_pli: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., packet_drift: _Optional[_Union[RTPDrift, _Mapping]] = ..., report_drift: _Optional[_Union[RTPDrift, _Mapping]] = ..., rebased_report_drift: _Optional[_Union[RTPDrift, _Mapping]] = ...) -> None: ... class TimedVersion(_message.Message): - __slots__ = ("unix_micro", "ticks") + __slots__ = ["unix_micro", "ticks"] UNIX_MICRO_FIELD_NUMBER: _ClassVar[int] TICKS_FIELD_NUMBER: _ClassVar[int] unix_micro: int diff --git a/livekit-protocol/livekit/protocol/room.py b/livekit-protocol/livekit/protocol/room.py index 496f2717..9138d1e9 100644 --- a/livekit-protocol/livekit/protocol/room.py +++ b/livekit-protocol/livekit/protocol/room.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_room.proto -# Protobuf Python Version: 4.25.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -16,16 +15,19 @@ from . import egress as _egress_ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x12livekit_room.proto\x12\x07livekit\x1a\x14livekit_models.proto\x1a\x14livekit_egress.proto\"\x81\x02\n\x11\x43reateRoomRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x15\n\rempty_timeout\x18\x02 \x01(\r\x12\x19\n\x11\x64\x65parture_timeout\x18\n \x01(\r\x12\x18\n\x10max_participants\x18\x03 \x01(\r\x12\x0f\n\x07node_id\x18\x04 \x01(\t\x12\x10\n\x08metadata\x18\x05 \x01(\t\x12#\n\x06\x65gress\x18\x06 \x01(\x0b\x32\x13.livekit.RoomEgress\x12\x19\n\x11min_playout_delay\x18\x07 \x01(\r\x12\x19\n\x11max_playout_delay\x18\x08 \x01(\r\x12\x14\n\x0csync_streams\x18\t \x01(\x08\"\x9e\x01\n\nRoomEgress\x12\x31\n\x04room\x18\x01 \x01(\x0b\x32#.livekit.RoomCompositeEgressRequest\x12\x33\n\x0bparticipant\x18\x03 \x01(\x0b\x32\x1e.livekit.AutoParticipantEgress\x12(\n\x06tracks\x18\x02 \x01(\x0b\x32\x18.livekit.AutoTrackEgress\"!\n\x10ListRoomsRequest\x12\r\n\x05names\x18\x01 \x03(\t\"1\n\x11ListRoomsResponse\x12\x1c\n\x05rooms\x18\x01 \x03(\x0b\x32\r.livekit.Room\"!\n\x11\x44\x65leteRoomRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\"\x14\n\x12\x44\x65leteRoomResponse\"\'\n\x17ListParticipantsRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\"J\n\x18ListParticipantsResponse\x12.\n\x0cparticipants\x18\x01 \x03(\x0b\x32\x18.livekit.ParticipantInfo\"9\n\x17RoomParticipantIdentity\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\"\x1b\n\x19RemoveParticipantResponse\"X\n\x14MuteRoomTrackRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x11\n\ttrack_sid\x18\x03 \x01(\t\x12\r\n\x05muted\x18\x04 \x01(\x08\":\n\x15MuteRoomTrackResponse\x12!\n\x05track\x18\x01 \x01(\x0b\x32\x12.livekit.TrackInfo\"\x8e\x01\n\x18UpdateParticipantRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x10\n\x08metadata\x18\x03 \x01(\t\x12\x32\n\npermission\x18\x04 \x01(\x0b\x32\x1e.livekit.ParticipantPermission\x12\x0c\n\x04name\x18\x05 \x01(\t\"\x9b\x01\n\x1aUpdateSubscriptionsRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x12\n\ntrack_sids\x18\x03 \x03(\t\x12\x11\n\tsubscribe\x18\x04 \x01(\x08\x12\x36\n\x12participant_tracks\x18\x05 \x03(\x0b\x32\x1a.livekit.ParticipantTracks\"\x1d\n\x1bUpdateSubscriptionsResponse\"\xb1\x01\n\x0fSendDataRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12&\n\x04kind\x18\x03 \x01(\x0e\x32\x18.livekit.DataPacket.Kind\x12\x1c\n\x10\x64\x65stination_sids\x18\x04 \x03(\tB\x02\x18\x01\x12\x1e\n\x16\x64\x65stination_identities\x18\x06 \x03(\t\x12\x12\n\x05topic\x18\x05 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_topic\"\x12\n\x10SendDataResponse\";\n\x19UpdateRoomMetadataRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08metadata\x18\x02 \x01(\t2\xe6\x06\n\x0bRoomService\x12\x37\n\nCreateRoom\x12\x1a.livekit.CreateRoomRequest\x1a\r.livekit.Room\x12\x42\n\tListRooms\x12\x19.livekit.ListRoomsRequest\x1a\x1a.livekit.ListRoomsResponse\x12\x45\n\nDeleteRoom\x12\x1a.livekit.DeleteRoomRequest\x1a\x1b.livekit.DeleteRoomResponse\x12W\n\x10ListParticipants\x12 .livekit.ListParticipantsRequest\x1a!.livekit.ListParticipantsResponse\x12L\n\x0eGetParticipant\x12 .livekit.RoomParticipantIdentity\x1a\x18.livekit.ParticipantInfo\x12Y\n\x11RemoveParticipant\x12 .livekit.RoomParticipantIdentity\x1a\".livekit.RemoveParticipantResponse\x12S\n\x12MutePublishedTrack\x12\x1d.livekit.MuteRoomTrackRequest\x1a\x1e.livekit.MuteRoomTrackResponse\x12P\n\x11UpdateParticipant\x12!.livekit.UpdateParticipantRequest\x1a\x18.livekit.ParticipantInfo\x12`\n\x13UpdateSubscriptions\x12#.livekit.UpdateSubscriptionsRequest\x1a$.livekit.UpdateSubscriptionsResponse\x12?\n\x08SendData\x12\x18.livekit.SendDataRequest\x1a\x19.livekit.SendDataResponse\x12G\n\x12UpdateRoomMetadata\x12\".livekit.UpdateRoomMetadataRequest\x1a\r.livekit.RoomBFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x12livekit_room.proto\x12\x07livekit\x1a\x14livekit_models.proto\x1a\x14livekit_egress.proto\"\x81\x02\n\x11\x43reateRoomRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x15\n\rempty_timeout\x18\x02 \x01(\r\x12\x19\n\x11\x64\x65parture_timeout\x18\n \x01(\r\x12\x18\n\x10max_participants\x18\x03 \x01(\r\x12\x0f\n\x07node_id\x18\x04 \x01(\t\x12\x10\n\x08metadata\x18\x05 \x01(\t\x12#\n\x06\x65gress\x18\x06 \x01(\x0b\x32\x13.livekit.RoomEgress\x12\x19\n\x11min_playout_delay\x18\x07 \x01(\r\x12\x19\n\x11max_playout_delay\x18\x08 \x01(\r\x12\x14\n\x0csync_streams\x18\t \x01(\x08\"\x9e\x01\n\nRoomEgress\x12\x31\n\x04room\x18\x01 \x01(\x0b\x32#.livekit.RoomCompositeEgressRequest\x12\x33\n\x0bparticipant\x18\x03 \x01(\x0b\x32\x1e.livekit.AutoParticipantEgress\x12(\n\x06tracks\x18\x02 \x01(\x0b\x32\x18.livekit.AutoTrackEgress\"!\n\x10ListRoomsRequest\x12\r\n\x05names\x18\x01 \x03(\t\"1\n\x11ListRoomsResponse\x12\x1c\n\x05rooms\x18\x01 \x03(\x0b\x32\r.livekit.Room\"!\n\x11\x44\x65leteRoomRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\"\x14\n\x12\x44\x65leteRoomResponse\"\'\n\x17ListParticipantsRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\"J\n\x18ListParticipantsResponse\x12.\n\x0cparticipants\x18\x01 \x03(\x0b\x32\x18.livekit.ParticipantInfo\"9\n\x17RoomParticipantIdentity\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\"\x1b\n\x19RemoveParticipantResponse\"X\n\x14MuteRoomTrackRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x11\n\ttrack_sid\x18\x03 \x01(\t\x12\r\n\x05muted\x18\x04 \x01(\x08\":\n\x15MuteRoomTrackResponse\x12!\n\x05track\x18\x01 \x01(\x0b\x32\x12.livekit.TrackInfo\"\x88\x02\n\x18UpdateParticipantRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x10\n\x08metadata\x18\x03 \x01(\t\x12\x32\n\npermission\x18\x04 \x01(\x0b\x32\x1e.livekit.ParticipantPermission\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x45\n\nattributes\x18\x06 \x03(\x0b\x32\x31.livekit.UpdateParticipantRequest.AttributesEntry\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x9b\x01\n\x1aUpdateSubscriptionsRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x12\n\ntrack_sids\x18\x03 \x03(\t\x12\x11\n\tsubscribe\x18\x04 \x01(\x08\x12\x36\n\x12participant_tracks\x18\x05 \x03(\x0b\x32\x1a.livekit.ParticipantTracks\"\x1d\n\x1bUpdateSubscriptionsResponse\"\xb1\x01\n\x0fSendDataRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12&\n\x04kind\x18\x03 \x01(\x0e\x32\x18.livekit.DataPacket.Kind\x12\x1c\n\x10\x64\x65stination_sids\x18\x04 \x03(\tB\x02\x18\x01\x12\x1e\n\x16\x64\x65stination_identities\x18\x06 \x03(\t\x12\x12\n\x05topic\x18\x05 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_topic\"\x12\n\x10SendDataResponse\";\n\x19UpdateRoomMetadataRequest\x12\x0c\n\x04room\x18\x01 \x01(\t\x12\x10\n\x08metadata\x18\x02 \x01(\t2\xe6\x06\n\x0bRoomService\x12\x37\n\nCreateRoom\x12\x1a.livekit.CreateRoomRequest\x1a\r.livekit.Room\x12\x42\n\tListRooms\x12\x19.livekit.ListRoomsRequest\x1a\x1a.livekit.ListRoomsResponse\x12\x45\n\nDeleteRoom\x12\x1a.livekit.DeleteRoomRequest\x1a\x1b.livekit.DeleteRoomResponse\x12W\n\x10ListParticipants\x12 .livekit.ListParticipantsRequest\x1a!.livekit.ListParticipantsResponse\x12L\n\x0eGetParticipant\x12 .livekit.RoomParticipantIdentity\x1a\x18.livekit.ParticipantInfo\x12Y\n\x11RemoveParticipant\x12 .livekit.RoomParticipantIdentity\x1a\".livekit.RemoveParticipantResponse\x12S\n\x12MutePublishedTrack\x12\x1d.livekit.MuteRoomTrackRequest\x1a\x1e.livekit.MuteRoomTrackResponse\x12P\n\x11UpdateParticipant\x12!.livekit.UpdateParticipantRequest\x1a\x18.livekit.ParticipantInfo\x12`\n\x13UpdateSubscriptions\x12#.livekit.UpdateSubscriptionsRequest\x1a$.livekit.UpdateSubscriptionsResponse\x12?\n\x08SendData\x12\x18.livekit.SendDataRequest\x1a\x19.livekit.SendDataResponse\x12G\n\x12UpdateRoomMetadata\x12\".livekit.UpdateRoomMetadataRequest\x1a\r.livekit.RoomBFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'room', _globals) if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None - _globals['DESCRIPTOR']._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' - _globals['_SENDDATAREQUEST'].fields_by_name['destination_sids']._options = None - _globals['_SENDDATAREQUEST'].fields_by_name['destination_sids']._serialized_options = b'\030\001' + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' + _UPDATEPARTICIPANTREQUEST_ATTRIBUTESENTRY._options = None + _UPDATEPARTICIPANTREQUEST_ATTRIBUTESENTRY._serialized_options = b'8\001' + _SENDDATAREQUEST.fields_by_name['destination_sids']._options = None + _SENDDATAREQUEST.fields_by_name['destination_sids']._serialized_options = b'\030\001' _globals['_CREATEROOMREQUEST']._serialized_start=76 _globals['_CREATEROOMREQUEST']._serialized_end=333 _globals['_ROOMEGRESS']._serialized_start=336 @@ -51,17 +53,19 @@ _globals['_MUTEROOMTRACKRESPONSE']._serialized_start=934 _globals['_MUTEROOMTRACKRESPONSE']._serialized_end=992 _globals['_UPDATEPARTICIPANTREQUEST']._serialized_start=995 - _globals['_UPDATEPARTICIPANTREQUEST']._serialized_end=1137 - _globals['_UPDATESUBSCRIPTIONSREQUEST']._serialized_start=1140 - _globals['_UPDATESUBSCRIPTIONSREQUEST']._serialized_end=1295 - _globals['_UPDATESUBSCRIPTIONSRESPONSE']._serialized_start=1297 - _globals['_UPDATESUBSCRIPTIONSRESPONSE']._serialized_end=1326 - _globals['_SENDDATAREQUEST']._serialized_start=1329 - _globals['_SENDDATAREQUEST']._serialized_end=1506 - _globals['_SENDDATARESPONSE']._serialized_start=1508 - _globals['_SENDDATARESPONSE']._serialized_end=1526 - _globals['_UPDATEROOMMETADATAREQUEST']._serialized_start=1528 - _globals['_UPDATEROOMMETADATAREQUEST']._serialized_end=1587 - _globals['_ROOMSERVICE']._serialized_start=1590 - _globals['_ROOMSERVICE']._serialized_end=2460 + _globals['_UPDATEPARTICIPANTREQUEST']._serialized_end=1259 + _globals['_UPDATEPARTICIPANTREQUEST_ATTRIBUTESENTRY']._serialized_start=1210 + _globals['_UPDATEPARTICIPANTREQUEST_ATTRIBUTESENTRY']._serialized_end=1259 + _globals['_UPDATESUBSCRIPTIONSREQUEST']._serialized_start=1262 + _globals['_UPDATESUBSCRIPTIONSREQUEST']._serialized_end=1417 + _globals['_UPDATESUBSCRIPTIONSRESPONSE']._serialized_start=1419 + _globals['_UPDATESUBSCRIPTIONSRESPONSE']._serialized_end=1448 + _globals['_SENDDATAREQUEST']._serialized_start=1451 + _globals['_SENDDATAREQUEST']._serialized_end=1628 + _globals['_SENDDATARESPONSE']._serialized_start=1630 + _globals['_SENDDATARESPONSE']._serialized_end=1648 + _globals['_UPDATEROOMMETADATAREQUEST']._serialized_start=1650 + _globals['_UPDATEROOMMETADATAREQUEST']._serialized_end=1709 + _globals['_ROOMSERVICE']._serialized_start=1712 + _globals['_ROOMSERVICE']._serialized_end=2582 # @@protoc_insertion_point(module_scope) diff --git a/livekit-protocol/livekit/protocol/room.pyi b/livekit-protocol/livekit/protocol/room.pyi index b38a4554..b4247f13 100644 --- a/livekit-protocol/livekit/protocol/room.pyi +++ b/livekit-protocol/livekit/protocol/room.pyi @@ -8,7 +8,7 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map DESCRIPTOR: _descriptor.FileDescriptor class CreateRoomRequest(_message.Message): - __slots__ = ("name", "empty_timeout", "departure_timeout", "max_participants", "node_id", "metadata", "egress", "min_playout_delay", "max_playout_delay", "sync_streams") + __slots__ = ["name", "empty_timeout", "departure_timeout", "max_participants", "node_id", "metadata", "egress", "min_playout_delay", "max_playout_delay", "sync_streams"] NAME_FIELD_NUMBER: _ClassVar[int] EMPTY_TIMEOUT_FIELD_NUMBER: _ClassVar[int] DEPARTURE_TIMEOUT_FIELD_NUMBER: _ClassVar[int] @@ -32,7 +32,7 @@ class CreateRoomRequest(_message.Message): def __init__(self, name: _Optional[str] = ..., empty_timeout: _Optional[int] = ..., departure_timeout: _Optional[int] = ..., max_participants: _Optional[int] = ..., node_id: _Optional[str] = ..., metadata: _Optional[str] = ..., egress: _Optional[_Union[RoomEgress, _Mapping]] = ..., min_playout_delay: _Optional[int] = ..., max_playout_delay: _Optional[int] = ..., sync_streams: bool = ...) -> None: ... class RoomEgress(_message.Message): - __slots__ = ("room", "participant", "tracks") + __slots__ = ["room", "participant", "tracks"] ROOM_FIELD_NUMBER: _ClassVar[int] PARTICIPANT_FIELD_NUMBER: _ClassVar[int] TRACKS_FIELD_NUMBER: _ClassVar[int] @@ -42,41 +42,41 @@ class RoomEgress(_message.Message): def __init__(self, room: _Optional[_Union[_egress.RoomCompositeEgressRequest, _Mapping]] = ..., participant: _Optional[_Union[_egress.AutoParticipantEgress, _Mapping]] = ..., tracks: _Optional[_Union[_egress.AutoTrackEgress, _Mapping]] = ...) -> None: ... class ListRoomsRequest(_message.Message): - __slots__ = ("names",) + __slots__ = ["names"] NAMES_FIELD_NUMBER: _ClassVar[int] names: _containers.RepeatedScalarFieldContainer[str] def __init__(self, names: _Optional[_Iterable[str]] = ...) -> None: ... class ListRoomsResponse(_message.Message): - __slots__ = ("rooms",) + __slots__ = ["rooms"] ROOMS_FIELD_NUMBER: _ClassVar[int] rooms: _containers.RepeatedCompositeFieldContainer[_models.Room] def __init__(self, rooms: _Optional[_Iterable[_Union[_models.Room, _Mapping]]] = ...) -> None: ... class DeleteRoomRequest(_message.Message): - __slots__ = ("room",) + __slots__ = ["room"] ROOM_FIELD_NUMBER: _ClassVar[int] room: str def __init__(self, room: _Optional[str] = ...) -> None: ... class DeleteRoomResponse(_message.Message): - __slots__ = () + __slots__ = [] def __init__(self) -> None: ... class ListParticipantsRequest(_message.Message): - __slots__ = ("room",) + __slots__ = ["room"] ROOM_FIELD_NUMBER: _ClassVar[int] room: str def __init__(self, room: _Optional[str] = ...) -> None: ... class ListParticipantsResponse(_message.Message): - __slots__ = ("participants",) + __slots__ = ["participants"] PARTICIPANTS_FIELD_NUMBER: _ClassVar[int] participants: _containers.RepeatedCompositeFieldContainer[_models.ParticipantInfo] def __init__(self, participants: _Optional[_Iterable[_Union[_models.ParticipantInfo, _Mapping]]] = ...) -> None: ... class RoomParticipantIdentity(_message.Message): - __slots__ = ("room", "identity") + __slots__ = ["room", "identity"] ROOM_FIELD_NUMBER: _ClassVar[int] IDENTITY_FIELD_NUMBER: _ClassVar[int] room: str @@ -84,11 +84,11 @@ class RoomParticipantIdentity(_message.Message): def __init__(self, room: _Optional[str] = ..., identity: _Optional[str] = ...) -> None: ... class RemoveParticipantResponse(_message.Message): - __slots__ = () + __slots__ = [] def __init__(self) -> None: ... class MuteRoomTrackRequest(_message.Message): - __slots__ = ("room", "identity", "track_sid", "muted") + __slots__ = ["room", "identity", "track_sid", "muted"] ROOM_FIELD_NUMBER: _ClassVar[int] IDENTITY_FIELD_NUMBER: _ClassVar[int] TRACK_SID_FIELD_NUMBER: _ClassVar[int] @@ -100,27 +100,36 @@ class MuteRoomTrackRequest(_message.Message): def __init__(self, room: _Optional[str] = ..., identity: _Optional[str] = ..., track_sid: _Optional[str] = ..., muted: bool = ...) -> None: ... class MuteRoomTrackResponse(_message.Message): - __slots__ = ("track",) + __slots__ = ["track"] TRACK_FIELD_NUMBER: _ClassVar[int] track: _models.TrackInfo def __init__(self, track: _Optional[_Union[_models.TrackInfo, _Mapping]] = ...) -> None: ... class UpdateParticipantRequest(_message.Message): - __slots__ = ("room", "identity", "metadata", "permission", "name") + __slots__ = ["room", "identity", "metadata", "permission", "name", "attributes"] + class AttributesEntry(_message.Message): + __slots__ = ["key", "value"] + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... ROOM_FIELD_NUMBER: _ClassVar[int] IDENTITY_FIELD_NUMBER: _ClassVar[int] METADATA_FIELD_NUMBER: _ClassVar[int] PERMISSION_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] + ATTRIBUTES_FIELD_NUMBER: _ClassVar[int] room: str identity: str metadata: str permission: _models.ParticipantPermission name: str - def __init__(self, room: _Optional[str] = ..., identity: _Optional[str] = ..., metadata: _Optional[str] = ..., permission: _Optional[_Union[_models.ParticipantPermission, _Mapping]] = ..., name: _Optional[str] = ...) -> None: ... + attributes: _containers.ScalarMap[str, str] + def __init__(self, room: _Optional[str] = ..., identity: _Optional[str] = ..., metadata: _Optional[str] = ..., permission: _Optional[_Union[_models.ParticipantPermission, _Mapping]] = ..., name: _Optional[str] = ..., attributes: _Optional[_Mapping[str, str]] = ...) -> None: ... class UpdateSubscriptionsRequest(_message.Message): - __slots__ = ("room", "identity", "track_sids", "subscribe", "participant_tracks") + __slots__ = ["room", "identity", "track_sids", "subscribe", "participant_tracks"] ROOM_FIELD_NUMBER: _ClassVar[int] IDENTITY_FIELD_NUMBER: _ClassVar[int] TRACK_SIDS_FIELD_NUMBER: _ClassVar[int] @@ -134,11 +143,11 @@ class UpdateSubscriptionsRequest(_message.Message): def __init__(self, room: _Optional[str] = ..., identity: _Optional[str] = ..., track_sids: _Optional[_Iterable[str]] = ..., subscribe: bool = ..., participant_tracks: _Optional[_Iterable[_Union[_models.ParticipantTracks, _Mapping]]] = ...) -> None: ... class UpdateSubscriptionsResponse(_message.Message): - __slots__ = () + __slots__ = [] def __init__(self) -> None: ... class SendDataRequest(_message.Message): - __slots__ = ("room", "data", "kind", "destination_sids", "destination_identities", "topic") + __slots__ = ["room", "data", "kind", "destination_sids", "destination_identities", "topic"] ROOM_FIELD_NUMBER: _ClassVar[int] DATA_FIELD_NUMBER: _ClassVar[int] KIND_FIELD_NUMBER: _ClassVar[int] @@ -154,11 +163,11 @@ class SendDataRequest(_message.Message): def __init__(self, room: _Optional[str] = ..., data: _Optional[bytes] = ..., kind: _Optional[_Union[_models.DataPacket.Kind, str]] = ..., destination_sids: _Optional[_Iterable[str]] = ..., destination_identities: _Optional[_Iterable[str]] = ..., topic: _Optional[str] = ...) -> None: ... class SendDataResponse(_message.Message): - __slots__ = () + __slots__ = [] def __init__(self) -> None: ... class UpdateRoomMetadataRequest(_message.Message): - __slots__ = ("room", "metadata") + __slots__ = ["room", "metadata"] ROOM_FIELD_NUMBER: _ClassVar[int] METADATA_FIELD_NUMBER: _ClassVar[int] room: str diff --git a/livekit-protocol/livekit/protocol/sip.py b/livekit-protocol/livekit/protocol/sip.py index 4fc08e3b..0d40cf35 100644 --- a/livekit-protocol/livekit/protocol/sip.py +++ b/livekit-protocol/livekit/protocol/sip.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_sip.proto -# Protobuf Python Version: 4.25.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -14,48 +13,93 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11livekit_sip.proto\x12\x07livekit\"\x8b\x02\n\x15\x43reateSIPTrunkRequest\x12\x19\n\x11inbound_addresses\x18\x01 \x03(\t\x12\x18\n\x10outbound_address\x18\x02 \x01(\t\x12\x17\n\x0foutbound_number\x18\x03 \x01(\t\x12!\n\x15inbound_numbers_regex\x18\x04 \x03(\tB\x02\x18\x01\x12\x17\n\x0finbound_numbers\x18\t \x03(\t\x12\x18\n\x10inbound_username\x18\x05 \x01(\t\x12\x18\n\x10inbound_password\x18\x06 \x01(\t\x12\x19\n\x11outbound_username\x18\x07 \x01(\t\x12\x19\n\x11outbound_password\x18\x08 \x01(\t\"\x98\x02\n\x0cSIPTrunkInfo\x12\x14\n\x0csip_trunk_id\x18\x01 \x01(\t\x12\x19\n\x11inbound_addresses\x18\x02 \x03(\t\x12\x18\n\x10outbound_address\x18\x03 \x01(\t\x12\x17\n\x0foutbound_number\x18\x04 \x01(\t\x12!\n\x15inbound_numbers_regex\x18\x05 \x03(\tB\x02\x18\x01\x12\x17\n\x0finbound_numbers\x18\n \x03(\t\x12\x18\n\x10inbound_username\x18\x06 \x01(\t\x12\x18\n\x10inbound_password\x18\x07 \x01(\t\x12\x19\n\x11outbound_username\x18\x08 \x01(\t\x12\x19\n\x11outbound_password\x18\t \x01(\t\"\x15\n\x13ListSIPTrunkRequest\"<\n\x14ListSIPTrunkResponse\x12$\n\x05items\x18\x01 \x03(\x0b\x32\x15.livekit.SIPTrunkInfo\"-\n\x15\x44\x65leteSIPTrunkRequest\x12\x14\n\x0csip_trunk_id\x18\x01 \x01(\t\"7\n\x15SIPDispatchRuleDirect\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x0b\n\x03pin\x18\x02 \x01(\t\"=\n\x19SIPDispatchRuleIndividual\x12\x13\n\x0broom_prefix\x18\x01 \x01(\t\x12\x0b\n\x03pin\x18\x02 \x01(\t\"\xa1\x01\n\x0fSIPDispatchRule\x12>\n\x14\x64ispatch_rule_direct\x18\x01 \x01(\x0b\x32\x1e.livekit.SIPDispatchRuleDirectH\x00\x12\x46\n\x18\x64ispatch_rule_individual\x18\x02 \x01(\x0b\x32\".livekit.SIPDispatchRuleIndividualH\x00\x42\x06\n\x04rule\"t\n\x1c\x43reateSIPDispatchRuleRequest\x12&\n\x04rule\x18\x01 \x01(\x0b\x32\x18.livekit.SIPDispatchRule\x12\x11\n\ttrunk_ids\x18\x02 \x03(\t\x12\x19\n\x11hide_phone_number\x18\x03 \x01(\x08\"\x89\x01\n\x13SIPDispatchRuleInfo\x12\x1c\n\x14sip_dispatch_rule_id\x18\x01 \x01(\t\x12&\n\x04rule\x18\x02 \x01(\x0b\x32\x18.livekit.SIPDispatchRule\x12\x11\n\ttrunk_ids\x18\x03 \x03(\t\x12\x19\n\x11hide_phone_number\x18\x04 \x01(\x08\"\x1c\n\x1aListSIPDispatchRuleRequest\"J\n\x1bListSIPDispatchRuleResponse\x12+\n\x05items\x18\x01 \x03(\x0b\x32\x1c.livekit.SIPDispatchRuleInfo\"<\n\x1c\x44\x65leteSIPDispatchRuleRequest\x12\x1c\n\x14sip_dispatch_rule_id\x18\x01 \x01(\t\"\x9e\x01\n\x1b\x43reateSIPParticipantRequest\x12\x14\n\x0csip_trunk_id\x18\x01 \x01(\t\x12\x13\n\x0bsip_call_to\x18\x02 \x01(\t\x12\x11\n\troom_name\x18\x03 \x01(\t\x12\x1c\n\x14participant_identity\x18\x04 \x01(\t\x12\x0c\n\x04\x64tmf\x18\x05 \x01(\t\x12\x15\n\rplay_ringtone\x18\x06 \x01(\x08\"]\n\x12SIPParticipantInfo\x12\x16\n\x0eparticipant_id\x18\x01 \x01(\t\x12\x1c\n\x14participant_identity\x18\x02 \x01(\t\x12\x11\n\troom_name\x18\x03 \x01(\t2\xdd\x04\n\x03SIP\x12G\n\x0e\x43reateSIPTrunk\x12\x1e.livekit.CreateSIPTrunkRequest\x1a\x15.livekit.SIPTrunkInfo\x12K\n\x0cListSIPTrunk\x12\x1c.livekit.ListSIPTrunkRequest\x1a\x1d.livekit.ListSIPTrunkResponse\x12G\n\x0e\x44\x65leteSIPTrunk\x12\x1e.livekit.DeleteSIPTrunkRequest\x1a\x15.livekit.SIPTrunkInfo\x12\\\n\x15\x43reateSIPDispatchRule\x12%.livekit.CreateSIPDispatchRuleRequest\x1a\x1c.livekit.SIPDispatchRuleInfo\x12`\n\x13ListSIPDispatchRule\x12#.livekit.ListSIPDispatchRuleRequest\x1a$.livekit.ListSIPDispatchRuleResponse\x12\\\n\x15\x44\x65leteSIPDispatchRule\x12%.livekit.DeleteSIPDispatchRuleRequest\x1a\x1c.livekit.SIPDispatchRuleInfo\x12Y\n\x14\x43reateSIPParticipant\x12$.livekit.CreateSIPParticipantRequest\x1a\x1b.livekit.SIPParticipantInfoBFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11livekit_sip.proto\x12\x07livekit\"\xaf\x02\n\x15\x43reateSIPTrunkRequest\x12\x19\n\x11inbound_addresses\x18\x01 \x03(\t\x12\x18\n\x10outbound_address\x18\x02 \x01(\t\x12\x17\n\x0foutbound_number\x18\x03 \x01(\t\x12!\n\x15inbound_numbers_regex\x18\x04 \x03(\tB\x02\x18\x01\x12\x17\n\x0finbound_numbers\x18\t \x03(\t\x12\x18\n\x10inbound_username\x18\x05 \x01(\t\x12\x18\n\x10inbound_password\x18\x06 \x01(\t\x12\x19\n\x11outbound_username\x18\x07 \x01(\t\x12\x19\n\x11outbound_password\x18\x08 \x01(\t\x12\x0c\n\x04name\x18\n \x01(\t\x12\x10\n\x08metadata\x18\x0b \x01(\t:\x02\x18\x01\"\xdb\x03\n\x0cSIPTrunkInfo\x12\x14\n\x0csip_trunk_id\x18\x01 \x01(\t\x12-\n\x04kind\x18\x0e \x01(\x0e\x32\x1f.livekit.SIPTrunkInfo.TrunkKind\x12\x19\n\x11inbound_addresses\x18\x02 \x03(\t\x12\x18\n\x10outbound_address\x18\x03 \x01(\t\x12\x17\n\x0foutbound_number\x18\x04 \x01(\t\x12(\n\ttransport\x18\r \x01(\x0e\x32\x15.livekit.SIPTransport\x12!\n\x15inbound_numbers_regex\x18\x05 \x03(\tB\x02\x18\x01\x12\x17\n\x0finbound_numbers\x18\n \x03(\t\x12\x18\n\x10inbound_username\x18\x06 \x01(\t\x12\x18\n\x10inbound_password\x18\x07 \x01(\t\x12\x19\n\x11outbound_username\x18\x08 \x01(\t\x12\x19\n\x11outbound_password\x18\t \x01(\t\x12\x0c\n\x04name\x18\x0b \x01(\t\x12\x10\n\x08metadata\x18\x0c \x01(\t\"D\n\tTrunkKind\x12\x10\n\x0cTRUNK_LEGACY\x10\x00\x12\x11\n\rTRUNK_INBOUND\x10\x01\x12\x12\n\x0eTRUNK_OUTBOUND\x10\x02:\x02\x18\x01\"K\n\x1c\x43reateSIPInboundTrunkRequest\x12+\n\x05trunk\x18\x01 \x01(\x0b\x32\x1c.livekit.SIPInboundTrunkInfo\"\xbe\x01\n\x13SIPInboundTrunkInfo\x12\x14\n\x0csip_trunk_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08metadata\x18\x03 \x01(\t\x12\x0f\n\x07numbers\x18\x04 \x03(\t\x12\x19\n\x11\x61llowed_addresses\x18\x05 \x03(\t\x12\x17\n\x0f\x61llowed_numbers\x18\x06 \x03(\t\x12\x15\n\rauth_username\x18\x07 \x01(\t\x12\x15\n\rauth_password\x18\x08 \x01(\t\"M\n\x1d\x43reateSIPOutboundTrunkRequest\x12,\n\x05trunk\x18\x01 \x01(\x0b\x32\x1d.livekit.SIPOutboundTrunkInfo\"\xc6\x01\n\x14SIPOutboundTrunkInfo\x12\x14\n\x0csip_trunk_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08metadata\x18\x03 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\x04 \x01(\t\x12(\n\ttransport\x18\x05 \x01(\x0e\x32\x15.livekit.SIPTransport\x12\x0f\n\x07numbers\x18\x06 \x03(\t\x12\x15\n\rauth_username\x18\x07 \x01(\t\x12\x15\n\rauth_password\x18\x08 \x01(\t\"\x19\n\x13ListSIPTrunkRequest:\x02\x18\x01\"@\n\x14ListSIPTrunkResponse\x12$\n\x05items\x18\x01 \x03(\x0b\x32\x15.livekit.SIPTrunkInfo:\x02\x18\x01\"\x1c\n\x1aListSIPInboundTrunkRequest\"J\n\x1bListSIPInboundTrunkResponse\x12+\n\x05items\x18\x01 \x03(\x0b\x32\x1c.livekit.SIPInboundTrunkInfo\"\x1d\n\x1bListSIPOutboundTrunkRequest\"L\n\x1cListSIPOutboundTrunkResponse\x12,\n\x05items\x18\x01 \x03(\x0b\x32\x1d.livekit.SIPOutboundTrunkInfo\"-\n\x15\x44\x65leteSIPTrunkRequest\x12\x14\n\x0csip_trunk_id\x18\x01 \x01(\t\"7\n\x15SIPDispatchRuleDirect\x12\x11\n\troom_name\x18\x01 \x01(\t\x12\x0b\n\x03pin\x18\x02 \x01(\t\"=\n\x19SIPDispatchRuleIndividual\x12\x13\n\x0broom_prefix\x18\x01 \x01(\t\x12\x0b\n\x03pin\x18\x02 \x01(\t\"\xa1\x01\n\x0fSIPDispatchRule\x12>\n\x14\x64ispatch_rule_direct\x18\x01 \x01(\x0b\x32\x1e.livekit.SIPDispatchRuleDirectH\x00\x12\x46\n\x18\x64ispatch_rule_individual\x18\x02 \x01(\x0b\x32\".livekit.SIPDispatchRuleIndividualH\x00\x42\x06\n\x04rule\"\xab\x02\n\x1c\x43reateSIPDispatchRuleRequest\x12&\n\x04rule\x18\x01 \x01(\x0b\x32\x18.livekit.SIPDispatchRule\x12\x11\n\ttrunk_ids\x18\x02 \x03(\t\x12\x19\n\x11hide_phone_number\x18\x03 \x01(\x08\x12\x17\n\x0finbound_numbers\x18\x06 \x03(\t\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x10\n\x08metadata\x18\x05 \x01(\t\x12I\n\nattributes\x18\x07 \x03(\x0b\x32\x35.livekit.CreateSIPDispatchRuleRequest.AttributesEntry\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xb7\x02\n\x13SIPDispatchRuleInfo\x12\x1c\n\x14sip_dispatch_rule_id\x18\x01 \x01(\t\x12&\n\x04rule\x18\x02 \x01(\x0b\x32\x18.livekit.SIPDispatchRule\x12\x11\n\ttrunk_ids\x18\x03 \x03(\t\x12\x19\n\x11hide_phone_number\x18\x04 \x01(\x08\x12\x17\n\x0finbound_numbers\x18\x07 \x03(\t\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x10\n\x08metadata\x18\x06 \x01(\t\x12@\n\nattributes\x18\x08 \x03(\x0b\x32,.livekit.SIPDispatchRuleInfo.AttributesEntry\x1a\x31\n\x0f\x41ttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x1c\n\x1aListSIPDispatchRuleRequest\"J\n\x1bListSIPDispatchRuleResponse\x12+\n\x05items\x18\x01 \x03(\x0b\x32\x1c.livekit.SIPDispatchRuleInfo\"<\n\x1c\x44\x65leteSIPDispatchRuleRequest\x12\x1c\n\x14sip_dispatch_rule_id\x18\x01 \x01(\t\"\x90\x03\n\x1b\x43reateSIPParticipantRequest\x12\x14\n\x0csip_trunk_id\x18\x01 \x01(\t\x12\x13\n\x0bsip_call_to\x18\x02 \x01(\t\x12\x11\n\troom_name\x18\x03 \x01(\t\x12\x1c\n\x14participant_identity\x18\x04 \x01(\t\x12\x18\n\x10participant_name\x18\x07 \x01(\t\x12\x1c\n\x14participant_metadata\x18\x08 \x01(\t\x12_\n\x16participant_attributes\x18\t \x03(\x0b\x32?.livekit.CreateSIPParticipantRequest.ParticipantAttributesEntry\x12\x0c\n\x04\x64tmf\x18\x05 \x01(\t\x12\x15\n\rplay_ringtone\x18\x06 \x01(\x08\x12\x19\n\x11hide_phone_number\x18\n \x01(\x08\x1a<\n\x1aParticipantAttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"r\n\x12SIPParticipantInfo\x12\x16\n\x0eparticipant_id\x18\x01 \x01(\t\x12\x1c\n\x14participant_identity\x18\x02 \x01(\t\x12\x11\n\troom_name\x18\x03 \x01(\t\x12\x13\n\x0bsip_call_id\x18\x04 \x01(\t*k\n\x0cSIPTransport\x12\x16\n\x12SIP_TRANSPORT_AUTO\x10\x00\x12\x15\n\x11SIP_TRANSPORT_UDP\x10\x01\x12\x15\n\x11SIP_TRANSPORT_TCP\x10\x02\x12\x15\n\x11SIP_TRANSPORT_TLS\x10\x03\x32\xed\x07\n\x03SIP\x12L\n\x0e\x43reateSIPTrunk\x12\x1e.livekit.CreateSIPTrunkRequest\x1a\x15.livekit.SIPTrunkInfo\"\x03\x88\x02\x01\x12P\n\x0cListSIPTrunk\x12\x1c.livekit.ListSIPTrunkRequest\x1a\x1d.livekit.ListSIPTrunkResponse\"\x03\x88\x02\x01\x12\\\n\x15\x43reateSIPInboundTrunk\x12%.livekit.CreateSIPInboundTrunkRequest\x1a\x1c.livekit.SIPInboundTrunkInfo\x12_\n\x16\x43reateSIPOutboundTrunk\x12&.livekit.CreateSIPOutboundTrunkRequest\x1a\x1d.livekit.SIPOutboundTrunkInfo\x12`\n\x13ListSIPInboundTrunk\x12#.livekit.ListSIPInboundTrunkRequest\x1a$.livekit.ListSIPInboundTrunkResponse\x12\x63\n\x14ListSIPOutboundTrunk\x12$.livekit.ListSIPOutboundTrunkRequest\x1a%.livekit.ListSIPOutboundTrunkResponse\x12G\n\x0e\x44\x65leteSIPTrunk\x12\x1e.livekit.DeleteSIPTrunkRequest\x1a\x15.livekit.SIPTrunkInfo\x12\\\n\x15\x43reateSIPDispatchRule\x12%.livekit.CreateSIPDispatchRuleRequest\x1a\x1c.livekit.SIPDispatchRuleInfo\x12`\n\x13ListSIPDispatchRule\x12#.livekit.ListSIPDispatchRuleRequest\x1a$.livekit.ListSIPDispatchRuleResponse\x12\\\n\x15\x44\x65leteSIPDispatchRule\x12%.livekit.DeleteSIPDispatchRuleRequest\x1a\x1c.livekit.SIPDispatchRuleInfo\x12Y\n\x14\x43reateSIPParticipant\x12$.livekit.CreateSIPParticipantRequest\x1a\x1b.livekit.SIPParticipantInfoBFZ#github.com/livekit/protocol/livekit\xaa\x02\rLiveKit.Proto\xea\x02\x0eLiveKit::Protob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'sip', _globals) if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None - _globals['DESCRIPTOR']._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' - _globals['_CREATESIPTRUNKREQUEST'].fields_by_name['inbound_numbers_regex']._options = None - _globals['_CREATESIPTRUNKREQUEST'].fields_by_name['inbound_numbers_regex']._serialized_options = b'\030\001' - _globals['_SIPTRUNKINFO'].fields_by_name['inbound_numbers_regex']._options = None - _globals['_SIPTRUNKINFO'].fields_by_name['inbound_numbers_regex']._serialized_options = b'\030\001' + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' + _CREATESIPTRUNKREQUEST.fields_by_name['inbound_numbers_regex']._options = None + _CREATESIPTRUNKREQUEST.fields_by_name['inbound_numbers_regex']._serialized_options = b'\030\001' + _CREATESIPTRUNKREQUEST._options = None + _CREATESIPTRUNKREQUEST._serialized_options = b'\030\001' + _SIPTRUNKINFO.fields_by_name['inbound_numbers_regex']._options = None + _SIPTRUNKINFO.fields_by_name['inbound_numbers_regex']._serialized_options = b'\030\001' + _SIPTRUNKINFO._options = None + _SIPTRUNKINFO._serialized_options = b'\030\001' + _LISTSIPTRUNKREQUEST._options = None + _LISTSIPTRUNKREQUEST._serialized_options = b'\030\001' + _LISTSIPTRUNKRESPONSE._options = None + _LISTSIPTRUNKRESPONSE._serialized_options = b'\030\001' + _CREATESIPDISPATCHRULEREQUEST_ATTRIBUTESENTRY._options = None + _CREATESIPDISPATCHRULEREQUEST_ATTRIBUTESENTRY._serialized_options = b'8\001' + _SIPDISPATCHRULEINFO_ATTRIBUTESENTRY._options = None + _SIPDISPATCHRULEINFO_ATTRIBUTESENTRY._serialized_options = b'8\001' + _CREATESIPPARTICIPANTREQUEST_PARTICIPANTATTRIBUTESENTRY._options = None + _CREATESIPPARTICIPANTREQUEST_PARTICIPANTATTRIBUTESENTRY._serialized_options = b'8\001' + _SIP.methods_by_name['CreateSIPTrunk']._options = None + _SIP.methods_by_name['CreateSIPTrunk']._serialized_options = b'\210\002\001' + _SIP.methods_by_name['ListSIPTrunk']._options = None + _SIP.methods_by_name['ListSIPTrunk']._serialized_options = b'\210\002\001' + _globals['_SIPTRANSPORT']._serialized_start=3306 + _globals['_SIPTRANSPORT']._serialized_end=3413 _globals['_CREATESIPTRUNKREQUEST']._serialized_start=31 - _globals['_CREATESIPTRUNKREQUEST']._serialized_end=298 - _globals['_SIPTRUNKINFO']._serialized_start=301 - _globals['_SIPTRUNKINFO']._serialized_end=581 - _globals['_LISTSIPTRUNKREQUEST']._serialized_start=583 - _globals['_LISTSIPTRUNKREQUEST']._serialized_end=604 - _globals['_LISTSIPTRUNKRESPONSE']._serialized_start=606 - _globals['_LISTSIPTRUNKRESPONSE']._serialized_end=666 - _globals['_DELETESIPTRUNKREQUEST']._serialized_start=668 - _globals['_DELETESIPTRUNKREQUEST']._serialized_end=713 - _globals['_SIPDISPATCHRULEDIRECT']._serialized_start=715 - _globals['_SIPDISPATCHRULEDIRECT']._serialized_end=770 - _globals['_SIPDISPATCHRULEINDIVIDUAL']._serialized_start=772 - _globals['_SIPDISPATCHRULEINDIVIDUAL']._serialized_end=833 - _globals['_SIPDISPATCHRULE']._serialized_start=836 - _globals['_SIPDISPATCHRULE']._serialized_end=997 - _globals['_CREATESIPDISPATCHRULEREQUEST']._serialized_start=999 - _globals['_CREATESIPDISPATCHRULEREQUEST']._serialized_end=1115 - _globals['_SIPDISPATCHRULEINFO']._serialized_start=1118 - _globals['_SIPDISPATCHRULEINFO']._serialized_end=1255 - _globals['_LISTSIPDISPATCHRULEREQUEST']._serialized_start=1257 - _globals['_LISTSIPDISPATCHRULEREQUEST']._serialized_end=1285 - _globals['_LISTSIPDISPATCHRULERESPONSE']._serialized_start=1287 - _globals['_LISTSIPDISPATCHRULERESPONSE']._serialized_end=1361 - _globals['_DELETESIPDISPATCHRULEREQUEST']._serialized_start=1363 - _globals['_DELETESIPDISPATCHRULEREQUEST']._serialized_end=1423 - _globals['_CREATESIPPARTICIPANTREQUEST']._serialized_start=1426 - _globals['_CREATESIPPARTICIPANTREQUEST']._serialized_end=1584 - _globals['_SIPPARTICIPANTINFO']._serialized_start=1586 - _globals['_SIPPARTICIPANTINFO']._serialized_end=1679 - _globals['_SIP']._serialized_start=1682 - _globals['_SIP']._serialized_end=2287 + _globals['_CREATESIPTRUNKREQUEST']._serialized_end=334 + _globals['_SIPTRUNKINFO']._serialized_start=337 + _globals['_SIPTRUNKINFO']._serialized_end=812 + _globals['_SIPTRUNKINFO_TRUNKKIND']._serialized_start=740 + _globals['_SIPTRUNKINFO_TRUNKKIND']._serialized_end=808 + _globals['_CREATESIPINBOUNDTRUNKREQUEST']._serialized_start=814 + _globals['_CREATESIPINBOUNDTRUNKREQUEST']._serialized_end=889 + _globals['_SIPINBOUNDTRUNKINFO']._serialized_start=892 + _globals['_SIPINBOUNDTRUNKINFO']._serialized_end=1082 + _globals['_CREATESIPOUTBOUNDTRUNKREQUEST']._serialized_start=1084 + _globals['_CREATESIPOUTBOUNDTRUNKREQUEST']._serialized_end=1161 + _globals['_SIPOUTBOUNDTRUNKINFO']._serialized_start=1164 + _globals['_SIPOUTBOUNDTRUNKINFO']._serialized_end=1362 + _globals['_LISTSIPTRUNKREQUEST']._serialized_start=1364 + _globals['_LISTSIPTRUNKREQUEST']._serialized_end=1389 + _globals['_LISTSIPTRUNKRESPONSE']._serialized_start=1391 + _globals['_LISTSIPTRUNKRESPONSE']._serialized_end=1455 + _globals['_LISTSIPINBOUNDTRUNKREQUEST']._serialized_start=1457 + _globals['_LISTSIPINBOUNDTRUNKREQUEST']._serialized_end=1485 + _globals['_LISTSIPINBOUNDTRUNKRESPONSE']._serialized_start=1487 + _globals['_LISTSIPINBOUNDTRUNKRESPONSE']._serialized_end=1561 + _globals['_LISTSIPOUTBOUNDTRUNKREQUEST']._serialized_start=1563 + _globals['_LISTSIPOUTBOUNDTRUNKREQUEST']._serialized_end=1592 + _globals['_LISTSIPOUTBOUNDTRUNKRESPONSE']._serialized_start=1594 + _globals['_LISTSIPOUTBOUNDTRUNKRESPONSE']._serialized_end=1670 + _globals['_DELETESIPTRUNKREQUEST']._serialized_start=1672 + _globals['_DELETESIPTRUNKREQUEST']._serialized_end=1717 + _globals['_SIPDISPATCHRULEDIRECT']._serialized_start=1719 + _globals['_SIPDISPATCHRULEDIRECT']._serialized_end=1774 + _globals['_SIPDISPATCHRULEINDIVIDUAL']._serialized_start=1776 + _globals['_SIPDISPATCHRULEINDIVIDUAL']._serialized_end=1837 + _globals['_SIPDISPATCHRULE']._serialized_start=1840 + _globals['_SIPDISPATCHRULE']._serialized_end=2001 + _globals['_CREATESIPDISPATCHRULEREQUEST']._serialized_start=2004 + _globals['_CREATESIPDISPATCHRULEREQUEST']._serialized_end=2303 + _globals['_CREATESIPDISPATCHRULEREQUEST_ATTRIBUTESENTRY']._serialized_start=2254 + _globals['_CREATESIPDISPATCHRULEREQUEST_ATTRIBUTESENTRY']._serialized_end=2303 + _globals['_SIPDISPATCHRULEINFO']._serialized_start=2306 + _globals['_SIPDISPATCHRULEINFO']._serialized_end=2617 + _globals['_SIPDISPATCHRULEINFO_ATTRIBUTESENTRY']._serialized_start=2254 + _globals['_SIPDISPATCHRULEINFO_ATTRIBUTESENTRY']._serialized_end=2303 + _globals['_LISTSIPDISPATCHRULEREQUEST']._serialized_start=2619 + _globals['_LISTSIPDISPATCHRULEREQUEST']._serialized_end=2647 + _globals['_LISTSIPDISPATCHRULERESPONSE']._serialized_start=2649 + _globals['_LISTSIPDISPATCHRULERESPONSE']._serialized_end=2723 + _globals['_DELETESIPDISPATCHRULEREQUEST']._serialized_start=2725 + _globals['_DELETESIPDISPATCHRULEREQUEST']._serialized_end=2785 + _globals['_CREATESIPPARTICIPANTREQUEST']._serialized_start=2788 + _globals['_CREATESIPPARTICIPANTREQUEST']._serialized_end=3188 + _globals['_CREATESIPPARTICIPANTREQUEST_PARTICIPANTATTRIBUTESENTRY']._serialized_start=3128 + _globals['_CREATESIPPARTICIPANTREQUEST_PARTICIPANTATTRIBUTESENTRY']._serialized_end=3188 + _globals['_SIPPARTICIPANTINFO']._serialized_start=3190 + _globals['_SIPPARTICIPANTINFO']._serialized_end=3304 + _globals['_SIP']._serialized_start=3416 + _globals['_SIP']._serialized_end=4421 # @@protoc_insertion_point(module_scope) diff --git a/livekit-protocol/livekit/protocol/sip.pyi b/livekit-protocol/livekit/protocol/sip.pyi index 8979786b..a7d5a995 100644 --- a/livekit-protocol/livekit/protocol/sip.pyi +++ b/livekit-protocol/livekit/protocol/sip.pyi @@ -1,12 +1,24 @@ from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union DESCRIPTOR: _descriptor.FileDescriptor +class SIPTransport(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + SIP_TRANSPORT_AUTO: _ClassVar[SIPTransport] + SIP_TRANSPORT_UDP: _ClassVar[SIPTransport] + SIP_TRANSPORT_TCP: _ClassVar[SIPTransport] + SIP_TRANSPORT_TLS: _ClassVar[SIPTransport] +SIP_TRANSPORT_AUTO: SIPTransport +SIP_TRANSPORT_UDP: SIPTransport +SIP_TRANSPORT_TCP: SIPTransport +SIP_TRANSPORT_TLS: SIPTransport + class CreateSIPTrunkRequest(_message.Message): - __slots__ = ("inbound_addresses", "outbound_address", "outbound_number", "inbound_numbers_regex", "inbound_numbers", "inbound_username", "inbound_password", "outbound_username", "outbound_password") + __slots__ = ["inbound_addresses", "outbound_address", "outbound_number", "inbound_numbers_regex", "inbound_numbers", "inbound_username", "inbound_password", "outbound_username", "outbound_password", "name", "metadata"] INBOUND_ADDRESSES_FIELD_NUMBER: _ClassVar[int] OUTBOUND_ADDRESS_FIELD_NUMBER: _ClassVar[int] OUTBOUND_NUMBER_FIELD_NUMBER: _ClassVar[int] @@ -16,6 +28,8 @@ class CreateSIPTrunkRequest(_message.Message): INBOUND_PASSWORD_FIELD_NUMBER: _ClassVar[int] OUTBOUND_USERNAME_FIELD_NUMBER: _ClassVar[int] OUTBOUND_PASSWORD_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] inbound_addresses: _containers.RepeatedScalarFieldContainer[str] outbound_address: str outbound_number: str @@ -25,50 +39,140 @@ class CreateSIPTrunkRequest(_message.Message): inbound_password: str outbound_username: str outbound_password: str - def __init__(self, inbound_addresses: _Optional[_Iterable[str]] = ..., outbound_address: _Optional[str] = ..., outbound_number: _Optional[str] = ..., inbound_numbers_regex: _Optional[_Iterable[str]] = ..., inbound_numbers: _Optional[_Iterable[str]] = ..., inbound_username: _Optional[str] = ..., inbound_password: _Optional[str] = ..., outbound_username: _Optional[str] = ..., outbound_password: _Optional[str] = ...) -> None: ... + name: str + metadata: str + def __init__(self, inbound_addresses: _Optional[_Iterable[str]] = ..., outbound_address: _Optional[str] = ..., outbound_number: _Optional[str] = ..., inbound_numbers_regex: _Optional[_Iterable[str]] = ..., inbound_numbers: _Optional[_Iterable[str]] = ..., inbound_username: _Optional[str] = ..., inbound_password: _Optional[str] = ..., outbound_username: _Optional[str] = ..., outbound_password: _Optional[str] = ..., name: _Optional[str] = ..., metadata: _Optional[str] = ...) -> None: ... class SIPTrunkInfo(_message.Message): - __slots__ = ("sip_trunk_id", "inbound_addresses", "outbound_address", "outbound_number", "inbound_numbers_regex", "inbound_numbers", "inbound_username", "inbound_password", "outbound_username", "outbound_password") + __slots__ = ["sip_trunk_id", "kind", "inbound_addresses", "outbound_address", "outbound_number", "transport", "inbound_numbers_regex", "inbound_numbers", "inbound_username", "inbound_password", "outbound_username", "outbound_password", "name", "metadata"] + class TrunkKind(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + TRUNK_LEGACY: _ClassVar[SIPTrunkInfo.TrunkKind] + TRUNK_INBOUND: _ClassVar[SIPTrunkInfo.TrunkKind] + TRUNK_OUTBOUND: _ClassVar[SIPTrunkInfo.TrunkKind] + TRUNK_LEGACY: SIPTrunkInfo.TrunkKind + TRUNK_INBOUND: SIPTrunkInfo.TrunkKind + TRUNK_OUTBOUND: SIPTrunkInfo.TrunkKind SIP_TRUNK_ID_FIELD_NUMBER: _ClassVar[int] + KIND_FIELD_NUMBER: _ClassVar[int] INBOUND_ADDRESSES_FIELD_NUMBER: _ClassVar[int] OUTBOUND_ADDRESS_FIELD_NUMBER: _ClassVar[int] OUTBOUND_NUMBER_FIELD_NUMBER: _ClassVar[int] + TRANSPORT_FIELD_NUMBER: _ClassVar[int] INBOUND_NUMBERS_REGEX_FIELD_NUMBER: _ClassVar[int] INBOUND_NUMBERS_FIELD_NUMBER: _ClassVar[int] INBOUND_USERNAME_FIELD_NUMBER: _ClassVar[int] INBOUND_PASSWORD_FIELD_NUMBER: _ClassVar[int] OUTBOUND_USERNAME_FIELD_NUMBER: _ClassVar[int] OUTBOUND_PASSWORD_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] sip_trunk_id: str + kind: SIPTrunkInfo.TrunkKind inbound_addresses: _containers.RepeatedScalarFieldContainer[str] outbound_address: str outbound_number: str + transport: SIPTransport inbound_numbers_regex: _containers.RepeatedScalarFieldContainer[str] inbound_numbers: _containers.RepeatedScalarFieldContainer[str] inbound_username: str inbound_password: str outbound_username: str outbound_password: str - def __init__(self, sip_trunk_id: _Optional[str] = ..., inbound_addresses: _Optional[_Iterable[str]] = ..., outbound_address: _Optional[str] = ..., outbound_number: _Optional[str] = ..., inbound_numbers_regex: _Optional[_Iterable[str]] = ..., inbound_numbers: _Optional[_Iterable[str]] = ..., inbound_username: _Optional[str] = ..., inbound_password: _Optional[str] = ..., outbound_username: _Optional[str] = ..., outbound_password: _Optional[str] = ...) -> None: ... + name: str + metadata: str + def __init__(self, sip_trunk_id: _Optional[str] = ..., kind: _Optional[_Union[SIPTrunkInfo.TrunkKind, str]] = ..., inbound_addresses: _Optional[_Iterable[str]] = ..., outbound_address: _Optional[str] = ..., outbound_number: _Optional[str] = ..., transport: _Optional[_Union[SIPTransport, str]] = ..., inbound_numbers_regex: _Optional[_Iterable[str]] = ..., inbound_numbers: _Optional[_Iterable[str]] = ..., inbound_username: _Optional[str] = ..., inbound_password: _Optional[str] = ..., outbound_username: _Optional[str] = ..., outbound_password: _Optional[str] = ..., name: _Optional[str] = ..., metadata: _Optional[str] = ...) -> None: ... + +class CreateSIPInboundTrunkRequest(_message.Message): + __slots__ = ["trunk"] + TRUNK_FIELD_NUMBER: _ClassVar[int] + trunk: SIPInboundTrunkInfo + def __init__(self, trunk: _Optional[_Union[SIPInboundTrunkInfo, _Mapping]] = ...) -> None: ... + +class SIPInboundTrunkInfo(_message.Message): + __slots__ = ["sip_trunk_id", "name", "metadata", "numbers", "allowed_addresses", "allowed_numbers", "auth_username", "auth_password"] + SIP_TRUNK_ID_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + NUMBERS_FIELD_NUMBER: _ClassVar[int] + ALLOWED_ADDRESSES_FIELD_NUMBER: _ClassVar[int] + ALLOWED_NUMBERS_FIELD_NUMBER: _ClassVar[int] + AUTH_USERNAME_FIELD_NUMBER: _ClassVar[int] + AUTH_PASSWORD_FIELD_NUMBER: _ClassVar[int] + sip_trunk_id: str + name: str + metadata: str + numbers: _containers.RepeatedScalarFieldContainer[str] + allowed_addresses: _containers.RepeatedScalarFieldContainer[str] + allowed_numbers: _containers.RepeatedScalarFieldContainer[str] + auth_username: str + auth_password: str + def __init__(self, sip_trunk_id: _Optional[str] = ..., name: _Optional[str] = ..., metadata: _Optional[str] = ..., numbers: _Optional[_Iterable[str]] = ..., allowed_addresses: _Optional[_Iterable[str]] = ..., allowed_numbers: _Optional[_Iterable[str]] = ..., auth_username: _Optional[str] = ..., auth_password: _Optional[str] = ...) -> None: ... + +class CreateSIPOutboundTrunkRequest(_message.Message): + __slots__ = ["trunk"] + TRUNK_FIELD_NUMBER: _ClassVar[int] + trunk: SIPOutboundTrunkInfo + def __init__(self, trunk: _Optional[_Union[SIPOutboundTrunkInfo, _Mapping]] = ...) -> None: ... + +class SIPOutboundTrunkInfo(_message.Message): + __slots__ = ["sip_trunk_id", "name", "metadata", "address", "transport", "numbers", "auth_username", "auth_password"] + SIP_TRUNK_ID_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + ADDRESS_FIELD_NUMBER: _ClassVar[int] + TRANSPORT_FIELD_NUMBER: _ClassVar[int] + NUMBERS_FIELD_NUMBER: _ClassVar[int] + AUTH_USERNAME_FIELD_NUMBER: _ClassVar[int] + AUTH_PASSWORD_FIELD_NUMBER: _ClassVar[int] + sip_trunk_id: str + name: str + metadata: str + address: str + transport: SIPTransport + numbers: _containers.RepeatedScalarFieldContainer[str] + auth_username: str + auth_password: str + def __init__(self, sip_trunk_id: _Optional[str] = ..., name: _Optional[str] = ..., metadata: _Optional[str] = ..., address: _Optional[str] = ..., transport: _Optional[_Union[SIPTransport, str]] = ..., numbers: _Optional[_Iterable[str]] = ..., auth_username: _Optional[str] = ..., auth_password: _Optional[str] = ...) -> None: ... class ListSIPTrunkRequest(_message.Message): - __slots__ = () + __slots__ = [] def __init__(self) -> None: ... class ListSIPTrunkResponse(_message.Message): - __slots__ = ("items",) + __slots__ = ["items"] ITEMS_FIELD_NUMBER: _ClassVar[int] items: _containers.RepeatedCompositeFieldContainer[SIPTrunkInfo] def __init__(self, items: _Optional[_Iterable[_Union[SIPTrunkInfo, _Mapping]]] = ...) -> None: ... +class ListSIPInboundTrunkRequest(_message.Message): + __slots__ = [] + def __init__(self) -> None: ... + +class ListSIPInboundTrunkResponse(_message.Message): + __slots__ = ["items"] + ITEMS_FIELD_NUMBER: _ClassVar[int] + items: _containers.RepeatedCompositeFieldContainer[SIPInboundTrunkInfo] + def __init__(self, items: _Optional[_Iterable[_Union[SIPInboundTrunkInfo, _Mapping]]] = ...) -> None: ... + +class ListSIPOutboundTrunkRequest(_message.Message): + __slots__ = [] + def __init__(self) -> None: ... + +class ListSIPOutboundTrunkResponse(_message.Message): + __slots__ = ["items"] + ITEMS_FIELD_NUMBER: _ClassVar[int] + items: _containers.RepeatedCompositeFieldContainer[SIPOutboundTrunkInfo] + def __init__(self, items: _Optional[_Iterable[_Union[SIPOutboundTrunkInfo, _Mapping]]] = ...) -> None: ... + class DeleteSIPTrunkRequest(_message.Message): - __slots__ = ("sip_trunk_id",) + __slots__ = ["sip_trunk_id"] SIP_TRUNK_ID_FIELD_NUMBER: _ClassVar[int] sip_trunk_id: str def __init__(self, sip_trunk_id: _Optional[str] = ...) -> None: ... class SIPDispatchRuleDirect(_message.Message): - __slots__ = ("room_name", "pin") + __slots__ = ["room_name", "pin"] ROOM_NAME_FIELD_NUMBER: _ClassVar[int] PIN_FIELD_NUMBER: _ClassVar[int] room_name: str @@ -76,7 +180,7 @@ class SIPDispatchRuleDirect(_message.Message): def __init__(self, room_name: _Optional[str] = ..., pin: _Optional[str] = ...) -> None: ... class SIPDispatchRuleIndividual(_message.Message): - __slots__ = ("room_prefix", "pin") + __slots__ = ["room_prefix", "pin"] ROOM_PREFIX_FIELD_NUMBER: _ClassVar[int] PIN_FIELD_NUMBER: _ClassVar[int] room_prefix: str @@ -84,7 +188,7 @@ class SIPDispatchRuleIndividual(_message.Message): def __init__(self, room_prefix: _Optional[str] = ..., pin: _Optional[str] = ...) -> None: ... class SIPDispatchRule(_message.Message): - __slots__ = ("dispatch_rule_direct", "dispatch_rule_individual") + __slots__ = ["dispatch_rule_direct", "dispatch_rule_individual"] DISPATCH_RULE_DIRECT_FIELD_NUMBER: _ClassVar[int] DISPATCH_RULE_INDIVIDUAL_FIELD_NUMBER: _ClassVar[int] dispatch_rule_direct: SIPDispatchRuleDirect @@ -92,65 +196,112 @@ class SIPDispatchRule(_message.Message): def __init__(self, dispatch_rule_direct: _Optional[_Union[SIPDispatchRuleDirect, _Mapping]] = ..., dispatch_rule_individual: _Optional[_Union[SIPDispatchRuleIndividual, _Mapping]] = ...) -> None: ... class CreateSIPDispatchRuleRequest(_message.Message): - __slots__ = ("rule", "trunk_ids", "hide_phone_number") + __slots__ = ["rule", "trunk_ids", "hide_phone_number", "inbound_numbers", "name", "metadata", "attributes"] + class AttributesEntry(_message.Message): + __slots__ = ["key", "value"] + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... RULE_FIELD_NUMBER: _ClassVar[int] TRUNK_IDS_FIELD_NUMBER: _ClassVar[int] HIDE_PHONE_NUMBER_FIELD_NUMBER: _ClassVar[int] + INBOUND_NUMBERS_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + ATTRIBUTES_FIELD_NUMBER: _ClassVar[int] rule: SIPDispatchRule trunk_ids: _containers.RepeatedScalarFieldContainer[str] hide_phone_number: bool - def __init__(self, rule: _Optional[_Union[SIPDispatchRule, _Mapping]] = ..., trunk_ids: _Optional[_Iterable[str]] = ..., hide_phone_number: bool = ...) -> None: ... + inbound_numbers: _containers.RepeatedScalarFieldContainer[str] + name: str + metadata: str + attributes: _containers.ScalarMap[str, str] + def __init__(self, rule: _Optional[_Union[SIPDispatchRule, _Mapping]] = ..., trunk_ids: _Optional[_Iterable[str]] = ..., hide_phone_number: bool = ..., inbound_numbers: _Optional[_Iterable[str]] = ..., name: _Optional[str] = ..., metadata: _Optional[str] = ..., attributes: _Optional[_Mapping[str, str]] = ...) -> None: ... class SIPDispatchRuleInfo(_message.Message): - __slots__ = ("sip_dispatch_rule_id", "rule", "trunk_ids", "hide_phone_number") + __slots__ = ["sip_dispatch_rule_id", "rule", "trunk_ids", "hide_phone_number", "inbound_numbers", "name", "metadata", "attributes"] + class AttributesEntry(_message.Message): + __slots__ = ["key", "value"] + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... SIP_DISPATCH_RULE_ID_FIELD_NUMBER: _ClassVar[int] RULE_FIELD_NUMBER: _ClassVar[int] TRUNK_IDS_FIELD_NUMBER: _ClassVar[int] HIDE_PHONE_NUMBER_FIELD_NUMBER: _ClassVar[int] + INBOUND_NUMBERS_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + ATTRIBUTES_FIELD_NUMBER: _ClassVar[int] sip_dispatch_rule_id: str rule: SIPDispatchRule trunk_ids: _containers.RepeatedScalarFieldContainer[str] hide_phone_number: bool - def __init__(self, sip_dispatch_rule_id: _Optional[str] = ..., rule: _Optional[_Union[SIPDispatchRule, _Mapping]] = ..., trunk_ids: _Optional[_Iterable[str]] = ..., hide_phone_number: bool = ...) -> None: ... + inbound_numbers: _containers.RepeatedScalarFieldContainer[str] + name: str + metadata: str + attributes: _containers.ScalarMap[str, str] + def __init__(self, sip_dispatch_rule_id: _Optional[str] = ..., rule: _Optional[_Union[SIPDispatchRule, _Mapping]] = ..., trunk_ids: _Optional[_Iterable[str]] = ..., hide_phone_number: bool = ..., inbound_numbers: _Optional[_Iterable[str]] = ..., name: _Optional[str] = ..., metadata: _Optional[str] = ..., attributes: _Optional[_Mapping[str, str]] = ...) -> None: ... class ListSIPDispatchRuleRequest(_message.Message): - __slots__ = () + __slots__ = [] def __init__(self) -> None: ... class ListSIPDispatchRuleResponse(_message.Message): - __slots__ = ("items",) + __slots__ = ["items"] ITEMS_FIELD_NUMBER: _ClassVar[int] items: _containers.RepeatedCompositeFieldContainer[SIPDispatchRuleInfo] def __init__(self, items: _Optional[_Iterable[_Union[SIPDispatchRuleInfo, _Mapping]]] = ...) -> None: ... class DeleteSIPDispatchRuleRequest(_message.Message): - __slots__ = ("sip_dispatch_rule_id",) + __slots__ = ["sip_dispatch_rule_id"] SIP_DISPATCH_RULE_ID_FIELD_NUMBER: _ClassVar[int] sip_dispatch_rule_id: str def __init__(self, sip_dispatch_rule_id: _Optional[str] = ...) -> None: ... class CreateSIPParticipantRequest(_message.Message): - __slots__ = ("sip_trunk_id", "sip_call_to", "room_name", "participant_identity", "dtmf", "play_ringtone") + __slots__ = ["sip_trunk_id", "sip_call_to", "room_name", "participant_identity", "participant_name", "participant_metadata", "participant_attributes", "dtmf", "play_ringtone", "hide_phone_number"] + class ParticipantAttributesEntry(_message.Message): + __slots__ = ["key", "value"] + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... SIP_TRUNK_ID_FIELD_NUMBER: _ClassVar[int] SIP_CALL_TO_FIELD_NUMBER: _ClassVar[int] ROOM_NAME_FIELD_NUMBER: _ClassVar[int] PARTICIPANT_IDENTITY_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_NAME_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_METADATA_FIELD_NUMBER: _ClassVar[int] + PARTICIPANT_ATTRIBUTES_FIELD_NUMBER: _ClassVar[int] DTMF_FIELD_NUMBER: _ClassVar[int] PLAY_RINGTONE_FIELD_NUMBER: _ClassVar[int] + HIDE_PHONE_NUMBER_FIELD_NUMBER: _ClassVar[int] sip_trunk_id: str sip_call_to: str room_name: str participant_identity: str + participant_name: str + participant_metadata: str + participant_attributes: _containers.ScalarMap[str, str] dtmf: str play_ringtone: bool - def __init__(self, sip_trunk_id: _Optional[str] = ..., sip_call_to: _Optional[str] = ..., room_name: _Optional[str] = ..., participant_identity: _Optional[str] = ..., dtmf: _Optional[str] = ..., play_ringtone: bool = ...) -> None: ... + hide_phone_number: bool + def __init__(self, sip_trunk_id: _Optional[str] = ..., sip_call_to: _Optional[str] = ..., room_name: _Optional[str] = ..., participant_identity: _Optional[str] = ..., participant_name: _Optional[str] = ..., participant_metadata: _Optional[str] = ..., participant_attributes: _Optional[_Mapping[str, str]] = ..., dtmf: _Optional[str] = ..., play_ringtone: bool = ..., hide_phone_number: bool = ...) -> None: ... class SIPParticipantInfo(_message.Message): - __slots__ = ("participant_id", "participant_identity", "room_name") + __slots__ = ["participant_id", "participant_identity", "room_name", "sip_call_id"] PARTICIPANT_ID_FIELD_NUMBER: _ClassVar[int] PARTICIPANT_IDENTITY_FIELD_NUMBER: _ClassVar[int] ROOM_NAME_FIELD_NUMBER: _ClassVar[int] + SIP_CALL_ID_FIELD_NUMBER: _ClassVar[int] participant_id: str participant_identity: str room_name: str - def __init__(self, participant_id: _Optional[str] = ..., participant_identity: _Optional[str] = ..., room_name: _Optional[str] = ...) -> None: ... + sip_call_id: str + def __init__(self, participant_id: _Optional[str] = ..., participant_identity: _Optional[str] = ..., room_name: _Optional[str] = ..., sip_call_id: _Optional[str] = ...) -> None: ... diff --git a/livekit-protocol/livekit/protocol/webhook.py b/livekit-protocol/livekit/protocol/webhook.py index 7c9f12c4..61b9e22b 100644 --- a/livekit-protocol/livekit/protocol/webhook.py +++ b/livekit-protocol/livekit/protocol/webhook.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_webhook.proto -# Protobuf Python Version: 4.25.3 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -23,8 +22,9 @@ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'webhook', _globals) if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None - _globals['DESCRIPTOR']._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' _globals['_WEBHOOKEVENT']._serialized_start=102 _globals['_WEBHOOKEVENT']._serialized_end=381 # @@protoc_insertion_point(module_scope) diff --git a/livekit-protocol/livekit/protocol/webhook.pyi b/livekit-protocol/livekit/protocol/webhook.pyi index 443a24dc..4a538e78 100644 --- a/livekit-protocol/livekit/protocol/webhook.pyi +++ b/livekit-protocol/livekit/protocol/webhook.pyi @@ -8,7 +8,7 @@ from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Opti DESCRIPTOR: _descriptor.FileDescriptor class WebhookEvent(_message.Message): - __slots__ = ("event", "room", "participant", "egress_info", "ingress_info", "track", "id", "created_at", "num_dropped") + __slots__ = ["event", "room", "participant", "egress_info", "ingress_info", "track", "id", "created_at", "num_dropped"] EVENT_FIELD_NUMBER: _ClassVar[int] ROOM_FIELD_NUMBER: _ClassVar[int] PARTICIPANT_FIELD_NUMBER: _ClassVar[int] diff --git a/livekit-protocol/protocol b/livekit-protocol/protocol index 2bce16cd..79b5ea9e 160000 --- a/livekit-protocol/protocol +++ b/livekit-protocol/protocol @@ -1 +1 @@ -Subproject commit 2bce16cdcc0f6650b17cab73a88744ce2ddf454f +Subproject commit 79b5ea9ea9a29991ca6819323173e080aae9cfd3