diff --git a/livekit-protocol/generate_proto.sh b/livekit-protocol/generate_proto.sh index ba10fbc6..7f1fb3ff 100755 --- a/livekit-protocol/generate_proto.sh +++ b/livekit-protocol/generate_proto.sh @@ -18,7 +18,7 @@ API_PROTOCOL=./protocol API_OUT_PYTHON=./livekit/protocol - + protoc \ -I=$API_PROTOCOL \ --python_out=$API_OUT_PYTHON \ @@ -28,7 +28,8 @@ protoc \ $API_PROTOCOL/livekit_webhook.proto \ $API_PROTOCOL/livekit_ingress.proto \ $API_PROTOCOL/livekit_models.proto \ - $API_PROTOCOL/livekit_agent.proto + $API_PROTOCOL/livekit_agent.proto \ + $API_PROTOCOL/livekit_analytics.proto touch -a "$API_OUT_PYTHON/__init__.py" @@ -54,7 +55,9 @@ mv "$API_OUT_PYTHON/livekit_models_pb2.py" "$API_OUT_PYTHON/models.py" mv "$API_OUT_PYTHON/livekit_models_pb2.pyi" "$API_OUT_PYTHON/models.pyi" mv "$API_OUT_PYTHON/livekit_agent_pb2.py" "$API_OUT_PYTHON/agent.py" mv "$API_OUT_PYTHON/livekit_agent_pb2.pyi" "$API_OUT_PYTHON/agent.pyi" +mv "$API_OUT_PYTHON/livekit_analytics_pb2.py" "$API_OUT_PYTHON/analytics.py" +mv "$API_OUT_PYTHON/livekit_analytics_pb2.pyi" "$API_OUT_PYTHON/analytics.pyi" -perl -i -pe 's|^(import (livekit_egress_pb2\|livekit_room_pb2\|livekit_webhook_pb2\|livekit_ingress_pb2\|livekit_models_pb2\|livekit_agent_pb2))|from . $1|g' "$API_OUT_PYTHON"/*.py "$API_OUT_PYTHON"/*.pyi +perl -i -pe 's|^(import (livekit_egress_pb2\|livekit_room_pb2\|livekit_webhook_pb2\|livekit_ingress_pb2\|livekit_models_pb2\|livekit_agent_pb2\|livekit_analytics_pb2))|from . $1|g' "$API_OUT_PYTHON"/*.py "$API_OUT_PYTHON"/*.pyi perl -i -pe 's|livekit_(\w+)_pb2|${1}|g' "$API_OUT_PYTHON"/*.py "$API_OUT_PYTHON"/*.pyi diff --git a/livekit-protocol/livekit/protocol/agent.py b/livekit-protocol/livekit/protocol/agent.py index 87a27d17..407152f6 100644 --- a/livekit-protocol/livekit/protocol/agent.py +++ b/livekit-protocol/livekit/protocol/agent.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_agent.proto +# Protobuf Python Version: 4.25.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -20,9 +21,8 @@ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'agent', _globals) if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' + _globals['DESCRIPTOR']._options = None + _globals['DESCRIPTOR']._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' _globals['_JOBTYPE']._serialized_start=1167 _globals['_JOBTYPE']._serialized_end=1207 _globals['_WORKERSTATUS']._serialized_start=1209 diff --git a/livekit-protocol/livekit/protocol/analytics.py b/livekit-protocol/livekit/protocol/analytics.py new file mode 100644 index 00000000..18077477 --- /dev/null +++ b/livekit-protocol/livekit/protocol/analytics.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: livekit_analytics.proto +# Protobuf Python Version: 4.25.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_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\"\xd7\x02\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\"\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\"\xb2\x01\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\"\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**\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\xa4\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\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=1928 + _globals['_STREAMTYPE']._serialized_end=1970 + _globals['_ANALYTICSEVENTTYPE']._serialized_start=1973 + _globals['_ANALYTICSEVENTTYPE']._serialized_end=2634 + _globals['_ANALYTICSVIDEOLAYER']._serialized_start=165 + _globals['_ANALYTICSVIDEOLAYER']._serialized_end=249 + _globals['_ANALYTICSSTREAM']._serialized_start=252 + _globals['_ANALYTICSSTREAM']._serialized_end=595 + _globals['_ANALYTICSSTAT']._serialized_start=598 + _globals['_ANALYTICSSTAT']._serialized_end=924 + _globals['_ANALYTICSSTATS']._serialized_start=926 + _globals['_ANALYTICSSTATS']._serialized_end=981 + _globals['_ANALYTICSCLIENTMETA']._serialized_start=984 + _globals['_ANALYTICSCLIENTMETA']._serialized_end=1162 + _globals['_ANALYTICSEVENT']._serialized_start=1165 + _globals['_ANALYTICSEVENT']._serialized_end=1866 + _globals['_ANALYTICSEVENTS']._serialized_start=1868 + _globals['_ANALYTICSEVENTS']._serialized_end=1926 + _globals['_ANALYTICSRECORDERSERVICE']._serialized_start=2637 + _globals['_ANALYTICSRECORDERSERVICE']._serialized_end=2801 +# @@protoc_insertion_point(module_scope) diff --git a/livekit-protocol/livekit/protocol/analytics.pyi b/livekit-protocol/livekit/protocol/analytics.pyi new file mode 100644 index 00000000..a2dc2fcb --- /dev/null +++ b/livekit-protocol/livekit/protocol/analytics.pyi @@ -0,0 +1,404 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +Copyright 2023 LiveKit, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import google.protobuf.timestamp_pb2 +from . import egress +from . import ingress +from . import models +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _StreamType: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _StreamTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_StreamType.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + UPSTREAM: _StreamType.ValueType # 0 + DOWNSTREAM: _StreamType.ValueType # 1 + +class StreamType(_StreamType, metaclass=_StreamTypeEnumTypeWrapper): ... + +UPSTREAM: StreamType.ValueType # 0 +DOWNSTREAM: StreamType.ValueType # 1 +global___StreamType = StreamType + +class _AnalyticsEventType: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _AnalyticsEventTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_AnalyticsEventType.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + ROOM_CREATED: _AnalyticsEventType.ValueType # 0 + ROOM_ENDED: _AnalyticsEventType.ValueType # 1 + PARTICIPANT_JOINED: _AnalyticsEventType.ValueType # 2 + PARTICIPANT_LEFT: _AnalyticsEventType.ValueType # 3 + TRACK_PUBLISHED: _AnalyticsEventType.ValueType # 4 + TRACK_PUBLISH_REQUESTED: _AnalyticsEventType.ValueType # 20 + TRACK_UNPUBLISHED: _AnalyticsEventType.ValueType # 5 + TRACK_SUBSCRIBED: _AnalyticsEventType.ValueType # 6 + TRACK_SUBSCRIBE_REQUESTED: _AnalyticsEventType.ValueType # 21 + TRACK_SUBSCRIBE_FAILED: _AnalyticsEventType.ValueType # 25 + TRACK_UNSUBSCRIBED: _AnalyticsEventType.ValueType # 7 + TRACK_PUBLISHED_UPDATE: _AnalyticsEventType.ValueType # 10 + TRACK_MUTED: _AnalyticsEventType.ValueType # 23 + TRACK_UNMUTED: _AnalyticsEventType.ValueType # 24 + TRACK_PUBLISH_STATS: _AnalyticsEventType.ValueType # 26 + TRACK_SUBSCRIBE_STATS: _AnalyticsEventType.ValueType # 27 + PARTICIPANT_ACTIVE: _AnalyticsEventType.ValueType # 11 + PARTICIPANT_RESUMED: _AnalyticsEventType.ValueType # 22 + EGRESS_STARTED: _AnalyticsEventType.ValueType # 12 + EGRESS_ENDED: _AnalyticsEventType.ValueType # 13 + EGRESS_UPDATED: _AnalyticsEventType.ValueType # 28 + TRACK_MAX_SUBSCRIBED_VIDEO_QUALITY: _AnalyticsEventType.ValueType # 14 + RECONNECTED: _AnalyticsEventType.ValueType # 15 + INGRESS_CREATED: _AnalyticsEventType.ValueType # 18 + INGRESS_DELETED: _AnalyticsEventType.ValueType # 19 + INGRESS_STARTED: _AnalyticsEventType.ValueType # 16 + INGRESS_ENDED: _AnalyticsEventType.ValueType # 17 + INGRESS_UPDATED: _AnalyticsEventType.ValueType # 29 + +class AnalyticsEventType(_AnalyticsEventType, metaclass=_AnalyticsEventTypeEnumTypeWrapper): ... + +ROOM_CREATED: AnalyticsEventType.ValueType # 0 +ROOM_ENDED: AnalyticsEventType.ValueType # 1 +PARTICIPANT_JOINED: AnalyticsEventType.ValueType # 2 +PARTICIPANT_LEFT: AnalyticsEventType.ValueType # 3 +TRACK_PUBLISHED: AnalyticsEventType.ValueType # 4 +TRACK_PUBLISH_REQUESTED: AnalyticsEventType.ValueType # 20 +TRACK_UNPUBLISHED: AnalyticsEventType.ValueType # 5 +TRACK_SUBSCRIBED: AnalyticsEventType.ValueType # 6 +TRACK_SUBSCRIBE_REQUESTED: AnalyticsEventType.ValueType # 21 +TRACK_SUBSCRIBE_FAILED: AnalyticsEventType.ValueType # 25 +TRACK_UNSUBSCRIBED: AnalyticsEventType.ValueType # 7 +TRACK_PUBLISHED_UPDATE: AnalyticsEventType.ValueType # 10 +TRACK_MUTED: AnalyticsEventType.ValueType # 23 +TRACK_UNMUTED: AnalyticsEventType.ValueType # 24 +TRACK_PUBLISH_STATS: AnalyticsEventType.ValueType # 26 +TRACK_SUBSCRIBE_STATS: AnalyticsEventType.ValueType # 27 +PARTICIPANT_ACTIVE: AnalyticsEventType.ValueType # 11 +PARTICIPANT_RESUMED: AnalyticsEventType.ValueType # 22 +EGRESS_STARTED: AnalyticsEventType.ValueType # 12 +EGRESS_ENDED: AnalyticsEventType.ValueType # 13 +EGRESS_UPDATED: AnalyticsEventType.ValueType # 28 +TRACK_MAX_SUBSCRIBED_VIDEO_QUALITY: AnalyticsEventType.ValueType # 14 +RECONNECTED: AnalyticsEventType.ValueType # 15 +INGRESS_CREATED: AnalyticsEventType.ValueType # 18 +INGRESS_DELETED: AnalyticsEventType.ValueType # 19 +INGRESS_STARTED: AnalyticsEventType.ValueType # 16 +INGRESS_ENDED: AnalyticsEventType.ValueType # 17 +INGRESS_UPDATED: AnalyticsEventType.ValueType # 29 +global___AnalyticsEventType = AnalyticsEventType + +@typing_extensions.final +class AnalyticsVideoLayer(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LAYER_FIELD_NUMBER: builtins.int + PACKETS_FIELD_NUMBER: builtins.int + BYTES_FIELD_NUMBER: builtins.int + FRAMES_FIELD_NUMBER: builtins.int + layer: builtins.int + packets: builtins.int + bytes: builtins.int + frames: builtins.int + def __init__( + self, + *, + layer: builtins.int = ..., + packets: builtins.int = ..., + bytes: builtins.int = ..., + frames: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["bytes", b"bytes", "frames", b"frames", "layer", b"layer", "packets", b"packets"]) -> None: ... + +global___AnalyticsVideoLayer = AnalyticsVideoLayer + +@typing_extensions.final +class AnalyticsStream(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SSRC_FIELD_NUMBER: builtins.int + PRIMARY_PACKETS_FIELD_NUMBER: builtins.int + PRIMARY_BYTES_FIELD_NUMBER: builtins.int + RETRANSMIT_PACKETS_FIELD_NUMBER: builtins.int + RETRANSMIT_BYTES_FIELD_NUMBER: builtins.int + PADDING_PACKETS_FIELD_NUMBER: builtins.int + PADDING_BYTES_FIELD_NUMBER: builtins.int + PACKETS_LOST_FIELD_NUMBER: builtins.int + FRAMES_FIELD_NUMBER: builtins.int + RTT_FIELD_NUMBER: builtins.int + JITTER_FIELD_NUMBER: builtins.int + NACKS_FIELD_NUMBER: builtins.int + PLIS_FIELD_NUMBER: builtins.int + FIRS_FIELD_NUMBER: builtins.int + VIDEO_LAYERS_FIELD_NUMBER: builtins.int + ssrc: builtins.int + primary_packets: builtins.int + primary_bytes: builtins.int + retransmit_packets: builtins.int + retransmit_bytes: builtins.int + padding_packets: builtins.int + padding_bytes: builtins.int + packets_lost: builtins.int + frames: builtins.int + rtt: builtins.int + jitter: builtins.int + nacks: builtins.int + plis: builtins.int + firs: builtins.int + @property + def video_layers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AnalyticsVideoLayer]: ... + def __init__( + self, + *, + ssrc: builtins.int = ..., + primary_packets: builtins.int = ..., + primary_bytes: builtins.int = ..., + retransmit_packets: builtins.int = ..., + retransmit_bytes: builtins.int = ..., + padding_packets: builtins.int = ..., + padding_bytes: builtins.int = ..., + packets_lost: builtins.int = ..., + frames: builtins.int = ..., + rtt: builtins.int = ..., + jitter: builtins.int = ..., + nacks: builtins.int = ..., + plis: builtins.int = ..., + firs: builtins.int = ..., + video_layers: collections.abc.Iterable[global___AnalyticsVideoLayer] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["firs", b"firs", "frames", b"frames", "jitter", b"jitter", "nacks", b"nacks", "packets_lost", b"packets_lost", "padding_bytes", b"padding_bytes", "padding_packets", b"padding_packets", "plis", b"plis", "primary_bytes", b"primary_bytes", "primary_packets", b"primary_packets", "retransmit_bytes", b"retransmit_bytes", "retransmit_packets", b"retransmit_packets", "rtt", b"rtt", "ssrc", b"ssrc", "video_layers", b"video_layers"]) -> None: ... + +global___AnalyticsStream = AnalyticsStream + +@typing_extensions.final +class AnalyticsStat(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ANALYTICS_KEY_FIELD_NUMBER: builtins.int + KIND_FIELD_NUMBER: builtins.int + TIME_STAMP_FIELD_NUMBER: builtins.int + NODE_FIELD_NUMBER: builtins.int + ROOM_ID_FIELD_NUMBER: builtins.int + ROOM_NAME_FIELD_NUMBER: builtins.int + PARTICIPANT_ID_FIELD_NUMBER: builtins.int + TRACK_ID_FIELD_NUMBER: builtins.int + SCORE_FIELD_NUMBER: builtins.int + STREAMS_FIELD_NUMBER: builtins.int + MIME_FIELD_NUMBER: builtins.int + MIN_SCORE_FIELD_NUMBER: builtins.int + MEDIAN_SCORE_FIELD_NUMBER: builtins.int + analytics_key: builtins.str + kind: global___StreamType.ValueType + @property + def time_stamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + node: builtins.str + room_id: builtins.str + room_name: builtins.str + participant_id: builtins.str + track_id: builtins.str + score: builtins.float + """average score""" + @property + def streams(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AnalyticsStream]: ... + mime: builtins.str + min_score: builtins.float + median_score: builtins.float + def __init__( + self, + *, + analytics_key: builtins.str = ..., + kind: global___StreamType.ValueType = ..., + time_stamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + node: builtins.str = ..., + room_id: builtins.str = ..., + room_name: builtins.str = ..., + participant_id: builtins.str = ..., + track_id: builtins.str = ..., + score: builtins.float = ..., + streams: collections.abc.Iterable[global___AnalyticsStream] | None = ..., + mime: builtins.str = ..., + min_score: builtins.float = ..., + median_score: builtins.float = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["time_stamp", b"time_stamp"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["analytics_key", b"analytics_key", "kind", b"kind", "median_score", b"median_score", "mime", b"mime", "min_score", b"min_score", "node", b"node", "participant_id", b"participant_id", "room_id", b"room_id", "room_name", b"room_name", "score", b"score", "streams", b"streams", "time_stamp", b"time_stamp", "track_id", b"track_id"]) -> None: ... + +global___AnalyticsStat = AnalyticsStat + +@typing_extensions.final +class AnalyticsStats(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + STATS_FIELD_NUMBER: builtins.int + @property + def stats(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AnalyticsStat]: ... + def __init__( + self, + *, + stats: collections.abc.Iterable[global___AnalyticsStat] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["stats", b"stats"]) -> None: ... + +global___AnalyticsStats = AnalyticsStats + +@typing_extensions.final +class AnalyticsClientMeta(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + REGION_FIELD_NUMBER: builtins.int + NODE_FIELD_NUMBER: builtins.int + CLIENT_ADDR_FIELD_NUMBER: builtins.int + CLIENT_CONNECT_TIME_FIELD_NUMBER: builtins.int + CONNECTION_TYPE_FIELD_NUMBER: builtins.int + RECONNECT_REASON_FIELD_NUMBER: builtins.int + region: builtins.str + node: builtins.str + client_addr: builtins.str + client_connect_time: builtins.int + connection_type: builtins.str + """udp, tcp, turn""" + reconnect_reason: models.ReconnectReason.ValueType + def __init__( + self, + *, + region: builtins.str = ..., + node: builtins.str = ..., + client_addr: builtins.str = ..., + client_connect_time: builtins.int = ..., + connection_type: builtins.str = ..., + reconnect_reason: models.ReconnectReason.ValueType = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["client_addr", b"client_addr", "client_connect_time", b"client_connect_time", "connection_type", b"connection_type", "node", b"node", "reconnect_reason", b"reconnect_reason", "region", b"region"]) -> None: ... + +global___AnalyticsClientMeta = AnalyticsClientMeta + +@typing_extensions.final +class AnalyticsEvent(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TYPE_FIELD_NUMBER: builtins.int + TIMESTAMP_FIELD_NUMBER: builtins.int + ROOM_ID_FIELD_NUMBER: builtins.int + ROOM_FIELD_NUMBER: builtins.int + PARTICIPANT_ID_FIELD_NUMBER: builtins.int + PARTICIPANT_FIELD_NUMBER: builtins.int + TRACK_ID_FIELD_NUMBER: builtins.int + TRACK_FIELD_NUMBER: builtins.int + ANALYTICS_KEY_FIELD_NUMBER: builtins.int + CLIENT_INFO_FIELD_NUMBER: builtins.int + CLIENT_META_FIELD_NUMBER: builtins.int + EGRESS_ID_FIELD_NUMBER: builtins.int + INGRESS_ID_FIELD_NUMBER: builtins.int + MAX_SUBSCRIBED_VIDEO_QUALITY_FIELD_NUMBER: builtins.int + PUBLISHER_FIELD_NUMBER: builtins.int + MIME_FIELD_NUMBER: builtins.int + EGRESS_FIELD_NUMBER: builtins.int + INGRESS_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + RTP_STATS_FIELD_NUMBER: builtins.int + VIDEO_LAYER_FIELD_NUMBER: builtins.int + type: global___AnalyticsEventType.ValueType + @property + def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + room_id: builtins.str + @property + def room(self) -> models.Room: ... + participant_id: builtins.str + @property + def participant(self) -> models.ParticipantInfo: ... + track_id: builtins.str + @property + def track(self) -> models.TrackInfo: ... + analytics_key: builtins.str + @property + def client_info(self) -> models.ClientInfo: ... + @property + def client_meta(self) -> global___AnalyticsClientMeta: ... + egress_id: builtins.str + ingress_id: builtins.str + max_subscribed_video_quality: models.VideoQuality.ValueType + @property + def publisher(self) -> models.ParticipantInfo: ... + mime: builtins.str + @property + def egress(self) -> egress.EgressInfo: ... + @property + def ingress(self) -> ingress.IngressInfo: ... + error: builtins.str + @property + def rtp_stats(self) -> models.RTPStats: ... + video_layer: builtins.int + def __init__( + self, + *, + type: global___AnalyticsEventType.ValueType = ..., + timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + room_id: builtins.str = ..., + room: models.Room | None = ..., + participant_id: builtins.str = ..., + participant: models.ParticipantInfo | None = ..., + track_id: builtins.str = ..., + track: models.TrackInfo | None = ..., + analytics_key: builtins.str = ..., + client_info: models.ClientInfo | None = ..., + client_meta: global___AnalyticsClientMeta | None = ..., + egress_id: builtins.str = ..., + ingress_id: builtins.str = ..., + max_subscribed_video_quality: models.VideoQuality.ValueType = ..., + publisher: models.ParticipantInfo | None = ..., + mime: builtins.str = ..., + egress: egress.EgressInfo | None = ..., + ingress: ingress.IngressInfo | None = ..., + error: builtins.str = ..., + rtp_stats: models.RTPStats | None = ..., + video_layer: builtins.int = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["client_info", b"client_info", "client_meta", b"client_meta", "egress", b"egress", "ingress", b"ingress", "participant", b"participant", "publisher", b"publisher", "room", b"room", "rtp_stats", b"rtp_stats", "timestamp", b"timestamp", "track", b"track"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["analytics_key", b"analytics_key", "client_info", b"client_info", "client_meta", b"client_meta", "egress", b"egress", "egress_id", b"egress_id", "error", b"error", "ingress", b"ingress", "ingress_id", b"ingress_id", "max_subscribed_video_quality", b"max_subscribed_video_quality", "mime", b"mime", "participant", b"participant", "participant_id", b"participant_id", "publisher", b"publisher", "room", b"room", "room_id", b"room_id", "rtp_stats", b"rtp_stats", "timestamp", b"timestamp", "track", b"track", "track_id", b"track_id", "type", b"type", "video_layer", b"video_layer"]) -> None: ... + +global___AnalyticsEvent = AnalyticsEvent + +@typing_extensions.final +class AnalyticsEvents(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + EVENTS_FIELD_NUMBER: builtins.int + @property + def events(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AnalyticsEvent]: ... + def __init__( + self, + *, + events: collections.abc.Iterable[global___AnalyticsEvent] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["events", b"events"]) -> None: ... + +global___AnalyticsEvents = AnalyticsEvents diff --git a/livekit-protocol/livekit/protocol/egress.py b/livekit-protocol/livekit/protocol/egress.py index 17513758..1613cbce 100644 --- a/livekit-protocol/livekit/protocol/egress.py +++ b/livekit-protocol/livekit/protocol/egress.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_egress.proto +# Protobuf Python Version: 4.25.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -20,37 +21,36 @@ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'egress', _globals) if _descriptor._USE_C_DESCRIPTORS == False: - - 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['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=6661 _globals['_ENCODEDFILETYPE']._serialized_end=6718 _globals['_SEGMENTEDFILEPROTOCOL']._serialized_start=6720 diff --git a/livekit-protocol/livekit/protocol/ingress.py b/livekit-protocol/livekit/protocol/ingress.py index 094d63b7..872b4de3 100644 --- a/livekit-protocol/livekit/protocol/ingress.py +++ b/livekit-protocol/livekit/protocol/ingress.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_ingress.proto +# Protobuf Python Version: 4.25.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -20,9 +21,8 @@ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'ingress', _globals) if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' + _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=2452 _globals['_INGRESSINPUT']._serialized_end=2513 _globals['_INGRESSAUDIOENCODINGPRESET']._serialized_start=2515 diff --git a/livekit-protocol/livekit/protocol/models.py b/livekit-protocol/livekit/protocol/models.py index eb586070..3c9d83e6 100644 --- a/livekit-protocol/livekit/protocol/models.py +++ b/livekit-protocol/livekit/protocol/models.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_models.proto +# Protobuf Python Version: 4.25.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -20,11 +21,10 @@ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'models', _globals) if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' - _RTPSTATS_GAPHISTOGRAMENTRY._options = None - _RTPSTATS_GAPHISTOGRAMENTRY._serialized_options = b'8\001' + _globals['DESCRIPTOR']._options = None + _globals['DESCRIPTOR']._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' + _globals['_RTPSTATS_GAPHISTOGRAMENTRY']._options = None + _globals['_RTPSTATS_GAPHISTOGRAMENTRY']._serialized_options = b'8\001' _globals['_AUDIOCODEC']._serialized_start=4789 _globals['_AUDIOCODEC']._serialized_end=4836 _globals['_VIDEOCODEC']._serialized_start=4838 diff --git a/livekit-protocol/livekit/protocol/room.py b/livekit-protocol/livekit/protocol/room.py index 553dd505..ac3fb3f3 100644 --- a/livekit-protocol/livekit/protocol/room.py +++ b/livekit-protocol/livekit/protocol/room.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_room.proto +# Protobuf Python Version: 4.25.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -21,11 +22,10 @@ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'room', _globals) if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' - _SENDDATAREQUEST.fields_by_name['destination_sids']._options = None - _SENDDATAREQUEST.fields_by_name['destination_sids']._serialized_options = b'\030\001' + _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' _globals['_CREATEROOMREQUEST']._serialized_start=76 _globals['_CREATEROOMREQUEST']._serialized_end=306 _globals['_ROOMEGRESS']._serialized_start=309 diff --git a/livekit-protocol/livekit/protocol/webhook.py b/livekit-protocol/livekit/protocol/webhook.py index 61b9e22b..127a70fb 100644 --- a/livekit-protocol/livekit/protocol/webhook.py +++ b/livekit-protocol/livekit/protocol/webhook.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: livekit_webhook.proto +# Protobuf Python Version: 4.25.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -22,9 +23,8 @@ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'webhook', _globals) if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'Z#github.com/livekit/protocol/livekit\252\002\rLiveKit.Proto\352\002\016LiveKit::Proto' + _globals['DESCRIPTOR']._options = None + _globals['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)