Skip to main content

livekit_protocol/
livekit.rs

1// @generated
2// This file is @generated by prost-build.
3#[allow(clippy::derive_partial_eq_without_eq)]
4#[derive(Clone, PartialEq, ::prost::Message)]
5pub struct MetricsBatch {
6    /// time at which this batch is sent based on a monotonic clock (millisecond resolution)
7    #[prost(int64, tag="1")]
8    pub timestamp_ms: i64,
9    #[prost(message, optional, tag="2")]
10    pub normalized_timestamp: ::core::option::Option<::pbjson_types::Timestamp>,
11    /// To avoid repeating string values, we store them in a separate list and reference them by index
12    /// This is useful for storing participant identities, track names, etc.
13    /// There is also a predefined list of labels that can be used to reference common metrics.
14    /// They have reserved indices from 0 to (METRIC_LABEL_PREDEFINED_MAX_VALUE - 1).
15    /// Indexes pointing at str_data should start from METRIC_LABEL_PREDEFINED_MAX_VALUE,
16    /// such that str_data\[0\] == index of METRIC_LABEL_PREDEFINED_MAX_VALUE.
17    #[prost(string, repeated, tag="3")]
18    pub str_data: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19    #[prost(message, repeated, tag="4")]
20    pub time_series: ::prost::alloc::vec::Vec<TimeSeriesMetric>,
21    #[prost(message, repeated, tag="5")]
22    pub events: ::prost::alloc::vec::Vec<EventMetric>,
23}
24#[allow(clippy::derive_partial_eq_without_eq)]
25#[derive(Clone, PartialEq, ::prost::Message)]
26pub struct TimeSeriesMetric {
27    /// Metric name e.g "speech_probablity". The string value is not directly stored in the message, but referenced by index
28    /// in the `str_data` field of `MetricsBatch`
29    #[prost(uint32, tag="1")]
30    pub label: u32,
31    /// index into `str_data`
32    #[prost(uint32, tag="2")]
33    pub participant_identity: u32,
34    /// index into `str_data`
35    #[prost(uint32, tag="3")]
36    pub track_sid: u32,
37    #[prost(message, repeated, tag="4")]
38    pub samples: ::prost::alloc::vec::Vec<MetricSample>,
39    /// index into 'str_data'
40    #[prost(uint32, tag="5")]
41    pub rid: u32,
42}
43#[allow(clippy::derive_partial_eq_without_eq)]
44#[derive(Clone, PartialEq, ::prost::Message)]
45pub struct MetricSample {
46    /// time of metric based on a monotonic clock (in milliseconds)
47    #[prost(int64, tag="1")]
48    pub timestamp_ms: i64,
49    #[prost(message, optional, tag="2")]
50    pub normalized_timestamp: ::core::option::Option<::pbjson_types::Timestamp>,
51    #[prost(float, tag="3")]
52    pub value: f32,
53}
54#[allow(clippy::derive_partial_eq_without_eq)]
55#[derive(Clone, PartialEq, ::prost::Message)]
56pub struct EventMetric {
57    #[prost(uint32, tag="1")]
58    pub label: u32,
59    /// index into `str_data`
60    #[prost(uint32, tag="2")]
61    pub participant_identity: u32,
62    /// index into `str_data`
63    #[prost(uint32, tag="3")]
64    pub track_sid: u32,
65    /// start time of event based on a monotonic clock (in milliseconds)
66    #[prost(int64, tag="4")]
67    pub start_timestamp_ms: i64,
68    /// end time of event based on a monotonic clock (in milliseconds), if needed
69    #[prost(int64, optional, tag="5")]
70    pub end_timestamp_ms: ::core::option::Option<i64>,
71    #[prost(message, optional, tag="6")]
72    pub normalized_start_timestamp: ::core::option::Option<::pbjson_types::Timestamp>,
73    #[prost(message, optional, tag="7")]
74    pub normalized_end_timestamp: ::core::option::Option<::pbjson_types::Timestamp>,
75    #[prost(string, tag="8")]
76    pub metadata: ::prost::alloc::string::String,
77    /// index into 'str_data'
78    #[prost(uint32, tag="9")]
79    pub rid: u32,
80}
81#[allow(clippy::derive_partial_eq_without_eq)]
82#[derive(Clone, PartialEq, ::prost::Message)]
83pub struct MetricsRecordingHeader {
84    #[prost(string, tag="1")]
85    pub room_id: ::prost::alloc::string::String,
86    /// milliseconds
87    #[prost(uint64, tag="3")]
88    pub duration: u64,
89    #[prost(message, optional, tag="4")]
90    pub start_time: ::core::option::Option<::pbjson_types::Timestamp>,
91    #[prost(map="string, string", tag="5")]
92    pub room_tags: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
93}
94//
95// Protocol used to record metrics for a specific session.
96//
97// Clients send their timestamp in their own monotonically increasing time (e.g `performance.now` on JS).
98// These timestamps are then augmented by the SFU to its time base.
99//
100// A metric can be linked to a specific track by setting `track_sid`.
101
102/// index from [0: MAX_LABEL_PREDEFINED_MAX_VALUE) are for predefined labels (`MetricLabel`)
103#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
104#[repr(i32)]
105pub enum MetricLabel {
106    /// time to first token from LLM
107    AgentsLlmTtft = 0,
108    /// time to final transcription
109    AgentsSttTtft = 1,
110    /// time to first byte
111    AgentsTtsTtfb = 2,
112    /// Number of video freezes
113    ClientVideoSubscriberFreezeCount = 3,
114    /// total duration of freezes
115    ClientVideoSubscriberTotalFreezeDuration = 4,
116    /// number of video pauses
117    ClientVideoSubscriberPauseCount = 5,
118    /// total duration of pauses
119    ClientVideoSubscriberTotalPausesDuration = 6,
120    /// number of concealed (synthesized) audio samples
121    ClientAudioSubscriberConcealedSamples = 7,
122    /// number of silent concealed samples
123    ClientAudioSubscriberSilentConcealedSamples = 8,
124    /// number of concealment events
125    ClientAudioSubscriberConcealmentEvents = 9,
126    /// number of interruptions
127    ClientAudioSubscriberInterruptionCount = 10,
128    /// total duration of interruptions
129    ClientAudioSubscriberTotalInterruptionDuration = 11,
130    /// total time spent in jitter buffer
131    ClientSubscriberJitterBufferDelay = 12,
132    /// total time spent in jitter buffer
133    ClientSubscriberJitterBufferEmittedCount = 13,
134    /// total duration spent in bandwidth quality limitation
135    ClientVideoPublisherQualityLimitationDurationBandwidth = 14,
136    /// total duration spent in cpu quality limitation
137    ClientVideoPublisherQualityLimitationDurationCpu = 15,
138    /// total duration spent in other quality limitation
139    ClientVideoPublisherQualityLimitationDurationOther = 16,
140    /// Publisher RTT (participant -> server)
141    PublisherRtt = 17,
142    /// RTT between publisher node and subscriber node (could involve intermedia node(s))
143    ServerMeshRtt = 18,
144    /// Subscribe RTT (server -> participant)
145    SubscriberRtt = 19,
146    PredefinedMaxValue = 4096,
147}
148impl MetricLabel {
149    /// String value of the enum field names used in the ProtoBuf definition.
150    ///
151    /// The values are not transformed in any way and thus are considered stable
152    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
153    pub fn as_str_name(&self) -> &'static str {
154        match self {
155            MetricLabel::AgentsLlmTtft => "AGENTS_LLM_TTFT",
156            MetricLabel::AgentsSttTtft => "AGENTS_STT_TTFT",
157            MetricLabel::AgentsTtsTtfb => "AGENTS_TTS_TTFB",
158            MetricLabel::ClientVideoSubscriberFreezeCount => "CLIENT_VIDEO_SUBSCRIBER_FREEZE_COUNT",
159            MetricLabel::ClientVideoSubscriberTotalFreezeDuration => "CLIENT_VIDEO_SUBSCRIBER_TOTAL_FREEZE_DURATION",
160            MetricLabel::ClientVideoSubscriberPauseCount => "CLIENT_VIDEO_SUBSCRIBER_PAUSE_COUNT",
161            MetricLabel::ClientVideoSubscriberTotalPausesDuration => "CLIENT_VIDEO_SUBSCRIBER_TOTAL_PAUSES_DURATION",
162            MetricLabel::ClientAudioSubscriberConcealedSamples => "CLIENT_AUDIO_SUBSCRIBER_CONCEALED_SAMPLES",
163            MetricLabel::ClientAudioSubscriberSilentConcealedSamples => "CLIENT_AUDIO_SUBSCRIBER_SILENT_CONCEALED_SAMPLES",
164            MetricLabel::ClientAudioSubscriberConcealmentEvents => "CLIENT_AUDIO_SUBSCRIBER_CONCEALMENT_EVENTS",
165            MetricLabel::ClientAudioSubscriberInterruptionCount => "CLIENT_AUDIO_SUBSCRIBER_INTERRUPTION_COUNT",
166            MetricLabel::ClientAudioSubscriberTotalInterruptionDuration => "CLIENT_AUDIO_SUBSCRIBER_TOTAL_INTERRUPTION_DURATION",
167            MetricLabel::ClientSubscriberJitterBufferDelay => "CLIENT_SUBSCRIBER_JITTER_BUFFER_DELAY",
168            MetricLabel::ClientSubscriberJitterBufferEmittedCount => "CLIENT_SUBSCRIBER_JITTER_BUFFER_EMITTED_COUNT",
169            MetricLabel::ClientVideoPublisherQualityLimitationDurationBandwidth => "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_BANDWIDTH",
170            MetricLabel::ClientVideoPublisherQualityLimitationDurationCpu => "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_CPU",
171            MetricLabel::ClientVideoPublisherQualityLimitationDurationOther => "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_OTHER",
172            MetricLabel::PublisherRtt => "PUBLISHER_RTT",
173            MetricLabel::ServerMeshRtt => "SERVER_MESH_RTT",
174            MetricLabel::SubscriberRtt => "SUBSCRIBER_RTT",
175            MetricLabel::PredefinedMaxValue => "METRIC_LABEL_PREDEFINED_MAX_VALUE",
176        }
177    }
178    /// Creates an enum from field names used in the ProtoBuf definition.
179    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
180        match value {
181            "AGENTS_LLM_TTFT" => Some(Self::AgentsLlmTtft),
182            "AGENTS_STT_TTFT" => Some(Self::AgentsSttTtft),
183            "AGENTS_TTS_TTFB" => Some(Self::AgentsTtsTtfb),
184            "CLIENT_VIDEO_SUBSCRIBER_FREEZE_COUNT" => Some(Self::ClientVideoSubscriberFreezeCount),
185            "CLIENT_VIDEO_SUBSCRIBER_TOTAL_FREEZE_DURATION" => Some(Self::ClientVideoSubscriberTotalFreezeDuration),
186            "CLIENT_VIDEO_SUBSCRIBER_PAUSE_COUNT" => Some(Self::ClientVideoSubscriberPauseCount),
187            "CLIENT_VIDEO_SUBSCRIBER_TOTAL_PAUSES_DURATION" => Some(Self::ClientVideoSubscriberTotalPausesDuration),
188            "CLIENT_AUDIO_SUBSCRIBER_CONCEALED_SAMPLES" => Some(Self::ClientAudioSubscriberConcealedSamples),
189            "CLIENT_AUDIO_SUBSCRIBER_SILENT_CONCEALED_SAMPLES" => Some(Self::ClientAudioSubscriberSilentConcealedSamples),
190            "CLIENT_AUDIO_SUBSCRIBER_CONCEALMENT_EVENTS" => Some(Self::ClientAudioSubscriberConcealmentEvents),
191            "CLIENT_AUDIO_SUBSCRIBER_INTERRUPTION_COUNT" => Some(Self::ClientAudioSubscriberInterruptionCount),
192            "CLIENT_AUDIO_SUBSCRIBER_TOTAL_INTERRUPTION_DURATION" => Some(Self::ClientAudioSubscriberTotalInterruptionDuration),
193            "CLIENT_SUBSCRIBER_JITTER_BUFFER_DELAY" => Some(Self::ClientSubscriberJitterBufferDelay),
194            "CLIENT_SUBSCRIBER_JITTER_BUFFER_EMITTED_COUNT" => Some(Self::ClientSubscriberJitterBufferEmittedCount),
195            "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_BANDWIDTH" => Some(Self::ClientVideoPublisherQualityLimitationDurationBandwidth),
196            "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_CPU" => Some(Self::ClientVideoPublisherQualityLimitationDurationCpu),
197            "CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_OTHER" => Some(Self::ClientVideoPublisherQualityLimitationDurationOther),
198            "PUBLISHER_RTT" => Some(Self::PublisherRtt),
199            "SERVER_MESH_RTT" => Some(Self::ServerMeshRtt),
200            "SUBSCRIBER_RTT" => Some(Self::SubscriberRtt),
201            "METRIC_LABEL_PREDEFINED_MAX_VALUE" => Some(Self::PredefinedMaxValue),
202            _ => None,
203        }
204    }
205}
206#[allow(clippy::derive_partial_eq_without_eq)]
207#[derive(Clone, PartialEq, ::prost::Message)]
208pub struct Pagination {
209    /// list entities which IDs are greater
210    #[prost(string, tag="1")]
211    pub after_id: ::prost::alloc::string::String,
212    #[prost(int32, tag="2")]
213    pub limit: i32,
214}
215#[allow(clippy::derive_partial_eq_without_eq)]
216#[derive(Clone, PartialEq, ::prost::Message)]
217pub struct TokenPagination {
218    #[prost(string, tag="1")]
219    pub token: ::prost::alloc::string::String,
220}
221/// ListUpdate is used for updated APIs where 'repeated string' field is modified.
222#[allow(clippy::derive_partial_eq_without_eq)]
223#[derive(Clone, PartialEq, ::prost::Message)]
224pub struct ListUpdate {
225    /// set the field to a new list
226    #[prost(string, repeated, tag="1")]
227    pub set: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
228    /// append items to a list, avoiding duplicates
229    #[prost(string, repeated, tag="2")]
230    pub add: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
231    /// delete items from a list
232    #[prost(string, repeated, tag="3")]
233    pub remove: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
234    /// sets the list to an empty list
235    #[prost(bool, tag="4")]
236    pub clear: bool,
237}
238#[allow(clippy::derive_partial_eq_without_eq)]
239#[derive(Clone, PartialEq, ::prost::Message)]
240pub struct Room {
241    #[prost(string, tag="1")]
242    pub sid: ::prost::alloc::string::String,
243    #[prost(string, tag="2")]
244    pub name: ::prost::alloc::string::String,
245    #[prost(uint32, tag="3")]
246    pub empty_timeout: u32,
247    #[prost(uint32, tag="14")]
248    pub departure_timeout: u32,
249    #[prost(uint32, tag="4")]
250    pub max_participants: u32,
251    #[prost(int64, tag="5")]
252    pub creation_time: i64,
253    #[prost(int64, tag="15")]
254    pub creation_time_ms: i64,
255    #[prost(string, tag="6")]
256    pub turn_password: ::prost::alloc::string::String,
257    #[prost(message, repeated, tag="7")]
258    pub enabled_codecs: ::prost::alloc::vec::Vec<Codec>,
259    #[prost(string, tag="8")]
260    pub metadata: ::prost::alloc::string::String,
261    #[prost(uint32, tag="9")]
262    pub num_participants: u32,
263    #[prost(uint32, tag="11")]
264    pub num_publishers: u32,
265    #[prost(bool, tag="10")]
266    pub active_recording: bool,
267    #[prost(message, optional, tag="13")]
268    pub version: ::core::option::Option<TimedVersion>,
269}
270#[allow(clippy::derive_partial_eq_without_eq)]
271#[derive(Clone, PartialEq, ::prost::Message)]
272pub struct Codec {
273    #[prost(string, tag="1")]
274    pub mime: ::prost::alloc::string::String,
275    #[prost(string, tag="2")]
276    pub fmtp_line: ::prost::alloc::string::String,
277}
278#[allow(clippy::derive_partial_eq_without_eq)]
279#[derive(Clone, PartialEq, ::prost::Message)]
280pub struct PlayoutDelay {
281    #[prost(bool, tag="1")]
282    pub enabled: bool,
283    #[prost(uint32, tag="2")]
284    pub min: u32,
285    #[prost(uint32, tag="3")]
286    pub max: u32,
287}
288#[allow(clippy::derive_partial_eq_without_eq)]
289#[derive(Clone, PartialEq, ::prost::Message)]
290pub struct ParticipantPermission {
291    /// allow participant to subscribe to other tracks in the room
292    #[prost(bool, tag="1")]
293    pub can_subscribe: bool,
294    /// allow participant to publish new tracks to room
295    #[prost(bool, tag="2")]
296    pub can_publish: bool,
297    /// allow participant to publish data
298    #[prost(bool, tag="3")]
299    pub can_publish_data: bool,
300    /// sources that are allowed to be published
301    #[prost(enumeration="TrackSource", repeated, tag="9")]
302    pub can_publish_sources: ::prost::alloc::vec::Vec<i32>,
303    /// indicates that it's hidden to others
304    #[prost(bool, tag="7")]
305    pub hidden: bool,
306    /// indicates it's a recorder instance
307    /// deprecated: use ParticipantInfo.kind instead
308    #[deprecated]
309    #[prost(bool, tag="8")]
310    pub recorder: bool,
311    /// indicates that participant can update own metadata and attributes
312    #[prost(bool, tag="10")]
313    pub can_update_metadata: bool,
314    /// indicates that participant is an agent
315    /// deprecated: use ParticipantInfo.kind instead
316    #[deprecated]
317    #[prost(bool, tag="11")]
318    pub agent: bool,
319    /// if a participant can subscribe to metrics
320    #[prost(bool, tag="12")]
321    pub can_subscribe_metrics: bool,
322    /// if a participant can manage an agent session via RemoteSession (control and access state)
323    #[prost(bool, tag="13")]
324    pub can_manage_agent_session: bool,
325}
326#[allow(clippy::derive_partial_eq_without_eq)]
327#[derive(Clone, PartialEq, ::prost::Message)]
328pub struct ParticipantInfo {
329    #[prost(string, tag="1")]
330    pub sid: ::prost::alloc::string::String,
331    #[prost(string, tag="2")]
332    pub identity: ::prost::alloc::string::String,
333    #[prost(enumeration="participant_info::State", tag="3")]
334    pub state: i32,
335    #[prost(message, repeated, tag="4")]
336    pub tracks: ::prost::alloc::vec::Vec<TrackInfo>,
337    #[prost(string, tag="5")]
338    pub metadata: ::prost::alloc::string::String,
339    /// timestamp when participant joined room, in seconds
340    #[prost(int64, tag="6")]
341    pub joined_at: i64,
342    /// timestamp when participant joined room, in milliseconds
343    #[prost(int64, tag="17")]
344    pub joined_at_ms: i64,
345    #[prost(string, tag="9")]
346    pub name: ::prost::alloc::string::String,
347    #[prost(uint32, tag="10")]
348    pub version: u32,
349    #[prost(message, optional, tag="11")]
350    pub permission: ::core::option::Option<ParticipantPermission>,
351    #[prost(string, tag="12")]
352    pub region: ::prost::alloc::string::String,
353    /// indicates the participant has an active publisher connection
354    /// and can publish to the server
355    #[prost(bool, tag="13")]
356    pub is_publisher: bool,
357    #[prost(enumeration="participant_info::Kind", tag="14")]
358    pub kind: i32,
359    #[prost(map="string, string", tag="15")]
360    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
361    #[prost(enumeration="DisconnectReason", tag="16")]
362    pub disconnect_reason: i32,
363    #[prost(enumeration="participant_info::KindDetail", repeated, tag="18")]
364    pub kind_details: ::prost::alloc::vec::Vec<i32>,
365    #[prost(message, repeated, tag="19")]
366    pub data_tracks: ::prost::alloc::vec::Vec<DataTrackInfo>,
367    /// protocol version used for client feature compatibility
368    #[prost(int32, tag="20")]
369    pub client_protocol: i32,
370}
371/// Nested message and enum types in `ParticipantInfo`.
372pub mod participant_info {
373    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
374    #[repr(i32)]
375    pub enum State {
376        /// websocket' connected, but not offered yet
377        Joining = 0,
378        /// server received client offer
379        Joined = 1,
380        /// ICE connectivity established
381        Active = 2,
382        /// WS disconnected
383        Disconnected = 3,
384    }
385    impl State {
386        /// String value of the enum field names used in the ProtoBuf definition.
387        ///
388        /// The values are not transformed in any way and thus are considered stable
389        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
390        pub fn as_str_name(&self) -> &'static str {
391            match self {
392                State::Joining => "JOINING",
393                State::Joined => "JOINED",
394                State::Active => "ACTIVE",
395                State::Disconnected => "DISCONNECTED",
396            }
397        }
398        /// Creates an enum from field names used in the ProtoBuf definition.
399        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
400            match value {
401                "JOINING" => Some(Self::Joining),
402                "JOINED" => Some(Self::Joined),
403                "ACTIVE" => Some(Self::Active),
404                "DISCONNECTED" => Some(Self::Disconnected),
405                _ => None,
406            }
407        }
408    }
409    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
410    #[repr(i32)]
411    pub enum Kind {
412        /// standard participants, e.g. web clients
413        Standard = 0,
414        /// only ingests streams
415        Ingress = 1,
416        /// only consumes streams
417        Egress = 2,
418        /// SIP participants
419        Sip = 3,
420        /// LiveKit agents
421        Agent = 4,
422        /// Connectors participants
423        Connector = 7,
424        /// Bridge participants
425        ///
426        /// NEXT_ID: 9
427        Bridge = 8,
428    }
429    impl Kind {
430        /// String value of the enum field names used in the ProtoBuf definition.
431        ///
432        /// The values are not transformed in any way and thus are considered stable
433        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
434        pub fn as_str_name(&self) -> &'static str {
435            match self {
436                Kind::Standard => "STANDARD",
437                Kind::Ingress => "INGRESS",
438                Kind::Egress => "EGRESS",
439                Kind::Sip => "SIP",
440                Kind::Agent => "AGENT",
441                Kind::Connector => "CONNECTOR",
442                Kind::Bridge => "BRIDGE",
443            }
444        }
445        /// Creates an enum from field names used in the ProtoBuf definition.
446        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
447            match value {
448                "STANDARD" => Some(Self::Standard),
449                "INGRESS" => Some(Self::Ingress),
450                "EGRESS" => Some(Self::Egress),
451                "SIP" => Some(Self::Sip),
452                "AGENT" => Some(Self::Agent),
453                "CONNECTOR" => Some(Self::Connector),
454                "BRIDGE" => Some(Self::Bridge),
455                _ => None,
456            }
457        }
458    }
459    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
460    #[repr(i32)]
461    pub enum KindDetail {
462        CloudAgent = 0,
463        Forwarded = 1,
464        ConnectorWhatsapp = 2,
465        ConnectorTwilio = 3,
466        /// NEXT_ID: 5
467        BridgeRtsp = 4,
468    }
469    impl KindDetail {
470        /// String value of the enum field names used in the ProtoBuf definition.
471        ///
472        /// The values are not transformed in any way and thus are considered stable
473        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
474        pub fn as_str_name(&self) -> &'static str {
475            match self {
476                KindDetail::CloudAgent => "CLOUD_AGENT",
477                KindDetail::Forwarded => "FORWARDED",
478                KindDetail::ConnectorWhatsapp => "CONNECTOR_WHATSAPP",
479                KindDetail::ConnectorTwilio => "CONNECTOR_TWILIO",
480                KindDetail::BridgeRtsp => "BRIDGE_RTSP",
481            }
482        }
483        /// Creates an enum from field names used in the ProtoBuf definition.
484        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
485            match value {
486                "CLOUD_AGENT" => Some(Self::CloudAgent),
487                "FORWARDED" => Some(Self::Forwarded),
488                "CONNECTOR_WHATSAPP" => Some(Self::ConnectorWhatsapp),
489                "CONNECTOR_TWILIO" => Some(Self::ConnectorTwilio),
490                "BRIDGE_RTSP" => Some(Self::BridgeRtsp),
491                _ => None,
492            }
493        }
494    }
495}
496#[allow(clippy::derive_partial_eq_without_eq)]
497#[derive(Clone, PartialEq, ::prost::Message)]
498pub struct Encryption {
499}
500/// Nested message and enum types in `Encryption`.
501pub mod encryption {
502    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
503    #[repr(i32)]
504    pub enum Type {
505        None = 0,
506        Gcm = 1,
507        Custom = 2,
508    }
509    impl Type {
510        /// String value of the enum field names used in the ProtoBuf definition.
511        ///
512        /// The values are not transformed in any way and thus are considered stable
513        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
514        pub fn as_str_name(&self) -> &'static str {
515            match self {
516                Type::None => "NONE",
517                Type::Gcm => "GCM",
518                Type::Custom => "CUSTOM",
519            }
520        }
521        /// Creates an enum from field names used in the ProtoBuf definition.
522        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
523            match value {
524                "NONE" => Some(Self::None),
525                "GCM" => Some(Self::Gcm),
526                "CUSTOM" => Some(Self::Custom),
527                _ => None,
528            }
529        }
530    }
531}
532#[allow(clippy::derive_partial_eq_without_eq)]
533#[derive(Clone, PartialEq, ::prost::Message)]
534pub struct SimulcastCodecInfo {
535    #[prost(string, tag="1")]
536    pub mime_type: ::prost::alloc::string::String,
537    #[prost(string, tag="2")]
538    pub mid: ::prost::alloc::string::String,
539    #[prost(string, tag="3")]
540    pub cid: ::prost::alloc::string::String,
541    #[prost(message, repeated, tag="4")]
542    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
543    #[prost(enumeration="video_layer::Mode", tag="5")]
544    pub video_layer_mode: i32,
545    /// cid (client side id for track) could be different between
546    /// signalling (AddTrackRequest) and SDP offer. This field
547    /// will be populated only if it is different to avoid
548    /// duplication and keep the representation concise.
549    #[prost(string, tag="6")]
550    pub sdp_cid: ::prost::alloc::string::String,
551}
552#[allow(clippy::derive_partial_eq_without_eq)]
553#[derive(Clone, PartialEq, ::prost::Message)]
554pub struct TrackInfo {
555    #[prost(string, tag="1")]
556    pub sid: ::prost::alloc::string::String,
557    #[prost(enumeration="TrackType", tag="2")]
558    pub r#type: i32,
559    #[prost(string, tag="3")]
560    pub name: ::prost::alloc::string::String,
561    #[prost(bool, tag="4")]
562    pub muted: bool,
563    /// original width of video (unset for audio)
564    /// clients may receive a lower resolution version with simulcast
565    #[prost(uint32, tag="5")]
566    pub width: u32,
567    /// original height of video (unset for audio)
568    #[prost(uint32, tag="6")]
569    pub height: u32,
570    /// true if track is simulcasted
571    ///
572    /// see `video_layer_mode` in `codecs`
573    #[deprecated]
574    #[prost(bool, tag="7")]
575    pub simulcast: bool,
576    /// true if DTX (Discontinuous Transmission) is disabled for audio
577    ///
578    /// deprecated in favor of `audio_features`
579    #[deprecated]
580    #[prost(bool, tag="8")]
581    pub disable_dtx: bool,
582    /// source of media
583    #[prost(enumeration="TrackSource", tag="9")]
584    pub source: i32,
585    /// see `codecs` for layers of individual codec
586    #[deprecated]
587    #[prost(message, repeated, tag="10")]
588    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
589    /// mime type of codec
590    #[prost(string, tag="11")]
591    pub mime_type: ::prost::alloc::string::String,
592    #[prost(string, tag="12")]
593    pub mid: ::prost::alloc::string::String,
594    #[prost(message, repeated, tag="13")]
595    pub codecs: ::prost::alloc::vec::Vec<SimulcastCodecInfo>,
596    /// deprecated in favor of `audio_features`
597    #[deprecated]
598    #[prost(bool, tag="14")]
599    pub stereo: bool,
600    /// true if RED (Redundant Encoding) is disabled for audio
601    #[prost(bool, tag="15")]
602    pub disable_red: bool,
603    #[prost(enumeration="encryption::Type", tag="16")]
604    pub encryption: i32,
605    #[prost(string, tag="17")]
606    pub stream: ::prost::alloc::string::String,
607    #[prost(message, optional, tag="18")]
608    pub version: ::core::option::Option<TimedVersion>,
609    #[prost(enumeration="AudioTrackFeature", repeated, tag="19")]
610    pub audio_features: ::prost::alloc::vec::Vec<i32>,
611    #[prost(enumeration="BackupCodecPolicy", tag="20")]
612    pub backup_codec_policy: i32,
613}
614#[allow(clippy::derive_partial_eq_without_eq)]
615#[derive(Clone, PartialEq, ::prost::Message)]
616pub struct DataTrackInfo {
617    /// Client-assigned, 16-bit identifier that will be attached to packets sent by the publisher.
618    #[prost(uint32, tag="1")]
619    pub pub_handle: u32,
620    /// Server-assigned track identifier.
621    #[prost(string, tag="2")]
622    pub sid: ::prost::alloc::string::String,
623    /// Human-readable identifier (e.g., `geoLocation`, `servoPosition.x`, etc.), unique per publisher.
624    #[prost(string, tag="3")]
625    pub name: ::prost::alloc::string::String,
626    /// Method used for end-to-end encryption (E2EE) on packet payloads.
627    #[prost(enumeration="encryption::Type", tag="4")]
628    pub encryption: i32,
629}
630#[allow(clippy::derive_partial_eq_without_eq)]
631#[derive(Clone, PartialEq, ::prost::Message)]
632pub struct DataTrackExtensionParticipantSid {
633    #[prost(enumeration="DataTrackExtensionId", tag="1")]
634    pub id: i32,
635    #[prost(string, tag="2")]
636    pub participant_sid: ::prost::alloc::string::String,
637}
638#[allow(clippy::derive_partial_eq_without_eq)]
639#[derive(Clone, PartialEq, ::prost::Message)]
640pub struct DataTrackSubscriptionOptions {
641    /// Rate in frames per second (FPS) the subscriber wants to receive frames at.
642    /// If omitted, the subscriber defaults to the publisher's fps
643    #[prost(uint32, optional, tag="1")]
644    pub target_fps: ::core::option::Option<u32>,
645}
646/// provide information about available spatial layers
647#[allow(clippy::derive_partial_eq_without_eq)]
648#[derive(Clone, PartialEq, ::prost::Message)]
649pub struct VideoLayer {
650    /// for tracks with a single layer, this should be HIGH
651    #[prost(enumeration="VideoQuality", tag="1")]
652    pub quality: i32,
653    #[prost(uint32, tag="2")]
654    pub width: u32,
655    #[prost(uint32, tag="3")]
656    pub height: u32,
657    /// target bitrate in bit per second (bps), server will measure actual
658    #[prost(uint32, tag="4")]
659    pub bitrate: u32,
660    #[prost(uint32, tag="5")]
661    pub ssrc: u32,
662    #[prost(int32, tag="6")]
663    pub spatial_layer: i32,
664    #[prost(string, tag="7")]
665    pub rid: ::prost::alloc::string::String,
666    #[prost(uint32, tag="8")]
667    pub repair_ssrc: u32,
668}
669/// Nested message and enum types in `VideoLayer`.
670pub mod video_layer {
671    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
672    #[repr(i32)]
673    pub enum Mode {
674        Unused = 0,
675        OneSpatialLayerPerStream = 1,
676        MultipleSpatialLayersPerStream = 2,
677        OneSpatialLayerPerStreamIncompleteRtcpSr = 3,
678    }
679    impl Mode {
680        /// String value of the enum field names used in the ProtoBuf definition.
681        ///
682        /// The values are not transformed in any way and thus are considered stable
683        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
684        pub fn as_str_name(&self) -> &'static str {
685            match self {
686                Mode::Unused => "MODE_UNUSED",
687                Mode::OneSpatialLayerPerStream => "ONE_SPATIAL_LAYER_PER_STREAM",
688                Mode::MultipleSpatialLayersPerStream => "MULTIPLE_SPATIAL_LAYERS_PER_STREAM",
689                Mode::OneSpatialLayerPerStreamIncompleteRtcpSr => "ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR",
690            }
691        }
692        /// Creates an enum from field names used in the ProtoBuf definition.
693        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
694            match value {
695                "MODE_UNUSED" => Some(Self::Unused),
696                "ONE_SPATIAL_LAYER_PER_STREAM" => Some(Self::OneSpatialLayerPerStream),
697                "MULTIPLE_SPATIAL_LAYERS_PER_STREAM" => Some(Self::MultipleSpatialLayersPerStream),
698                "ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR" => Some(Self::OneSpatialLayerPerStreamIncompleteRtcpSr),
699                _ => None,
700            }
701        }
702    }
703}
704/// new DataPacket API
705#[allow(clippy::derive_partial_eq_without_eq)]
706#[derive(Clone, PartialEq, ::prost::Message)]
707pub struct DataPacket {
708    #[deprecated]
709    #[prost(enumeration="data_packet::Kind", tag="1")]
710    pub kind: i32,
711    /// participant identity of user that sent the message
712    #[prost(string, tag="4")]
713    pub participant_identity: ::prost::alloc::string::String,
714    /// identities of participants who will receive the message (sent to all by default)
715    #[prost(string, repeated, tag="5")]
716    pub destination_identities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
717    /// sequence number of reliable packet
718    #[prost(uint32, tag="16")]
719    pub sequence: u32,
720    /// sid of the user that sent the message
721    #[prost(string, tag="17")]
722    pub participant_sid: ::prost::alloc::string::String,
723    #[prost(oneof="data_packet::Value", tags="2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18")]
724    pub value: ::core::option::Option<data_packet::Value>,
725}
726/// Nested message and enum types in `DataPacket`.
727pub mod data_packet {
728    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
729    #[repr(i32)]
730    pub enum Kind {
731        Reliable = 0,
732        Lossy = 1,
733    }
734    impl Kind {
735        /// String value of the enum field names used in the ProtoBuf definition.
736        ///
737        /// The values are not transformed in any way and thus are considered stable
738        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
739        pub fn as_str_name(&self) -> &'static str {
740            match self {
741                Kind::Reliable => "RELIABLE",
742                Kind::Lossy => "LOSSY",
743            }
744        }
745        /// Creates an enum from field names used in the ProtoBuf definition.
746        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
747            match value {
748                "RELIABLE" => Some(Self::Reliable),
749                "LOSSY" => Some(Self::Lossy),
750                _ => None,
751            }
752        }
753    }
754    #[allow(clippy::derive_partial_eq_without_eq)]
755#[derive(Clone, PartialEq, ::prost::Oneof)]
756    pub enum Value {
757        #[prost(message, tag="2")]
758        User(super::UserPacket),
759        #[prost(message, tag="3")]
760        Speaker(super::ActiveSpeakerUpdate),
761        #[prost(message, tag="6")]
762        SipDtmf(super::SipDtmf),
763        #[prost(message, tag="7")]
764        Transcription(super::Transcription),
765        #[prost(message, tag="8")]
766        Metrics(super::MetricsBatch),
767        #[prost(message, tag="9")]
768        ChatMessage(super::ChatMessage),
769        #[prost(message, tag="10")]
770        RpcRequest(super::RpcRequest),
771        #[prost(message, tag="11")]
772        RpcAck(super::RpcAck),
773        #[prost(message, tag="12")]
774        RpcResponse(super::RpcResponse),
775        #[prost(message, tag="13")]
776        StreamHeader(super::data_stream::Header),
777        #[prost(message, tag="14")]
778        StreamChunk(super::data_stream::Chunk),
779        #[prost(message, tag="15")]
780        StreamTrailer(super::data_stream::Trailer),
781        #[prost(message, tag="18")]
782        EncryptedPacket(super::EncryptedPacket),
783    }
784}
785#[allow(clippy::derive_partial_eq_without_eq)]
786#[derive(Clone, PartialEq, ::prost::Message)]
787pub struct EncryptedPacket {
788    #[prost(enumeration="encryption::Type", tag="1")]
789    pub encryption_type: i32,
790    #[prost(bytes="vec", tag="2")]
791    pub iv: ::prost::alloc::vec::Vec<u8>,
792    #[prost(uint32, tag="3")]
793    pub key_index: u32,
794    /// This is an encrypted EncryptedPacketPayload message representation
795    #[prost(bytes="vec", tag="4")]
796    pub encrypted_value: ::prost::alloc::vec::Vec<u8>,
797}
798#[allow(clippy::derive_partial_eq_without_eq)]
799#[derive(Clone, PartialEq, ::prost::Message)]
800pub struct EncryptedPacketPayload {
801    #[prost(oneof="encrypted_packet_payload::Value", tags="1, 3, 4, 5, 6, 7, 8, 9")]
802    pub value: ::core::option::Option<encrypted_packet_payload::Value>,
803}
804/// Nested message and enum types in `EncryptedPacketPayload`.
805pub mod encrypted_packet_payload {
806    #[allow(clippy::derive_partial_eq_without_eq)]
807#[derive(Clone, PartialEq, ::prost::Oneof)]
808    pub enum Value {
809        #[prost(message, tag="1")]
810        User(super::UserPacket),
811        #[prost(message, tag="3")]
812        ChatMessage(super::ChatMessage),
813        #[prost(message, tag="4")]
814        RpcRequest(super::RpcRequest),
815        #[prost(message, tag="5")]
816        RpcAck(super::RpcAck),
817        #[prost(message, tag="6")]
818        RpcResponse(super::RpcResponse),
819        #[prost(message, tag="7")]
820        StreamHeader(super::data_stream::Header),
821        #[prost(message, tag="8")]
822        StreamChunk(super::data_stream::Chunk),
823        #[prost(message, tag="9")]
824        StreamTrailer(super::data_stream::Trailer),
825    }
826}
827#[allow(clippy::derive_partial_eq_without_eq)]
828#[derive(Clone, PartialEq, ::prost::Message)]
829pub struct ActiveSpeakerUpdate {
830    #[prost(message, repeated, tag="1")]
831    pub speakers: ::prost::alloc::vec::Vec<SpeakerInfo>,
832}
833#[allow(clippy::derive_partial_eq_without_eq)]
834#[derive(Clone, PartialEq, ::prost::Message)]
835pub struct SpeakerInfo {
836    #[prost(string, tag="1")]
837    pub sid: ::prost::alloc::string::String,
838    /// audio level, 0-1.0, 1 is loudest
839    #[prost(float, tag="2")]
840    pub level: f32,
841    /// true if speaker is currently active
842    #[prost(bool, tag="3")]
843    pub active: bool,
844}
845#[allow(clippy::derive_partial_eq_without_eq)]
846#[derive(Clone, PartialEq, ::prost::Message)]
847pub struct UserPacket {
848    /// participant ID of user that sent the message
849    #[deprecated]
850    #[prost(string, tag="1")]
851    pub participant_sid: ::prost::alloc::string::String,
852    #[deprecated]
853    #[prost(string, tag="5")]
854    pub participant_identity: ::prost::alloc::string::String,
855    /// user defined payload
856    #[prost(bytes="vec", tag="2")]
857    pub payload: ::prost::alloc::vec::Vec<u8>,
858    /// the ID of the participants who will receive the message (sent to all by default)
859    #[deprecated]
860    #[prost(string, repeated, tag="3")]
861    pub destination_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
862    /// identities of participants who will receive the message (sent to all by default)
863    #[deprecated]
864    #[prost(string, repeated, tag="6")]
865    pub destination_identities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
866    /// topic under which the message was published
867    #[prost(string, optional, tag="4")]
868    pub topic: ::core::option::Option<::prost::alloc::string::String>,
869    /// Unique ID to identify the message
870    #[prost(string, optional, tag="8")]
871    pub id: ::core::option::Option<::prost::alloc::string::String>,
872    /// start and end time allow relating the message to specific media time
873    #[prost(uint64, optional, tag="9")]
874    pub start_time: ::core::option::Option<u64>,
875    #[prost(uint64, optional, tag="10")]
876    pub end_time: ::core::option::Option<u64>,
877    /// added by SDK to enable de-duping of messages, for INTERNAL USE ONLY
878    #[prost(bytes="vec", tag="11")]
879    pub nonce: ::prost::alloc::vec::Vec<u8>,
880}
881#[allow(clippy::derive_partial_eq_without_eq)]
882#[derive(Clone, PartialEq, ::prost::Message)]
883pub struct SipDtmf {
884    #[prost(uint32, tag="3")]
885    pub code: u32,
886    #[prost(string, tag="4")]
887    pub digit: ::prost::alloc::string::String,
888}
889#[allow(clippy::derive_partial_eq_without_eq)]
890#[derive(Clone, PartialEq, ::prost::Message)]
891pub struct Transcription {
892    /// Participant that got its speech transcribed
893    #[prost(string, tag="2")]
894    pub transcribed_participant_identity: ::prost::alloc::string::String,
895    #[prost(string, tag="3")]
896    pub track_id: ::prost::alloc::string::String,
897    #[prost(message, repeated, tag="4")]
898    pub segments: ::prost::alloc::vec::Vec<TranscriptionSegment>,
899}
900#[allow(clippy::derive_partial_eq_without_eq)]
901#[derive(Clone, PartialEq, ::prost::Message)]
902pub struct TranscriptionSegment {
903    #[prost(string, tag="1")]
904    pub id: ::prost::alloc::string::String,
905    #[prost(string, tag="2")]
906    pub text: ::prost::alloc::string::String,
907    #[prost(uint64, tag="3")]
908    pub start_time: u64,
909    #[prost(uint64, tag="4")]
910    pub end_time: u64,
911    #[prost(bool, tag="5")]
912    pub r#final: bool,
913    #[prost(string, tag="6")]
914    pub language: ::prost::alloc::string::String,
915}
916#[allow(clippy::derive_partial_eq_without_eq)]
917#[derive(Clone, PartialEq, ::prost::Message)]
918pub struct ChatMessage {
919    /// uuid
920    #[prost(string, tag="1")]
921    pub id: ::prost::alloc::string::String,
922    #[prost(int64, tag="2")]
923    pub timestamp: i64,
924    /// populated only if the intent is to edit/update an existing message
925    #[prost(int64, optional, tag="3")]
926    pub edit_timestamp: ::core::option::Option<i64>,
927    #[prost(string, tag="4")]
928    pub message: ::prost::alloc::string::String,
929    /// true to remove message
930    #[prost(bool, tag="5")]
931    pub deleted: bool,
932    /// true if the chat message has been generated by an agent from a participant's audio transcription
933    #[prost(bool, tag="6")]
934    pub generated: bool,
935}
936#[allow(clippy::derive_partial_eq_without_eq)]
937#[derive(Clone, PartialEq, ::prost::Message)]
938pub struct RpcRequest {
939    #[prost(string, tag="1")]
940    pub id: ::prost::alloc::string::String,
941    #[prost(string, tag="2")]
942    pub method: ::prost::alloc::string::String,
943    #[prost(string, tag="3")]
944    pub payload: ::prost::alloc::string::String,
945    #[prost(uint32, tag="4")]
946    pub response_timeout_ms: u32,
947    #[prost(uint32, tag="5")]
948    pub version: u32,
949}
950#[allow(clippy::derive_partial_eq_without_eq)]
951#[derive(Clone, PartialEq, ::prost::Message)]
952pub struct RpcAck {
953    #[prost(string, tag="1")]
954    pub request_id: ::prost::alloc::string::String,
955}
956#[allow(clippy::derive_partial_eq_without_eq)]
957#[derive(Clone, PartialEq, ::prost::Message)]
958pub struct RpcResponse {
959    #[prost(string, tag="1")]
960    pub request_id: ::prost::alloc::string::String,
961    #[prost(oneof="rpc_response::Value", tags="2, 3")]
962    pub value: ::core::option::Option<rpc_response::Value>,
963}
964/// Nested message and enum types in `RpcResponse`.
965pub mod rpc_response {
966    #[allow(clippy::derive_partial_eq_without_eq)]
967#[derive(Clone, PartialEq, ::prost::Oneof)]
968    pub enum Value {
969        #[prost(string, tag="2")]
970        Payload(::prost::alloc::string::String),
971        #[prost(message, tag="3")]
972        Error(super::RpcError),
973    }
974}
975#[allow(clippy::derive_partial_eq_without_eq)]
976#[derive(Clone, PartialEq, ::prost::Message)]
977pub struct RpcError {
978    #[prost(uint32, tag="1")]
979    pub code: u32,
980    #[prost(string, tag="2")]
981    pub message: ::prost::alloc::string::String,
982    #[prost(string, tag="3")]
983    pub data: ::prost::alloc::string::String,
984}
985#[allow(clippy::derive_partial_eq_without_eq)]
986#[derive(Clone, PartialEq, ::prost::Message)]
987pub struct ParticipantTracks {
988    /// participant ID of participant to whom the tracks belong
989    #[prost(string, tag="1")]
990    pub participant_sid: ::prost::alloc::string::String,
991    #[prost(string, repeated, tag="2")]
992    pub track_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
993}
994/// details about the server
995#[allow(clippy::derive_partial_eq_without_eq)]
996#[derive(Clone, PartialEq, ::prost::Message)]
997pub struct ServerInfo {
998    #[prost(enumeration="server_info::Edition", tag="1")]
999    pub edition: i32,
1000    #[prost(string, tag="2")]
1001    pub version: ::prost::alloc::string::String,
1002    #[prost(int32, tag="3")]
1003    pub protocol: i32,
1004    #[prost(string, tag="4")]
1005    pub region: ::prost::alloc::string::String,
1006    #[prost(string, tag="5")]
1007    pub node_id: ::prost::alloc::string::String,
1008    /// additional debugging information. sent only if server is in development mode
1009    #[prost(string, tag="6")]
1010    pub debug_info: ::prost::alloc::string::String,
1011    #[prost(int32, tag="7")]
1012    pub agent_protocol: i32,
1013}
1014/// Nested message and enum types in `ServerInfo`.
1015pub mod server_info {
1016    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1017    #[repr(i32)]
1018    pub enum Edition {
1019        Standard = 0,
1020        Cloud = 1,
1021    }
1022    impl Edition {
1023        /// String value of the enum field names used in the ProtoBuf definition.
1024        ///
1025        /// The values are not transformed in any way and thus are considered stable
1026        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1027        pub fn as_str_name(&self) -> &'static str {
1028            match self {
1029                Edition::Standard => "Standard",
1030                Edition::Cloud => "Cloud",
1031            }
1032        }
1033        /// Creates an enum from field names used in the ProtoBuf definition.
1034        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1035            match value {
1036                "Standard" => Some(Self::Standard),
1037                "Cloud" => Some(Self::Cloud),
1038                _ => None,
1039            }
1040        }
1041    }
1042}
1043/// details about the client
1044#[allow(clippy::derive_partial_eq_without_eq)]
1045#[derive(Clone, PartialEq, ::prost::Message)]
1046pub struct ClientInfo {
1047    #[prost(enumeration="client_info::Sdk", tag="1")]
1048    pub sdk: i32,
1049    #[prost(string, tag="2")]
1050    pub version: ::prost::alloc::string::String,
1051    #[prost(int32, tag="3")]
1052    pub protocol: i32,
1053    #[prost(string, tag="4")]
1054    pub os: ::prost::alloc::string::String,
1055    #[prost(string, tag="5")]
1056    pub os_version: ::prost::alloc::string::String,
1057    #[prost(string, tag="6")]
1058    pub device_model: ::prost::alloc::string::String,
1059    #[prost(string, tag="7")]
1060    pub browser: ::prost::alloc::string::String,
1061    #[prost(string, tag="8")]
1062    pub browser_version: ::prost::alloc::string::String,
1063    #[prost(string, tag="9")]
1064    pub address: ::prost::alloc::string::String,
1065    /// wifi, wired, cellular, vpn, empty if not known
1066    #[prost(string, tag="10")]
1067    pub network: ::prost::alloc::string::String,
1068    /// comma separated list of additional LiveKit SDKs in use of this client, with versions
1069    /// e.g. "components-js:1.2.3,track-processors-js:1.2.3"
1070    #[prost(string, tag="11")]
1071    pub other_sdks: ::prost::alloc::string::String,
1072    /// client protocol version
1073    #[prost(int32, tag="12")]
1074    pub client_protocol: i32,
1075}
1076/// Nested message and enum types in `ClientInfo`.
1077pub mod client_info {
1078    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1079    #[repr(i32)]
1080    pub enum Sdk {
1081        Unknown = 0,
1082        Js = 1,
1083        Swift = 2,
1084        Android = 3,
1085        Flutter = 4,
1086        Go = 5,
1087        Unity = 6,
1088        ReactNative = 7,
1089        Rust = 8,
1090        Python = 9,
1091        Cpp = 10,
1092        UnityWeb = 11,
1093        Node = 12,
1094        Unreal = 13,
1095        Esp32 = 14,
1096    }
1097    impl Sdk {
1098        /// String value of the enum field names used in the ProtoBuf definition.
1099        ///
1100        /// The values are not transformed in any way and thus are considered stable
1101        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1102        pub fn as_str_name(&self) -> &'static str {
1103            match self {
1104                Sdk::Unknown => "UNKNOWN",
1105                Sdk::Js => "JS",
1106                Sdk::Swift => "SWIFT",
1107                Sdk::Android => "ANDROID",
1108                Sdk::Flutter => "FLUTTER",
1109                Sdk::Go => "GO",
1110                Sdk::Unity => "UNITY",
1111                Sdk::ReactNative => "REACT_NATIVE",
1112                Sdk::Rust => "RUST",
1113                Sdk::Python => "PYTHON",
1114                Sdk::Cpp => "CPP",
1115                Sdk::UnityWeb => "UNITY_WEB",
1116                Sdk::Node => "NODE",
1117                Sdk::Unreal => "UNREAL",
1118                Sdk::Esp32 => "ESP32",
1119            }
1120        }
1121        /// Creates an enum from field names used in the ProtoBuf definition.
1122        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1123            match value {
1124                "UNKNOWN" => Some(Self::Unknown),
1125                "JS" => Some(Self::Js),
1126                "SWIFT" => Some(Self::Swift),
1127                "ANDROID" => Some(Self::Android),
1128                "FLUTTER" => Some(Self::Flutter),
1129                "GO" => Some(Self::Go),
1130                "UNITY" => Some(Self::Unity),
1131                "REACT_NATIVE" => Some(Self::ReactNative),
1132                "RUST" => Some(Self::Rust),
1133                "PYTHON" => Some(Self::Python),
1134                "CPP" => Some(Self::Cpp),
1135                "UNITY_WEB" => Some(Self::UnityWeb),
1136                "NODE" => Some(Self::Node),
1137                "UNREAL" => Some(Self::Unreal),
1138                "ESP32" => Some(Self::Esp32),
1139                _ => None,
1140            }
1141        }
1142    }
1143}
1144/// server provided client configuration
1145#[allow(clippy::derive_partial_eq_without_eq)]
1146#[derive(Clone, PartialEq, ::prost::Message)]
1147pub struct ClientConfiguration {
1148    #[prost(message, optional, tag="1")]
1149    pub video: ::core::option::Option<VideoConfiguration>,
1150    #[prost(message, optional, tag="2")]
1151    pub screen: ::core::option::Option<VideoConfiguration>,
1152    #[prost(enumeration="ClientConfigSetting", tag="3")]
1153    pub resume_connection: i32,
1154    #[prost(message, optional, tag="4")]
1155    pub disabled_codecs: ::core::option::Option<DisabledCodecs>,
1156    #[prost(enumeration="ClientConfigSetting", tag="5")]
1157    pub force_relay: i32,
1158}
1159#[allow(clippy::derive_partial_eq_without_eq)]
1160#[derive(Clone, PartialEq, ::prost::Message)]
1161pub struct VideoConfiguration {
1162    #[prost(enumeration="ClientConfigSetting", tag="1")]
1163    pub hardware_encoder: i32,
1164}
1165#[allow(clippy::derive_partial_eq_without_eq)]
1166#[derive(Clone, PartialEq, ::prost::Message)]
1167pub struct DisabledCodecs {
1168    /// disabled for both publish and subscribe
1169    #[prost(message, repeated, tag="1")]
1170    pub codecs: ::prost::alloc::vec::Vec<Codec>,
1171    /// only disable for publish
1172    #[prost(message, repeated, tag="2")]
1173    pub publish: ::prost::alloc::vec::Vec<Codec>,
1174}
1175#[allow(clippy::derive_partial_eq_without_eq)]
1176#[derive(Clone, PartialEq, ::prost::Message)]
1177pub struct RtpDrift {
1178    #[prost(message, optional, tag="1")]
1179    pub start_time: ::core::option::Option<::pbjson_types::Timestamp>,
1180    #[prost(message, optional, tag="2")]
1181    pub end_time: ::core::option::Option<::pbjson_types::Timestamp>,
1182    #[prost(double, tag="3")]
1183    pub duration: f64,
1184    #[prost(uint64, tag="4")]
1185    pub start_timestamp: u64,
1186    #[prost(uint64, tag="5")]
1187    pub end_timestamp: u64,
1188    #[prost(uint64, tag="6")]
1189    pub rtp_clock_ticks: u64,
1190    #[prost(int64, tag="7")]
1191    pub drift_samples: i64,
1192    #[prost(double, tag="8")]
1193    pub drift_ms: f64,
1194    #[prost(double, tag="9")]
1195    pub clock_rate: f64,
1196}
1197#[allow(clippy::derive_partial_eq_without_eq)]
1198#[derive(Clone, PartialEq, ::prost::Message)]
1199pub struct RtpStats {
1200    #[prost(message, optional, tag="1")]
1201    pub start_time: ::core::option::Option<::pbjson_types::Timestamp>,
1202    #[prost(message, optional, tag="2")]
1203    pub end_time: ::core::option::Option<::pbjson_types::Timestamp>,
1204    #[prost(double, tag="3")]
1205    pub duration: f64,
1206    #[prost(uint32, tag="4")]
1207    pub packets: u32,
1208    #[prost(double, tag="5")]
1209    pub packet_rate: f64,
1210    #[prost(uint64, tag="6")]
1211    pub bytes: u64,
1212    #[prost(uint64, tag="39")]
1213    pub header_bytes: u64,
1214    #[prost(double, tag="7")]
1215    pub bitrate: f64,
1216    #[prost(uint32, tag="8")]
1217    pub packets_lost: u32,
1218    #[prost(double, tag="9")]
1219    pub packet_loss_rate: f64,
1220    #[prost(float, tag="10")]
1221    pub packet_loss_percentage: f32,
1222    #[prost(uint32, tag="11")]
1223    pub packets_duplicate: u32,
1224    #[prost(double, tag="12")]
1225    pub packet_duplicate_rate: f64,
1226    #[prost(uint64, tag="13")]
1227    pub bytes_duplicate: u64,
1228    #[prost(uint64, tag="40")]
1229    pub header_bytes_duplicate: u64,
1230    #[prost(double, tag="14")]
1231    pub bitrate_duplicate: f64,
1232    #[prost(uint32, tag="15")]
1233    pub packets_padding: u32,
1234    #[prost(double, tag="16")]
1235    pub packet_padding_rate: f64,
1236    #[prost(uint64, tag="17")]
1237    pub bytes_padding: u64,
1238    #[prost(uint64, tag="41")]
1239    pub header_bytes_padding: u64,
1240    #[prost(double, tag="18")]
1241    pub bitrate_padding: f64,
1242    #[prost(uint32, tag="19")]
1243    pub packets_out_of_order: u32,
1244    #[prost(uint32, tag="20")]
1245    pub frames: u32,
1246    #[prost(double, tag="21")]
1247    pub frame_rate: f64,
1248    #[prost(double, tag="22")]
1249    pub jitter_current: f64,
1250    #[prost(double, tag="23")]
1251    pub jitter_max: f64,
1252    #[prost(map="int32, uint32", tag="24")]
1253    pub gap_histogram: ::std::collections::HashMap<i32, u32>,
1254    #[prost(uint32, tag="25")]
1255    pub nacks: u32,
1256    #[prost(uint32, tag="37")]
1257    pub nack_acks: u32,
1258    #[prost(uint32, tag="26")]
1259    pub nack_misses: u32,
1260    #[prost(uint32, tag="38")]
1261    pub nack_repeated: u32,
1262    #[prost(uint32, tag="27")]
1263    pub plis: u32,
1264    #[prost(message, optional, tag="28")]
1265    pub last_pli: ::core::option::Option<::pbjson_types::Timestamp>,
1266    #[prost(uint32, tag="29")]
1267    pub firs: u32,
1268    #[prost(message, optional, tag="30")]
1269    pub last_fir: ::core::option::Option<::pbjson_types::Timestamp>,
1270    #[prost(uint32, tag="31")]
1271    pub rtt_current: u32,
1272    #[prost(uint32, tag="32")]
1273    pub rtt_max: u32,
1274    #[prost(uint32, tag="33")]
1275    pub key_frames: u32,
1276    #[prost(message, optional, tag="34")]
1277    pub last_key_frame: ::core::option::Option<::pbjson_types::Timestamp>,
1278    #[prost(uint32, tag="35")]
1279    pub layer_lock_plis: u32,
1280    #[prost(message, optional, tag="36")]
1281    pub last_layer_lock_pli: ::core::option::Option<::pbjson_types::Timestamp>,
1282    #[prost(message, optional, tag="44")]
1283    pub packet_drift: ::core::option::Option<RtpDrift>,
1284    #[prost(message, optional, tag="45")]
1285    pub ntp_report_drift: ::core::option::Option<RtpDrift>,
1286    #[prost(message, optional, tag="46")]
1287    pub rebased_report_drift: ::core::option::Option<RtpDrift>,
1288    /// NEXT_ID: 48
1289    #[prost(message, optional, tag="47")]
1290    pub received_report_drift: ::core::option::Option<RtpDrift>,
1291}
1292#[allow(clippy::derive_partial_eq_without_eq)]
1293#[derive(Clone, PartialEq, ::prost::Message)]
1294pub struct RtcpSenderReportState {
1295    #[prost(uint32, tag="1")]
1296    pub rtp_timestamp: u32,
1297    #[prost(uint64, tag="2")]
1298    pub rtp_timestamp_ext: u64,
1299    #[prost(uint64, tag="3")]
1300    pub ntp_timestamp: u64,
1301    /// time at which this happened
1302    #[prost(int64, tag="4")]
1303    pub at: i64,
1304    #[prost(int64, tag="5")]
1305    pub at_adjusted: i64,
1306    #[prost(uint32, tag="6")]
1307    pub packets: u32,
1308    #[prost(uint64, tag="7")]
1309    pub octets: u64,
1310}
1311#[allow(clippy::derive_partial_eq_without_eq)]
1312#[derive(Clone, PartialEq, ::prost::Message)]
1313pub struct RtpForwarderState {
1314    #[prost(bool, tag="1")]
1315    pub started: bool,
1316    #[prost(int32, tag="2")]
1317    pub reference_layer_spatial: i32,
1318    #[prost(int64, tag="3")]
1319    pub pre_start_time: i64,
1320    #[prost(uint64, tag="4")]
1321    pub ext_first_timestamp: u64,
1322    #[prost(uint64, tag="5")]
1323    pub dummy_start_timestamp_offset: u64,
1324    #[prost(message, optional, tag="6")]
1325    pub rtp_munger: ::core::option::Option<RtpMungerState>,
1326    #[prost(message, repeated, tag="8")]
1327    pub sender_report_state: ::prost::alloc::vec::Vec<RtcpSenderReportState>,
1328    #[prost(oneof="rtp_forwarder_state::CodecMunger", tags="7")]
1329    pub codec_munger: ::core::option::Option<rtp_forwarder_state::CodecMunger>,
1330}
1331/// Nested message and enum types in `RTPForwarderState`.
1332pub mod rtp_forwarder_state {
1333    #[allow(clippy::derive_partial_eq_without_eq)]
1334#[derive(Clone, PartialEq, ::prost::Oneof)]
1335    pub enum CodecMunger {
1336        #[prost(message, tag="7")]
1337        Vp8Munger(super::Vp8MungerState),
1338    }
1339}
1340#[allow(clippy::derive_partial_eq_without_eq)]
1341#[derive(Clone, PartialEq, ::prost::Message)]
1342pub struct RtpMungerState {
1343    #[prost(uint64, tag="1")]
1344    pub ext_last_sequence_number: u64,
1345    #[prost(uint64, tag="2")]
1346    pub ext_second_last_sequence_number: u64,
1347    #[prost(uint64, tag="3")]
1348    pub ext_last_timestamp: u64,
1349    #[prost(uint64, tag="4")]
1350    pub ext_second_last_timestamp: u64,
1351    #[prost(bool, tag="5")]
1352    pub last_marker: bool,
1353    #[prost(bool, tag="6")]
1354    pub second_last_marker: bool,
1355}
1356#[allow(clippy::derive_partial_eq_without_eq)]
1357#[derive(Clone, PartialEq, ::prost::Message)]
1358pub struct Vp8MungerState {
1359    #[prost(int32, tag="1")]
1360    pub ext_last_picture_id: i32,
1361    #[prost(bool, tag="2")]
1362    pub picture_id_used: bool,
1363    #[prost(uint32, tag="3")]
1364    pub last_tl0_pic_idx: u32,
1365    #[prost(bool, tag="4")]
1366    pub tl0_pic_idx_used: bool,
1367    #[prost(bool, tag="5")]
1368    pub tid_used: bool,
1369    #[prost(uint32, tag="6")]
1370    pub last_key_idx: u32,
1371    #[prost(bool, tag="7")]
1372    pub key_idx_used: bool,
1373}
1374#[allow(clippy::derive_partial_eq_without_eq)]
1375#[derive(Clone, PartialEq, ::prost::Message)]
1376pub struct TimedVersion {
1377    #[prost(int64, tag="1")]
1378    pub unix_micro: i64,
1379    #[prost(int32, tag="2")]
1380    pub ticks: i32,
1381}
1382#[allow(clippy::derive_partial_eq_without_eq)]
1383#[derive(Clone, PartialEq, ::prost::Message)]
1384pub struct DataStream {
1385}
1386/// Nested message and enum types in `DataStream`.
1387pub mod data_stream {
1388    /// header properties specific to text streams
1389    #[allow(clippy::derive_partial_eq_without_eq)]
1390#[derive(Clone, PartialEq, ::prost::Message)]
1391    pub struct TextHeader {
1392        #[prost(enumeration="OperationType", tag="1")]
1393        pub operation_type: i32,
1394        /// Optional: Version for updates/edits
1395        #[prost(int32, tag="2")]
1396        pub version: i32,
1397        /// Optional: Reply to specific message
1398        #[prost(string, tag="3")]
1399        pub reply_to_stream_id: ::prost::alloc::string::String,
1400        /// file attachments for text streams
1401        #[prost(string, repeated, tag="4")]
1402        pub attached_stream_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1403        /// true if the text has been generated by an agent from a participant's audio transcription
1404        #[prost(bool, tag="5")]
1405        pub generated: bool,
1406    }
1407    /// header properties specific to byte or file streams
1408    #[allow(clippy::derive_partial_eq_without_eq)]
1409#[derive(Clone, PartialEq, ::prost::Message)]
1410    pub struct ByteHeader {
1411        #[prost(string, tag="1")]
1412        pub name: ::prost::alloc::string::String,
1413    }
1414    /// main DataStream.Header that contains a oneof for specific headers
1415    #[allow(clippy::derive_partial_eq_without_eq)]
1416#[derive(Clone, PartialEq, ::prost::Message)]
1417    pub struct Header {
1418        /// unique identifier for this data stream
1419        #[prost(string, tag="1")]
1420        pub stream_id: ::prost::alloc::string::String,
1421        /// using int64 for Unix timestamp
1422        #[prost(int64, tag="2")]
1423        pub timestamp: i64,
1424        #[prost(string, tag="3")]
1425        pub topic: ::prost::alloc::string::String,
1426        #[prost(string, tag="4")]
1427        pub mime_type: ::prost::alloc::string::String,
1428        /// only populated for finite streams, if it's a stream of unknown size this stays empty
1429        #[prost(uint64, optional, tag="5")]
1430        pub total_length: ::core::option::Option<u64>,
1431        ///   this is set on the DataPacket
1432        #[deprecated]
1433        #[prost(enumeration="super::encryption::Type", tag="7")]
1434        pub encryption_type: i32,
1435        /// user defined attributes map that can carry additional info
1436        #[prost(map="string, string", tag="8")]
1437        pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1438        /// oneof to choose between specific header types
1439        #[prost(oneof="header::ContentHeader", tags="9, 10")]
1440        pub content_header: ::core::option::Option<header::ContentHeader>,
1441    }
1442    /// Nested message and enum types in `Header`.
1443    pub mod header {
1444        /// oneof to choose between specific header types
1445        #[allow(clippy::derive_partial_eq_without_eq)]
1446#[derive(Clone, PartialEq, ::prost::Oneof)]
1447        pub enum ContentHeader {
1448            #[prost(message, tag="9")]
1449            TextHeader(super::TextHeader),
1450            #[prost(message, tag="10")]
1451            ByteHeader(super::ByteHeader),
1452        }
1453    }
1454    #[allow(clippy::derive_partial_eq_without_eq)]
1455#[derive(Clone, PartialEq, ::prost::Message)]
1456    pub struct Chunk {
1457        /// unique identifier for this data stream to map it to the correct header
1458        #[prost(string, tag="1")]
1459        pub stream_id: ::prost::alloc::string::String,
1460        #[prost(uint64, tag="2")]
1461        pub chunk_index: u64,
1462        /// content as binary (bytes)
1463        #[prost(bytes="vec", tag="3")]
1464        pub content: ::prost::alloc::vec::Vec<u8>,
1465        /// a version indicating that this chunk_index has been retroactively modified and the original one needs to be replaced
1466        #[prost(int32, tag="4")]
1467        pub version: i32,
1468        /// this is set on the DataPacket
1469        #[deprecated]
1470        #[prost(bytes="vec", optional, tag="5")]
1471        pub iv: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1472    }
1473    #[allow(clippy::derive_partial_eq_without_eq)]
1474#[derive(Clone, PartialEq, ::prost::Message)]
1475    pub struct Trailer {
1476        /// unique identifier for this data stream
1477        #[prost(string, tag="1")]
1478        pub stream_id: ::prost::alloc::string::String,
1479        /// reason why the stream was closed (could contain "error" / "interrupted" / empty for expected end)
1480        #[prost(string, tag="2")]
1481        pub reason: ::prost::alloc::string::String,
1482        /// finalizing updates for the stream, can also include additional insights for errors or endTime for transcription
1483        #[prost(map="string, string", tag="3")]
1484        pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1485    }
1486    /// enum for operation types (specific to TextHeader)
1487    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1488    #[repr(i32)]
1489    pub enum OperationType {
1490        Create = 0,
1491        Update = 1,
1492        Delete = 2,
1493        Reaction = 3,
1494    }
1495    impl OperationType {
1496        /// String value of the enum field names used in the ProtoBuf definition.
1497        ///
1498        /// The values are not transformed in any way and thus are considered stable
1499        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1500        pub fn as_str_name(&self) -> &'static str {
1501            match self {
1502                OperationType::Create => "CREATE",
1503                OperationType::Update => "UPDATE",
1504                OperationType::Delete => "DELETE",
1505                OperationType::Reaction => "REACTION",
1506            }
1507        }
1508        /// Creates an enum from field names used in the ProtoBuf definition.
1509        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1510            match value {
1511                "CREATE" => Some(Self::Create),
1512                "UPDATE" => Some(Self::Update),
1513                "DELETE" => Some(Self::Delete),
1514                "REACTION" => Some(Self::Reaction),
1515                _ => None,
1516            }
1517        }
1518    }
1519}
1520#[allow(clippy::derive_partial_eq_without_eq)]
1521#[derive(Clone, PartialEq, ::prost::Message)]
1522pub struct FilterParams {
1523    #[prost(string, repeated, tag="1")]
1524    pub include_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1525    #[prost(string, repeated, tag="2")]
1526    pub exclude_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1527}
1528#[allow(clippy::derive_partial_eq_without_eq)]
1529#[derive(Clone, PartialEq, ::prost::Message)]
1530pub struct WebhookConfig {
1531    #[prost(string, tag="1")]
1532    pub url: ::prost::alloc::string::String,
1533    #[prost(string, tag="2")]
1534    pub signing_key: ::prost::alloc::string::String,
1535    #[prost(message, optional, tag="3")]
1536    pub filter_params: ::core::option::Option<FilterParams>,
1537}
1538#[allow(clippy::derive_partial_eq_without_eq)]
1539#[derive(Clone, PartialEq, ::prost::Message)]
1540pub struct SubscribedAudioCodec {
1541    #[prost(string, tag="1")]
1542    pub codec: ::prost::alloc::string::String,
1543    #[prost(bool, tag="2")]
1544    pub enabled: bool,
1545}
1546#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1547#[repr(i32)]
1548pub enum AudioCodec {
1549    DefaultAc = 0,
1550    Opus = 1,
1551    Aac = 2,
1552    AcMp3 = 3,
1553}
1554impl AudioCodec {
1555    /// String value of the enum field names used in the ProtoBuf definition.
1556    ///
1557    /// The values are not transformed in any way and thus are considered stable
1558    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1559    pub fn as_str_name(&self) -> &'static str {
1560        match self {
1561            AudioCodec::DefaultAc => "DEFAULT_AC",
1562            AudioCodec::Opus => "OPUS",
1563            AudioCodec::Aac => "AAC",
1564            AudioCodec::AcMp3 => "AC_MP3",
1565        }
1566    }
1567    /// Creates an enum from field names used in the ProtoBuf definition.
1568    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1569        match value {
1570            "DEFAULT_AC" => Some(Self::DefaultAc),
1571            "OPUS" => Some(Self::Opus),
1572            "AAC" => Some(Self::Aac),
1573            "AC_MP3" => Some(Self::AcMp3),
1574            _ => None,
1575        }
1576    }
1577}
1578#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1579#[repr(i32)]
1580pub enum VideoCodec {
1581    DefaultVc = 0,
1582    H264Baseline = 1,
1583    H264Main = 2,
1584    H264High = 3,
1585    Vp8 = 4,
1586}
1587impl VideoCodec {
1588    /// String value of the enum field names used in the ProtoBuf definition.
1589    ///
1590    /// The values are not transformed in any way and thus are considered stable
1591    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1592    pub fn as_str_name(&self) -> &'static str {
1593        match self {
1594            VideoCodec::DefaultVc => "DEFAULT_VC",
1595            VideoCodec::H264Baseline => "H264_BASELINE",
1596            VideoCodec::H264Main => "H264_MAIN",
1597            VideoCodec::H264High => "H264_HIGH",
1598            VideoCodec::Vp8 => "VP8",
1599        }
1600    }
1601    /// Creates an enum from field names used in the ProtoBuf definition.
1602    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1603        match value {
1604            "DEFAULT_VC" => Some(Self::DefaultVc),
1605            "H264_BASELINE" => Some(Self::H264Baseline),
1606            "H264_MAIN" => Some(Self::H264Main),
1607            "H264_HIGH" => Some(Self::H264High),
1608            "VP8" => Some(Self::Vp8),
1609            _ => None,
1610        }
1611    }
1612}
1613#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1614#[repr(i32)]
1615pub enum ImageCodec {
1616    IcDefault = 0,
1617    IcJpeg = 1,
1618}
1619impl ImageCodec {
1620    /// String value of the enum field names used in the ProtoBuf definition.
1621    ///
1622    /// The values are not transformed in any way and thus are considered stable
1623    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1624    pub fn as_str_name(&self) -> &'static str {
1625        match self {
1626            ImageCodec::IcDefault => "IC_DEFAULT",
1627            ImageCodec::IcJpeg => "IC_JPEG",
1628        }
1629    }
1630    /// Creates an enum from field names used in the ProtoBuf definition.
1631    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1632        match value {
1633            "IC_DEFAULT" => Some(Self::IcDefault),
1634            "IC_JPEG" => Some(Self::IcJpeg),
1635            _ => None,
1636        }
1637    }
1638}
1639/// Policy for publisher to handle subscribers that are unable to support the primary codec of a track
1640#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1641#[repr(i32)]
1642pub enum BackupCodecPolicy {
1643    /// default behavior, the track prefer to regress to backup codec and all subscribers will receive the backup codec,
1644    /// the sfu will try to regress codec if possible but not assured.
1645    PreferRegression = 0,
1646    /// encoding/send the primary and backup codec simultaneously
1647    Simulcast = 1,
1648    /// force the track to regress to backup codec, this option can be used in video conference or the publisher has limited bandwidth/encoding power
1649    Regression = 2,
1650}
1651impl BackupCodecPolicy {
1652    /// String value of the enum field names used in the ProtoBuf definition.
1653    ///
1654    /// The values are not transformed in any way and thus are considered stable
1655    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1656    pub fn as_str_name(&self) -> &'static str {
1657        match self {
1658            BackupCodecPolicy::PreferRegression => "PREFER_REGRESSION",
1659            BackupCodecPolicy::Simulcast => "SIMULCAST",
1660            BackupCodecPolicy::Regression => "REGRESSION",
1661        }
1662    }
1663    /// Creates an enum from field names used in the ProtoBuf definition.
1664    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1665        match value {
1666            "PREFER_REGRESSION" => Some(Self::PreferRegression),
1667            "SIMULCAST" => Some(Self::Simulcast),
1668            "REGRESSION" => Some(Self::Regression),
1669            _ => None,
1670        }
1671    }
1672}
1673#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1674#[repr(i32)]
1675pub enum TrackType {
1676    Audio = 0,
1677    Video = 1,
1678    Data = 2,
1679}
1680impl TrackType {
1681    /// String value of the enum field names used in the ProtoBuf definition.
1682    ///
1683    /// The values are not transformed in any way and thus are considered stable
1684    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1685    pub fn as_str_name(&self) -> &'static str {
1686        match self {
1687            TrackType::Audio => "AUDIO",
1688            TrackType::Video => "VIDEO",
1689            TrackType::Data => "DATA",
1690        }
1691    }
1692    /// Creates an enum from field names used in the ProtoBuf definition.
1693    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1694        match value {
1695            "AUDIO" => Some(Self::Audio),
1696            "VIDEO" => Some(Self::Video),
1697            "DATA" => Some(Self::Data),
1698            _ => None,
1699        }
1700    }
1701}
1702#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1703#[repr(i32)]
1704pub enum TrackSource {
1705    Unknown = 0,
1706    Camera = 1,
1707    Microphone = 2,
1708    ScreenShare = 3,
1709    ScreenShareAudio = 4,
1710}
1711impl TrackSource {
1712    /// String value of the enum field names used in the ProtoBuf definition.
1713    ///
1714    /// The values are not transformed in any way and thus are considered stable
1715    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1716    pub fn as_str_name(&self) -> &'static str {
1717        match self {
1718            TrackSource::Unknown => "UNKNOWN",
1719            TrackSource::Camera => "CAMERA",
1720            TrackSource::Microphone => "MICROPHONE",
1721            TrackSource::ScreenShare => "SCREEN_SHARE",
1722            TrackSource::ScreenShareAudio => "SCREEN_SHARE_AUDIO",
1723        }
1724    }
1725    /// Creates an enum from field names used in the ProtoBuf definition.
1726    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1727        match value {
1728            "UNKNOWN" => Some(Self::Unknown),
1729            "CAMERA" => Some(Self::Camera),
1730            "MICROPHONE" => Some(Self::Microphone),
1731            "SCREEN_SHARE" => Some(Self::ScreenShare),
1732            "SCREEN_SHARE_AUDIO" => Some(Self::ScreenShareAudio),
1733            _ => None,
1734        }
1735    }
1736}
1737#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1738#[repr(i32)]
1739pub enum DataTrackExtensionId {
1740    DteiInvalid = 0,
1741    DteiParticipantSid = 1,
1742}
1743impl DataTrackExtensionId {
1744    /// String value of the enum field names used in the ProtoBuf definition.
1745    ///
1746    /// The values are not transformed in any way and thus are considered stable
1747    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1748    pub fn as_str_name(&self) -> &'static str {
1749        match self {
1750            DataTrackExtensionId::DteiInvalid => "DTEI_INVALID",
1751            DataTrackExtensionId::DteiParticipantSid => "DTEI_PARTICIPANT_SID",
1752        }
1753    }
1754    /// Creates an enum from field names used in the ProtoBuf definition.
1755    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1756        match value {
1757            "DTEI_INVALID" => Some(Self::DteiInvalid),
1758            "DTEI_PARTICIPANT_SID" => Some(Self::DteiParticipantSid),
1759            _ => None,
1760        }
1761    }
1762}
1763#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1764#[repr(i32)]
1765pub enum VideoQuality {
1766    Low = 0,
1767    Medium = 1,
1768    High = 2,
1769    Off = 3,
1770}
1771impl VideoQuality {
1772    /// String value of the enum field names used in the ProtoBuf definition.
1773    ///
1774    /// The values are not transformed in any way and thus are considered stable
1775    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1776    pub fn as_str_name(&self) -> &'static str {
1777        match self {
1778            VideoQuality::Low => "LOW",
1779            VideoQuality::Medium => "MEDIUM",
1780            VideoQuality::High => "HIGH",
1781            VideoQuality::Off => "OFF",
1782        }
1783    }
1784    /// Creates an enum from field names used in the ProtoBuf definition.
1785    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1786        match value {
1787            "LOW" => Some(Self::Low),
1788            "MEDIUM" => Some(Self::Medium),
1789            "HIGH" => Some(Self::High),
1790            "OFF" => Some(Self::Off),
1791            _ => None,
1792        }
1793    }
1794}
1795#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1796#[repr(i32)]
1797pub enum ConnectionQuality {
1798    Poor = 0,
1799    Good = 1,
1800    Excellent = 2,
1801    Lost = 3,
1802}
1803impl ConnectionQuality {
1804    /// String value of the enum field names used in the ProtoBuf definition.
1805    ///
1806    /// The values are not transformed in any way and thus are considered stable
1807    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1808    pub fn as_str_name(&self) -> &'static str {
1809        match self {
1810            ConnectionQuality::Poor => "POOR",
1811            ConnectionQuality::Good => "GOOD",
1812            ConnectionQuality::Excellent => "EXCELLENT",
1813            ConnectionQuality::Lost => "LOST",
1814        }
1815    }
1816    /// Creates an enum from field names used in the ProtoBuf definition.
1817    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1818        match value {
1819            "POOR" => Some(Self::Poor),
1820            "GOOD" => Some(Self::Good),
1821            "EXCELLENT" => Some(Self::Excellent),
1822            "LOST" => Some(Self::Lost),
1823            _ => None,
1824        }
1825    }
1826}
1827#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1828#[repr(i32)]
1829pub enum ClientConfigSetting {
1830    Unset = 0,
1831    Disabled = 1,
1832    Enabled = 2,
1833}
1834impl ClientConfigSetting {
1835    /// String value of the enum field names used in the ProtoBuf definition.
1836    ///
1837    /// The values are not transformed in any way and thus are considered stable
1838    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1839    pub fn as_str_name(&self) -> &'static str {
1840        match self {
1841            ClientConfigSetting::Unset => "UNSET",
1842            ClientConfigSetting::Disabled => "DISABLED",
1843            ClientConfigSetting::Enabled => "ENABLED",
1844        }
1845    }
1846    /// Creates an enum from field names used in the ProtoBuf definition.
1847    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1848        match value {
1849            "UNSET" => Some(Self::Unset),
1850            "DISABLED" => Some(Self::Disabled),
1851            "ENABLED" => Some(Self::Enabled),
1852            _ => None,
1853        }
1854    }
1855}
1856#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1857#[repr(i32)]
1858pub enum DisconnectReason {
1859    UnknownReason = 0,
1860    /// the client initiated the disconnect
1861    ClientInitiated = 1,
1862    /// another participant with the same identity has joined the room
1863    DuplicateIdentity = 2,
1864    /// the server instance is shutting down
1865    ServerShutdown = 3,
1866    /// RoomService.RemoveParticipant was called
1867    ParticipantRemoved = 4,
1868    /// RoomService.DeleteRoom was called
1869    RoomDeleted = 5,
1870    /// the client is attempting to resume a session, but server is not aware of it
1871    StateMismatch = 6,
1872    /// client was unable to connect fully
1873    JoinFailure = 7,
1874    /// Cloud-only, the server requested Participant to migrate the connection elsewhere
1875    Migration = 8,
1876    /// the signal websocket was closed unexpectedly
1877    SignalClose = 9,
1878    /// the room was closed, due to all Standard and Ingress participants having left
1879    RoomClosed = 10,
1880    /// SIP callee did not respond in time
1881    UserUnavailable = 11,
1882    /// SIP callee rejected the call (busy)
1883    UserRejected = 12,
1884    /// SIP protocol failure or unexpected response
1885    SipTrunkFailure = 13,
1886    /// server timed out a participant session
1887    ConnectionTimeout = 14,
1888    /// media stream failure or media timeout
1889    MediaFailure = 15,
1890}
1891impl DisconnectReason {
1892    /// String value of the enum field names used in the ProtoBuf definition.
1893    ///
1894    /// The values are not transformed in any way and thus are considered stable
1895    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1896    pub fn as_str_name(&self) -> &'static str {
1897        match self {
1898            DisconnectReason::UnknownReason => "UNKNOWN_REASON",
1899            DisconnectReason::ClientInitiated => "CLIENT_INITIATED",
1900            DisconnectReason::DuplicateIdentity => "DUPLICATE_IDENTITY",
1901            DisconnectReason::ServerShutdown => "SERVER_SHUTDOWN",
1902            DisconnectReason::ParticipantRemoved => "PARTICIPANT_REMOVED",
1903            DisconnectReason::RoomDeleted => "ROOM_DELETED",
1904            DisconnectReason::StateMismatch => "STATE_MISMATCH",
1905            DisconnectReason::JoinFailure => "JOIN_FAILURE",
1906            DisconnectReason::Migration => "MIGRATION",
1907            DisconnectReason::SignalClose => "SIGNAL_CLOSE",
1908            DisconnectReason::RoomClosed => "ROOM_CLOSED",
1909            DisconnectReason::UserUnavailable => "USER_UNAVAILABLE",
1910            DisconnectReason::UserRejected => "USER_REJECTED",
1911            DisconnectReason::SipTrunkFailure => "SIP_TRUNK_FAILURE",
1912            DisconnectReason::ConnectionTimeout => "CONNECTION_TIMEOUT",
1913            DisconnectReason::MediaFailure => "MEDIA_FAILURE",
1914        }
1915    }
1916    /// Creates an enum from field names used in the ProtoBuf definition.
1917    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1918        match value {
1919            "UNKNOWN_REASON" => Some(Self::UnknownReason),
1920            "CLIENT_INITIATED" => Some(Self::ClientInitiated),
1921            "DUPLICATE_IDENTITY" => Some(Self::DuplicateIdentity),
1922            "SERVER_SHUTDOWN" => Some(Self::ServerShutdown),
1923            "PARTICIPANT_REMOVED" => Some(Self::ParticipantRemoved),
1924            "ROOM_DELETED" => Some(Self::RoomDeleted),
1925            "STATE_MISMATCH" => Some(Self::StateMismatch),
1926            "JOIN_FAILURE" => Some(Self::JoinFailure),
1927            "MIGRATION" => Some(Self::Migration),
1928            "SIGNAL_CLOSE" => Some(Self::SignalClose),
1929            "ROOM_CLOSED" => Some(Self::RoomClosed),
1930            "USER_UNAVAILABLE" => Some(Self::UserUnavailable),
1931            "USER_REJECTED" => Some(Self::UserRejected),
1932            "SIP_TRUNK_FAILURE" => Some(Self::SipTrunkFailure),
1933            "CONNECTION_TIMEOUT" => Some(Self::ConnectionTimeout),
1934            "MEDIA_FAILURE" => Some(Self::MediaFailure),
1935            _ => None,
1936        }
1937    }
1938}
1939#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1940#[repr(i32)]
1941pub enum ReconnectReason {
1942    RrUnknown = 0,
1943    RrSignalDisconnected = 1,
1944    RrPublisherFailed = 2,
1945    RrSubscriberFailed = 3,
1946    RrSwitchCandidate = 4,
1947}
1948impl ReconnectReason {
1949    /// String value of the enum field names used in the ProtoBuf definition.
1950    ///
1951    /// The values are not transformed in any way and thus are considered stable
1952    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1953    pub fn as_str_name(&self) -> &'static str {
1954        match self {
1955            ReconnectReason::RrUnknown => "RR_UNKNOWN",
1956            ReconnectReason::RrSignalDisconnected => "RR_SIGNAL_DISCONNECTED",
1957            ReconnectReason::RrPublisherFailed => "RR_PUBLISHER_FAILED",
1958            ReconnectReason::RrSubscriberFailed => "RR_SUBSCRIBER_FAILED",
1959            ReconnectReason::RrSwitchCandidate => "RR_SWITCH_CANDIDATE",
1960        }
1961    }
1962    /// Creates an enum from field names used in the ProtoBuf definition.
1963    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1964        match value {
1965            "RR_UNKNOWN" => Some(Self::RrUnknown),
1966            "RR_SIGNAL_DISCONNECTED" => Some(Self::RrSignalDisconnected),
1967            "RR_PUBLISHER_FAILED" => Some(Self::RrPublisherFailed),
1968            "RR_SUBSCRIBER_FAILED" => Some(Self::RrSubscriberFailed),
1969            "RR_SWITCH_CANDIDATE" => Some(Self::RrSwitchCandidate),
1970            _ => None,
1971        }
1972    }
1973}
1974#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1975#[repr(i32)]
1976pub enum SubscriptionError {
1977    SeUnknown = 0,
1978    SeCodecUnsupported = 1,
1979    SeTrackNotfound = 2,
1980}
1981impl SubscriptionError {
1982    /// String value of the enum field names used in the ProtoBuf definition.
1983    ///
1984    /// The values are not transformed in any way and thus are considered stable
1985    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1986    pub fn as_str_name(&self) -> &'static str {
1987        match self {
1988            SubscriptionError::SeUnknown => "SE_UNKNOWN",
1989            SubscriptionError::SeCodecUnsupported => "SE_CODEC_UNSUPPORTED",
1990            SubscriptionError::SeTrackNotfound => "SE_TRACK_NOTFOUND",
1991        }
1992    }
1993    /// Creates an enum from field names used in the ProtoBuf definition.
1994    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1995        match value {
1996            "SE_UNKNOWN" => Some(Self::SeUnknown),
1997            "SE_CODEC_UNSUPPORTED" => Some(Self::SeCodecUnsupported),
1998            "SE_TRACK_NOTFOUND" => Some(Self::SeTrackNotfound),
1999            _ => None,
2000        }
2001    }
2002}
2003#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2004#[repr(i32)]
2005pub enum AudioTrackFeature {
2006    TfStereo = 0,
2007    TfNoDtx = 1,
2008    TfAutoGainControl = 2,
2009    TfEchoCancellation = 3,
2010    TfNoiseSuppression = 4,
2011    TfEnhancedNoiseCancellation = 5,
2012    /// client will buffer audio once available and send it to the server via bytes stream once connected
2013    TfPreconnectBuffer = 6,
2014}
2015impl AudioTrackFeature {
2016    /// String value of the enum field names used in the ProtoBuf definition.
2017    ///
2018    /// The values are not transformed in any way and thus are considered stable
2019    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2020    pub fn as_str_name(&self) -> &'static str {
2021        match self {
2022            AudioTrackFeature::TfStereo => "TF_STEREO",
2023            AudioTrackFeature::TfNoDtx => "TF_NO_DTX",
2024            AudioTrackFeature::TfAutoGainControl => "TF_AUTO_GAIN_CONTROL",
2025            AudioTrackFeature::TfEchoCancellation => "TF_ECHO_CANCELLATION",
2026            AudioTrackFeature::TfNoiseSuppression => "TF_NOISE_SUPPRESSION",
2027            AudioTrackFeature::TfEnhancedNoiseCancellation => "TF_ENHANCED_NOISE_CANCELLATION",
2028            AudioTrackFeature::TfPreconnectBuffer => "TF_PRECONNECT_BUFFER",
2029        }
2030    }
2031    /// Creates an enum from field names used in the ProtoBuf definition.
2032    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2033        match value {
2034            "TF_STEREO" => Some(Self::TfStereo),
2035            "TF_NO_DTX" => Some(Self::TfNoDtx),
2036            "TF_AUTO_GAIN_CONTROL" => Some(Self::TfAutoGainControl),
2037            "TF_ECHO_CANCELLATION" => Some(Self::TfEchoCancellation),
2038            "TF_NOISE_SUPPRESSION" => Some(Self::TfNoiseSuppression),
2039            "TF_ENHANCED_NOISE_CANCELLATION" => Some(Self::TfEnhancedNoiseCancellation),
2040            "TF_PRECONNECT_BUFFER" => Some(Self::TfPreconnectBuffer),
2041            _ => None,
2042        }
2043    }
2044}
2045/// composite using a web browser
2046#[allow(clippy::derive_partial_eq_without_eq)]
2047#[derive(Clone, PartialEq, ::prost::Message)]
2048pub struct RoomCompositeEgressRequest {
2049    /// required
2050    #[prost(string, tag="1")]
2051    pub room_name: ::prost::alloc::string::String,
2052    /// (optional)
2053    #[prost(string, tag="2")]
2054    pub layout: ::prost::alloc::string::String,
2055    /// (default false)
2056    #[prost(bool, tag="3")]
2057    pub audio_only: bool,
2058    /// only applies to audio_only egress (default DEFAULT_MIXING)
2059    #[prost(enumeration="AudioMixing", tag="15")]
2060    pub audio_mixing: i32,
2061    /// (default false)
2062    #[prost(bool, tag="4")]
2063    pub video_only: bool,
2064    /// template base url (default <https://recorder.livekit.io>)
2065    #[prost(string, tag="5")]
2066    pub custom_base_url: ::prost::alloc::string::String,
2067    #[prost(message, repeated, tag="11")]
2068    pub file_outputs: ::prost::alloc::vec::Vec<EncodedFileOutput>,
2069    #[prost(message, repeated, tag="12")]
2070    pub stream_outputs: ::prost::alloc::vec::Vec<StreamOutput>,
2071    #[prost(message, repeated, tag="13")]
2072    pub segment_outputs: ::prost::alloc::vec::Vec<SegmentedFileOutput>,
2073    #[prost(message, repeated, tag="14")]
2074    pub image_outputs: ::prost::alloc::vec::Vec<ImageOutput>,
2075    /// extra webhooks to call for this request
2076    #[prost(message, repeated, tag="16")]
2077    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
2078    /// deprecated (use _output fields)
2079    #[prost(oneof="room_composite_egress_request::Output", tags="6, 7, 10")]
2080    pub output: ::core::option::Option<room_composite_egress_request::Output>,
2081    #[prost(oneof="room_composite_egress_request::Options", tags="8, 9")]
2082    pub options: ::core::option::Option<room_composite_egress_request::Options>,
2083}
2084/// Nested message and enum types in `RoomCompositeEgressRequest`.
2085pub mod room_composite_egress_request {
2086    /// deprecated (use _output fields)
2087    #[allow(clippy::derive_partial_eq_without_eq)]
2088#[derive(Clone, PartialEq, ::prost::Oneof)]
2089    pub enum Output {
2090        #[prost(message, tag="6")]
2091        File(super::EncodedFileOutput),
2092        #[prost(message, tag="7")]
2093        Stream(super::StreamOutput),
2094        #[prost(message, tag="10")]
2095        Segments(super::SegmentedFileOutput),
2096    }
2097    #[allow(clippy::derive_partial_eq_without_eq)]
2098#[derive(Clone, PartialEq, ::prost::Oneof)]
2099    pub enum Options {
2100        /// (default H264_720P_30)
2101        #[prost(enumeration="super::EncodingOptionsPreset", tag="8")]
2102        Preset(i32),
2103        /// (optional)
2104        #[prost(message, tag="9")]
2105        Advanced(super::EncodingOptions),
2106    }
2107}
2108/// record any website
2109#[allow(clippy::derive_partial_eq_without_eq)]
2110#[derive(Clone, PartialEq, ::prost::Message)]
2111pub struct WebEgressRequest {
2112    #[prost(string, tag="1")]
2113    pub url: ::prost::alloc::string::String,
2114    #[prost(bool, tag="2")]
2115    pub audio_only: bool,
2116    #[prost(bool, tag="3")]
2117    pub video_only: bool,
2118    #[prost(bool, tag="12")]
2119    pub await_start_signal: bool,
2120    #[prost(message, repeated, tag="9")]
2121    pub file_outputs: ::prost::alloc::vec::Vec<EncodedFileOutput>,
2122    #[prost(message, repeated, tag="10")]
2123    pub stream_outputs: ::prost::alloc::vec::Vec<StreamOutput>,
2124    #[prost(message, repeated, tag="11")]
2125    pub segment_outputs: ::prost::alloc::vec::Vec<SegmentedFileOutput>,
2126    #[prost(message, repeated, tag="13")]
2127    pub image_outputs: ::prost::alloc::vec::Vec<ImageOutput>,
2128    /// extra webhooks to call for this request
2129    #[prost(message, repeated, tag="14")]
2130    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
2131    /// deprecated (use _output fields)
2132    #[prost(oneof="web_egress_request::Output", tags="4, 5, 6")]
2133    pub output: ::core::option::Option<web_egress_request::Output>,
2134    #[prost(oneof="web_egress_request::Options", tags="7, 8")]
2135    pub options: ::core::option::Option<web_egress_request::Options>,
2136}
2137/// Nested message and enum types in `WebEgressRequest`.
2138pub mod web_egress_request {
2139    /// deprecated (use _output fields)
2140    #[allow(clippy::derive_partial_eq_without_eq)]
2141#[derive(Clone, PartialEq, ::prost::Oneof)]
2142    pub enum Output {
2143        #[prost(message, tag="4")]
2144        File(super::EncodedFileOutput),
2145        #[prost(message, tag="5")]
2146        Stream(super::StreamOutput),
2147        #[prost(message, tag="6")]
2148        Segments(super::SegmentedFileOutput),
2149    }
2150    #[allow(clippy::derive_partial_eq_without_eq)]
2151#[derive(Clone, PartialEq, ::prost::Oneof)]
2152    pub enum Options {
2153        #[prost(enumeration="super::EncodingOptionsPreset", tag="7")]
2154        Preset(i32),
2155        #[prost(message, tag="8")]
2156        Advanced(super::EncodingOptions),
2157    }
2158}
2159/// record audio and video from a single participant
2160#[allow(clippy::derive_partial_eq_without_eq)]
2161#[derive(Clone, PartialEq, ::prost::Message)]
2162pub struct ParticipantEgressRequest {
2163    /// required
2164    #[prost(string, tag="1")]
2165    pub room_name: ::prost::alloc::string::String,
2166    /// required
2167    #[prost(string, tag="2")]
2168    pub identity: ::prost::alloc::string::String,
2169    /// (default false)
2170    #[prost(bool, tag="3")]
2171    pub screen_share: bool,
2172    #[prost(message, repeated, tag="6")]
2173    pub file_outputs: ::prost::alloc::vec::Vec<EncodedFileOutput>,
2174    #[prost(message, repeated, tag="7")]
2175    pub stream_outputs: ::prost::alloc::vec::Vec<StreamOutput>,
2176    #[prost(message, repeated, tag="8")]
2177    pub segment_outputs: ::prost::alloc::vec::Vec<SegmentedFileOutput>,
2178    #[prost(message, repeated, tag="9")]
2179    pub image_outputs: ::prost::alloc::vec::Vec<ImageOutput>,
2180    /// extra webhooks to call for this request
2181    #[prost(message, repeated, tag="10")]
2182    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
2183    #[prost(oneof="participant_egress_request::Options", tags="4, 5")]
2184    pub options: ::core::option::Option<participant_egress_request::Options>,
2185}
2186/// Nested message and enum types in `ParticipantEgressRequest`.
2187pub mod participant_egress_request {
2188    #[allow(clippy::derive_partial_eq_without_eq)]
2189#[derive(Clone, PartialEq, ::prost::Oneof)]
2190    pub enum Options {
2191        /// (default H264_720P_30)
2192        #[prost(enumeration="super::EncodingOptionsPreset", tag="4")]
2193        Preset(i32),
2194        /// (optional)
2195        #[prost(message, tag="5")]
2196        Advanced(super::EncodingOptions),
2197    }
2198}
2199/// containerize up to one audio and one video track
2200#[allow(clippy::derive_partial_eq_without_eq)]
2201#[derive(Clone, PartialEq, ::prost::Message)]
2202pub struct TrackCompositeEgressRequest {
2203    /// required
2204    #[prost(string, tag="1")]
2205    pub room_name: ::prost::alloc::string::String,
2206    /// (optional)
2207    #[prost(string, tag="2")]
2208    pub audio_track_id: ::prost::alloc::string::String,
2209    /// (optional)
2210    #[prost(string, tag="3")]
2211    pub video_track_id: ::prost::alloc::string::String,
2212    #[prost(message, repeated, tag="11")]
2213    pub file_outputs: ::prost::alloc::vec::Vec<EncodedFileOutput>,
2214    #[prost(message, repeated, tag="12")]
2215    pub stream_outputs: ::prost::alloc::vec::Vec<StreamOutput>,
2216    #[prost(message, repeated, tag="13")]
2217    pub segment_outputs: ::prost::alloc::vec::Vec<SegmentedFileOutput>,
2218    #[prost(message, repeated, tag="14")]
2219    pub image_outputs: ::prost::alloc::vec::Vec<ImageOutput>,
2220    /// extra webhooks to call for this request
2221    #[prost(message, repeated, tag="15")]
2222    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
2223    /// deprecated (use _output fields)
2224    #[prost(oneof="track_composite_egress_request::Output", tags="4, 5, 8")]
2225    pub output: ::core::option::Option<track_composite_egress_request::Output>,
2226    #[prost(oneof="track_composite_egress_request::Options", tags="6, 7")]
2227    pub options: ::core::option::Option<track_composite_egress_request::Options>,
2228}
2229/// Nested message and enum types in `TrackCompositeEgressRequest`.
2230pub mod track_composite_egress_request {
2231    /// deprecated (use _output fields)
2232    #[allow(clippy::derive_partial_eq_without_eq)]
2233#[derive(Clone, PartialEq, ::prost::Oneof)]
2234    pub enum Output {
2235        #[prost(message, tag="4")]
2236        File(super::EncodedFileOutput),
2237        #[prost(message, tag="5")]
2238        Stream(super::StreamOutput),
2239        #[prost(message, tag="8")]
2240        Segments(super::SegmentedFileOutput),
2241    }
2242    #[allow(clippy::derive_partial_eq_without_eq)]
2243#[derive(Clone, PartialEq, ::prost::Oneof)]
2244    pub enum Options {
2245        /// (default H264_720P_30)
2246        #[prost(enumeration="super::EncodingOptionsPreset", tag="6")]
2247        Preset(i32),
2248        /// (optional)
2249        #[prost(message, tag="7")]
2250        Advanced(super::EncodingOptions),
2251    }
2252}
2253/// record tracks individually, without transcoding
2254#[allow(clippy::derive_partial_eq_without_eq)]
2255#[derive(Clone, PartialEq, ::prost::Message)]
2256pub struct TrackEgressRequest {
2257    /// required
2258    #[prost(string, tag="1")]
2259    pub room_name: ::prost::alloc::string::String,
2260    /// required
2261    #[prost(string, tag="2")]
2262    pub track_id: ::prost::alloc::string::String,
2263    /// extra webhooks to call for this request
2264    #[prost(message, repeated, tag="5")]
2265    pub webhooks: ::prost::alloc::vec::Vec<WebhookConfig>,
2266    /// required
2267    #[prost(oneof="track_egress_request::Output", tags="3, 4")]
2268    pub output: ::core::option::Option<track_egress_request::Output>,
2269}
2270/// Nested message and enum types in `TrackEgressRequest`.
2271pub mod track_egress_request {
2272    /// required
2273    #[allow(clippy::derive_partial_eq_without_eq)]
2274#[derive(Clone, PartialEq, ::prost::Oneof)]
2275    pub enum Output {
2276        #[prost(message, tag="3")]
2277        File(super::DirectFileOutput),
2278        #[prost(string, tag="4")]
2279        WebsocketUrl(::prost::alloc::string::String),
2280    }
2281}
2282#[allow(clippy::derive_partial_eq_without_eq)]
2283#[derive(Clone, PartialEq, ::prost::Message)]
2284pub struct EncodedFileOutput {
2285    /// (optional)
2286    #[prost(enumeration="EncodedFileType", tag="1")]
2287    pub file_type: i32,
2288    /// see egress docs for templating (default {room_name}-{time})
2289    #[prost(string, tag="2")]
2290    pub filepath: ::prost::alloc::string::String,
2291    /// disable upload of manifest file (default false)
2292    #[prost(bool, tag="6")]
2293    pub disable_manifest: bool,
2294    #[prost(oneof="encoded_file_output::Output", tags="3, 4, 5, 7")]
2295    pub output: ::core::option::Option<encoded_file_output::Output>,
2296}
2297/// Nested message and enum types in `EncodedFileOutput`.
2298pub mod encoded_file_output {
2299    #[allow(clippy::derive_partial_eq_without_eq)]
2300#[derive(Clone, PartialEq, ::prost::Oneof)]
2301    pub enum Output {
2302        #[prost(message, tag="3")]
2303        S3(super::S3Upload),
2304        #[prost(message, tag="4")]
2305        Gcp(super::GcpUpload),
2306        #[prost(message, tag="5")]
2307        Azure(super::AzureBlobUpload),
2308        #[prost(message, tag="7")]
2309        AliOss(super::AliOssUpload),
2310    }
2311}
2312/// Used to generate HLS segments or other kind of segmented output
2313#[allow(clippy::derive_partial_eq_without_eq)]
2314#[derive(Clone, PartialEq, ::prost::Message)]
2315pub struct SegmentedFileOutput {
2316    /// (optional)
2317    #[prost(enumeration="SegmentedFileProtocol", tag="1")]
2318    pub protocol: i32,
2319    /// (optional)
2320    #[prost(string, tag="2")]
2321    pub filename_prefix: ::prost::alloc::string::String,
2322    /// (optional)
2323    #[prost(string, tag="3")]
2324    pub playlist_name: ::prost::alloc::string::String,
2325    /// (optional, disabled if not provided). Path of a live playlist
2326    #[prost(string, tag="11")]
2327    pub live_playlist_name: ::prost::alloc::string::String,
2328    /// in seconds (optional)
2329    #[prost(uint32, tag="4")]
2330    pub segment_duration: u32,
2331    /// (optional, default INDEX)
2332    #[prost(enumeration="SegmentedFileSuffix", tag="10")]
2333    pub filename_suffix: i32,
2334    /// disable upload of manifest file (default false)
2335    #[prost(bool, tag="8")]
2336    pub disable_manifest: bool,
2337    /// required
2338    #[prost(oneof="segmented_file_output::Output", tags="5, 6, 7, 9")]
2339    pub output: ::core::option::Option<segmented_file_output::Output>,
2340}
2341/// Nested message and enum types in `SegmentedFileOutput`.
2342pub mod segmented_file_output {
2343    /// required
2344    #[allow(clippy::derive_partial_eq_without_eq)]
2345#[derive(Clone, PartialEq, ::prost::Oneof)]
2346    pub enum Output {
2347        #[prost(message, tag="5")]
2348        S3(super::S3Upload),
2349        #[prost(message, tag="6")]
2350        Gcp(super::GcpUpload),
2351        #[prost(message, tag="7")]
2352        Azure(super::AzureBlobUpload),
2353        #[prost(message, tag="9")]
2354        AliOss(super::AliOssUpload),
2355    }
2356}
2357#[allow(clippy::derive_partial_eq_without_eq)]
2358#[derive(Clone, PartialEq, ::prost::Message)]
2359pub struct DirectFileOutput {
2360    /// see egress docs for templating (default {track_id}-{time})
2361    #[prost(string, tag="1")]
2362    pub filepath: ::prost::alloc::string::String,
2363    /// disable upload of manifest file (default false)
2364    #[prost(bool, tag="5")]
2365    pub disable_manifest: bool,
2366    #[prost(oneof="direct_file_output::Output", tags="2, 3, 4, 6")]
2367    pub output: ::core::option::Option<direct_file_output::Output>,
2368}
2369/// Nested message and enum types in `DirectFileOutput`.
2370pub mod direct_file_output {
2371    #[allow(clippy::derive_partial_eq_without_eq)]
2372#[derive(Clone, PartialEq, ::prost::Oneof)]
2373    pub enum Output {
2374        #[prost(message, tag="2")]
2375        S3(super::S3Upload),
2376        #[prost(message, tag="3")]
2377        Gcp(super::GcpUpload),
2378        #[prost(message, tag="4")]
2379        Azure(super::AzureBlobUpload),
2380        #[prost(message, tag="6")]
2381        AliOss(super::AliOssUpload),
2382    }
2383}
2384#[allow(clippy::derive_partial_eq_without_eq)]
2385#[derive(Clone, PartialEq, ::prost::Message)]
2386pub struct ImageOutput {
2387    /// in seconds (required)
2388    #[prost(uint32, tag="1")]
2389    pub capture_interval: u32,
2390    /// (optional, defaults to track width)
2391    #[prost(int32, tag="2")]
2392    pub width: i32,
2393    /// (optional, defaults to track height)
2394    #[prost(int32, tag="3")]
2395    pub height: i32,
2396    /// (optional)
2397    #[prost(string, tag="4")]
2398    pub filename_prefix: ::prost::alloc::string::String,
2399    /// (optional, default INDEX)
2400    #[prost(enumeration="ImageFileSuffix", tag="5")]
2401    pub filename_suffix: i32,
2402    /// (optional)
2403    #[prost(enumeration="ImageCodec", tag="6")]
2404    pub image_codec: i32,
2405    /// disable upload of manifest file (default false)
2406    #[prost(bool, tag="7")]
2407    pub disable_manifest: bool,
2408    /// required
2409    #[prost(oneof="image_output::Output", tags="8, 9, 10, 11")]
2410    pub output: ::core::option::Option<image_output::Output>,
2411}
2412/// Nested message and enum types in `ImageOutput`.
2413pub mod image_output {
2414    /// required
2415    #[allow(clippy::derive_partial_eq_without_eq)]
2416#[derive(Clone, PartialEq, ::prost::Oneof)]
2417    pub enum Output {
2418        #[prost(message, tag="8")]
2419        S3(super::S3Upload),
2420        #[prost(message, tag="9")]
2421        Gcp(super::GcpUpload),
2422        #[prost(message, tag="10")]
2423        Azure(super::AzureBlobUpload),
2424        #[prost(message, tag="11")]
2425        AliOss(super::AliOssUpload),
2426    }
2427}
2428#[allow(clippy::derive_partial_eq_without_eq)]
2429#[derive(Clone, PartialEq, ::prost::Message)]
2430pub struct S3Upload {
2431    #[prost(string, tag="1")]
2432    pub access_key: ::prost::alloc::string::String,
2433    #[prost(string, tag="2")]
2434    pub secret: ::prost::alloc::string::String,
2435    #[prost(string, tag="11")]
2436    pub session_token: ::prost::alloc::string::String,
2437    /// ARN of the role to assume for file upload. Egress will make an AssumeRole API call using the provided access_key and secret to assume that role. On LiveKit cloud, this is only available on accounts that have the feature enabled
2438    #[prost(string, tag="12")]
2439    pub assume_role_arn: ::prost::alloc::string::String,
2440    /// ExternalID to use when assuming role for upload
2441    #[prost(string, tag="13")]
2442    pub assume_role_external_id: ::prost::alloc::string::String,
2443    #[prost(string, tag="3")]
2444    pub region: ::prost::alloc::string::String,
2445    #[prost(string, tag="4")]
2446    pub endpoint: ::prost::alloc::string::String,
2447    #[prost(string, tag="5")]
2448    pub bucket: ::prost::alloc::string::String,
2449    #[prost(bool, tag="6")]
2450    pub force_path_style: bool,
2451    #[prost(map="string, string", tag="7")]
2452    pub metadata: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
2453    #[prost(string, tag="8")]
2454    pub tagging: ::prost::alloc::string::String,
2455    /// Content-Disposition header
2456    #[prost(string, tag="9")]
2457    pub content_disposition: ::prost::alloc::string::String,
2458    #[prost(message, optional, tag="10")]
2459    pub proxy: ::core::option::Option<ProxyConfig>,
2460}
2461#[allow(clippy::derive_partial_eq_without_eq)]
2462#[derive(Clone, PartialEq, ::prost::Message)]
2463pub struct GcpUpload {
2464    /// service account credentials serialized in JSON "credentials.json"
2465    #[prost(string, tag="1")]
2466    pub credentials: ::prost::alloc::string::String,
2467    #[prost(string, tag="2")]
2468    pub bucket: ::prost::alloc::string::String,
2469    #[prost(message, optional, tag="3")]
2470    pub proxy: ::core::option::Option<ProxyConfig>,
2471}
2472#[allow(clippy::derive_partial_eq_without_eq)]
2473#[derive(Clone, PartialEq, ::prost::Message)]
2474pub struct AzureBlobUpload {
2475    #[prost(string, tag="1")]
2476    pub account_name: ::prost::alloc::string::String,
2477    #[prost(string, tag="2")]
2478    pub account_key: ::prost::alloc::string::String,
2479    #[prost(string, tag="3")]
2480    pub container_name: ::prost::alloc::string::String,
2481}
2482#[allow(clippy::derive_partial_eq_without_eq)]
2483#[derive(Clone, PartialEq, ::prost::Message)]
2484pub struct AliOssUpload {
2485    #[prost(string, tag="1")]
2486    pub access_key: ::prost::alloc::string::String,
2487    #[prost(string, tag="2")]
2488    pub secret: ::prost::alloc::string::String,
2489    #[prost(string, tag="3")]
2490    pub region: ::prost::alloc::string::String,
2491    #[prost(string, tag="4")]
2492    pub endpoint: ::prost::alloc::string::String,
2493    #[prost(string, tag="5")]
2494    pub bucket: ::prost::alloc::string::String,
2495}
2496#[allow(clippy::derive_partial_eq_without_eq)]
2497#[derive(Clone, PartialEq, ::prost::Message)]
2498pub struct ProxyConfig {
2499    #[prost(string, tag="1")]
2500    pub url: ::prost::alloc::string::String,
2501    #[prost(string, tag="2")]
2502    pub username: ::prost::alloc::string::String,
2503    #[prost(string, tag="3")]
2504    pub password: ::prost::alloc::string::String,
2505}
2506#[allow(clippy::derive_partial_eq_without_eq)]
2507#[derive(Clone, PartialEq, ::prost::Message)]
2508pub struct StreamOutput {
2509    /// required
2510    #[prost(enumeration="StreamProtocol", tag="1")]
2511    pub protocol: i32,
2512    /// required
2513    #[prost(string, repeated, tag="2")]
2514    pub urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2515}
2516#[allow(clippy::derive_partial_eq_without_eq)]
2517#[derive(Clone, PartialEq, ::prost::Message)]
2518pub struct EncodingOptions {
2519    /// (default 1920)
2520    #[prost(int32, tag="1")]
2521    pub width: i32,
2522    /// (default 1080)
2523    #[prost(int32, tag="2")]
2524    pub height: i32,
2525    /// (default 24)
2526    #[prost(int32, tag="3")]
2527    pub depth: i32,
2528    /// (default 30)
2529    #[prost(int32, tag="4")]
2530    pub framerate: i32,
2531    /// (default OPUS)
2532    #[prost(enumeration="AudioCodec", tag="5")]
2533    pub audio_codec: i32,
2534    /// (default 128)
2535    #[prost(int32, tag="6")]
2536    pub audio_bitrate: i32,
2537    /// quality setting on audio encoder
2538    #[prost(int32, tag="11")]
2539    pub audio_quality: i32,
2540    /// (default 44100)
2541    #[prost(int32, tag="7")]
2542    pub audio_frequency: i32,
2543    /// (default H264_MAIN)
2544    #[prost(enumeration="VideoCodec", tag="8")]
2545    pub video_codec: i32,
2546    /// (default 4500)
2547    #[prost(int32, tag="9")]
2548    pub video_bitrate: i32,
2549    /// quality setting on video encoder
2550    #[prost(int32, tag="12")]
2551    pub video_quality: i32,
2552    /// in seconds (default 4s for streaming, segment duration for segmented output, encoder default for files)
2553    #[prost(double, tag="10")]
2554    pub key_frame_interval: f64,
2555}
2556#[allow(clippy::derive_partial_eq_without_eq)]
2557#[derive(Clone, PartialEq, ::prost::Message)]
2558pub struct UpdateLayoutRequest {
2559    #[prost(string, tag="1")]
2560    pub egress_id: ::prost::alloc::string::String,
2561    #[prost(string, tag="2")]
2562    pub layout: ::prost::alloc::string::String,
2563}
2564#[allow(clippy::derive_partial_eq_without_eq)]
2565#[derive(Clone, PartialEq, ::prost::Message)]
2566pub struct UpdateStreamRequest {
2567    #[prost(string, tag="1")]
2568    pub egress_id: ::prost::alloc::string::String,
2569    #[prost(string, repeated, tag="2")]
2570    pub add_output_urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2571    #[prost(string, repeated, tag="3")]
2572    pub remove_output_urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2573}
2574#[allow(clippy::derive_partial_eq_without_eq)]
2575#[derive(Clone, PartialEq, ::prost::Message)]
2576pub struct ListEgressRequest {
2577    /// (optional, filter by room name)
2578    #[prost(string, tag="1")]
2579    pub room_name: ::prost::alloc::string::String,
2580    /// (optional, filter by egress ID)
2581    #[prost(string, tag="2")]
2582    pub egress_id: ::prost::alloc::string::String,
2583    /// (optional, list active egress only)
2584    #[prost(bool, tag="3")]
2585    pub active: bool,
2586}
2587#[allow(clippy::derive_partial_eq_without_eq)]
2588#[derive(Clone, PartialEq, ::prost::Message)]
2589pub struct ListEgressResponse {
2590    #[prost(message, repeated, tag="1")]
2591    pub items: ::prost::alloc::vec::Vec<EgressInfo>,
2592}
2593#[allow(clippy::derive_partial_eq_without_eq)]
2594#[derive(Clone, PartialEq, ::prost::Message)]
2595pub struct StopEgressRequest {
2596    #[prost(string, tag="1")]
2597    pub egress_id: ::prost::alloc::string::String,
2598}
2599#[allow(clippy::derive_partial_eq_without_eq)]
2600#[derive(Clone, PartialEq, ::prost::Message)]
2601pub struct EgressInfo {
2602    #[prost(string, tag="1")]
2603    pub egress_id: ::prost::alloc::string::String,
2604    #[prost(string, tag="2")]
2605    pub room_id: ::prost::alloc::string::String,
2606    #[prost(string, tag="13")]
2607    pub room_name: ::prost::alloc::string::String,
2608    #[prost(enumeration="EgressSourceType", tag="26")]
2609    pub source_type: i32,
2610    #[prost(enumeration="EgressStatus", tag="3")]
2611    pub status: i32,
2612    #[prost(int64, tag="10")]
2613    pub started_at: i64,
2614    #[prost(int64, tag="11")]
2615    pub ended_at: i64,
2616    #[prost(int64, tag="18")]
2617    pub updated_at: i64,
2618    #[prost(string, tag="21")]
2619    pub details: ::prost::alloc::string::String,
2620    #[prost(string, tag="9")]
2621    pub error: ::prost::alloc::string::String,
2622    #[prost(int32, tag="22")]
2623    pub error_code: i32,
2624    #[prost(message, repeated, tag="15")]
2625    pub stream_results: ::prost::alloc::vec::Vec<StreamInfo>,
2626    #[prost(message, repeated, tag="16")]
2627    pub file_results: ::prost::alloc::vec::Vec<FileInfo>,
2628    #[prost(message, repeated, tag="17")]
2629    pub segment_results: ::prost::alloc::vec::Vec<SegmentsInfo>,
2630    #[prost(message, repeated, tag="20")]
2631    pub image_results: ::prost::alloc::vec::Vec<ImagesInfo>,
2632    #[prost(string, tag="23")]
2633    pub manifest_location: ::prost::alloc::string::String,
2634    /// next ID: 27
2635    #[prost(bool, tag="25")]
2636    pub backup_storage_used: bool,
2637    #[prost(oneof="egress_info::Request", tags="4, 14, 19, 5, 6")]
2638    pub request: ::core::option::Option<egress_info::Request>,
2639    /// deprecated (use _result fields)
2640    #[prost(oneof="egress_info::Result", tags="7, 8, 12")]
2641    pub result: ::core::option::Option<egress_info::Result>,
2642}
2643/// Nested message and enum types in `EgressInfo`.
2644pub mod egress_info {
2645    #[allow(clippy::derive_partial_eq_without_eq)]
2646#[derive(Clone, PartialEq, ::prost::Oneof)]
2647    pub enum Request {
2648        #[prost(message, tag="4")]
2649        RoomComposite(super::RoomCompositeEgressRequest),
2650        #[prost(message, tag="14")]
2651        Web(super::WebEgressRequest),
2652        #[prost(message, tag="19")]
2653        Participant(super::ParticipantEgressRequest),
2654        #[prost(message, tag="5")]
2655        TrackComposite(super::TrackCompositeEgressRequest),
2656        #[prost(message, tag="6")]
2657        Track(super::TrackEgressRequest),
2658    }
2659    /// deprecated (use _result fields)
2660    #[allow(clippy::derive_partial_eq_without_eq)]
2661#[derive(Clone, PartialEq, ::prost::Oneof)]
2662    pub enum Result {
2663        #[prost(message, tag="7")]
2664        Stream(super::StreamInfoList),
2665        #[prost(message, tag="8")]
2666        File(super::FileInfo),
2667        #[prost(message, tag="12")]
2668        Segments(super::SegmentsInfo),
2669    }
2670}
2671#[allow(clippy::derive_partial_eq_without_eq)]
2672#[derive(Clone, PartialEq, ::prost::Message)]
2673pub struct StreamInfoList {
2674    #[prost(message, repeated, tag="1")]
2675    pub info: ::prost::alloc::vec::Vec<StreamInfo>,
2676}
2677#[allow(clippy::derive_partial_eq_without_eq)]
2678#[derive(Clone, PartialEq, ::prost::Message)]
2679pub struct StreamInfo {
2680    #[prost(string, tag="1")]
2681    pub url: ::prost::alloc::string::String,
2682    #[prost(int64, tag="2")]
2683    pub started_at: i64,
2684    #[prost(int64, tag="3")]
2685    pub ended_at: i64,
2686    #[prost(int64, tag="4")]
2687    pub duration: i64,
2688    #[prost(enumeration="stream_info::Status", tag="5")]
2689    pub status: i32,
2690    #[prost(string, tag="6")]
2691    pub error: ::prost::alloc::string::String,
2692    #[prost(int64, tag="7")]
2693    pub last_retry_at: i64,
2694    #[prost(uint32, tag="8")]
2695    pub retries: u32,
2696}
2697/// Nested message and enum types in `StreamInfo`.
2698pub mod stream_info {
2699    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2700    #[repr(i32)]
2701    pub enum Status {
2702        Active = 0,
2703        Finished = 1,
2704        Failed = 2,
2705    }
2706    impl Status {
2707        /// String value of the enum field names used in the ProtoBuf definition.
2708        ///
2709        /// The values are not transformed in any way and thus are considered stable
2710        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2711        pub fn as_str_name(&self) -> &'static str {
2712            match self {
2713                Status::Active => "ACTIVE",
2714                Status::Finished => "FINISHED",
2715                Status::Failed => "FAILED",
2716            }
2717        }
2718        /// Creates an enum from field names used in the ProtoBuf definition.
2719        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2720            match value {
2721                "ACTIVE" => Some(Self::Active),
2722                "FINISHED" => Some(Self::Finished),
2723                "FAILED" => Some(Self::Failed),
2724                _ => None,
2725            }
2726        }
2727    }
2728}
2729#[allow(clippy::derive_partial_eq_without_eq)]
2730#[derive(Clone, PartialEq, ::prost::Message)]
2731pub struct FileInfo {
2732    #[prost(string, tag="1")]
2733    pub filename: ::prost::alloc::string::String,
2734    #[prost(int64, tag="2")]
2735    pub started_at: i64,
2736    #[prost(int64, tag="3")]
2737    pub ended_at: i64,
2738    #[prost(int64, tag="6")]
2739    pub duration: i64,
2740    #[prost(int64, tag="4")]
2741    pub size: i64,
2742    #[prost(string, tag="5")]
2743    pub location: ::prost::alloc::string::String,
2744}
2745#[allow(clippy::derive_partial_eq_without_eq)]
2746#[derive(Clone, PartialEq, ::prost::Message)]
2747pub struct SegmentsInfo {
2748    #[prost(string, tag="1")]
2749    pub playlist_name: ::prost::alloc::string::String,
2750    #[prost(string, tag="8")]
2751    pub live_playlist_name: ::prost::alloc::string::String,
2752    #[prost(int64, tag="2")]
2753    pub duration: i64,
2754    #[prost(int64, tag="3")]
2755    pub size: i64,
2756    #[prost(string, tag="4")]
2757    pub playlist_location: ::prost::alloc::string::String,
2758    #[prost(string, tag="9")]
2759    pub live_playlist_location: ::prost::alloc::string::String,
2760    #[prost(int64, tag="5")]
2761    pub segment_count: i64,
2762    #[prost(int64, tag="6")]
2763    pub started_at: i64,
2764    #[prost(int64, tag="7")]
2765    pub ended_at: i64,
2766}
2767#[allow(clippy::derive_partial_eq_without_eq)]
2768#[derive(Clone, PartialEq, ::prost::Message)]
2769pub struct ImagesInfo {
2770    #[prost(string, tag="4")]
2771    pub filename_prefix: ::prost::alloc::string::String,
2772    #[prost(int64, tag="1")]
2773    pub image_count: i64,
2774    #[prost(int64, tag="2")]
2775    pub started_at: i64,
2776    #[prost(int64, tag="3")]
2777    pub ended_at: i64,
2778}
2779#[allow(clippy::derive_partial_eq_without_eq)]
2780#[derive(Clone, PartialEq, ::prost::Message)]
2781pub struct AutoParticipantEgress {
2782    #[prost(message, repeated, tag="3")]
2783    pub file_outputs: ::prost::alloc::vec::Vec<EncodedFileOutput>,
2784    #[prost(message, repeated, tag="4")]
2785    pub segment_outputs: ::prost::alloc::vec::Vec<SegmentedFileOutput>,
2786    #[prost(oneof="auto_participant_egress::Options", tags="1, 2")]
2787    pub options: ::core::option::Option<auto_participant_egress::Options>,
2788}
2789/// Nested message and enum types in `AutoParticipantEgress`.
2790pub mod auto_participant_egress {
2791    #[allow(clippy::derive_partial_eq_without_eq)]
2792#[derive(Clone, PartialEq, ::prost::Oneof)]
2793    pub enum Options {
2794        /// (default H264_720P_30)
2795        #[prost(enumeration="super::EncodingOptionsPreset", tag="1")]
2796        Preset(i32),
2797        /// (optional)
2798        #[prost(message, tag="2")]
2799        Advanced(super::EncodingOptions),
2800    }
2801}
2802#[allow(clippy::derive_partial_eq_without_eq)]
2803#[derive(Clone, PartialEq, ::prost::Message)]
2804pub struct AutoTrackEgress {
2805    /// see docs for templating (default {track_id}-{time})
2806    #[prost(string, tag="1")]
2807    pub filepath: ::prost::alloc::string::String,
2808    /// disables upload of json manifest file (default false)
2809    #[prost(bool, tag="5")]
2810    pub disable_manifest: bool,
2811    #[prost(oneof="auto_track_egress::Output", tags="2, 3, 4, 6")]
2812    pub output: ::core::option::Option<auto_track_egress::Output>,
2813}
2814/// Nested message and enum types in `AutoTrackEgress`.
2815pub mod auto_track_egress {
2816    #[allow(clippy::derive_partial_eq_without_eq)]
2817#[derive(Clone, PartialEq, ::prost::Oneof)]
2818    pub enum Output {
2819        #[prost(message, tag="2")]
2820        S3(super::S3Upload),
2821        #[prost(message, tag="3")]
2822        Gcp(super::GcpUpload),
2823        #[prost(message, tag="4")]
2824        Azure(super::AzureBlobUpload),
2825        #[prost(message, tag="6")]
2826        AliOss(super::AliOssUpload),
2827    }
2828}
2829#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2830#[repr(i32)]
2831pub enum EncodedFileType {
2832    /// file type chosen based on codecs
2833    DefaultFiletype = 0,
2834    Mp4 = 1,
2835    Ogg = 2,
2836    Mp3 = 3,
2837}
2838impl EncodedFileType {
2839    /// String value of the enum field names used in the ProtoBuf definition.
2840    ///
2841    /// The values are not transformed in any way and thus are considered stable
2842    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2843    pub fn as_str_name(&self) -> &'static str {
2844        match self {
2845            EncodedFileType::DefaultFiletype => "DEFAULT_FILETYPE",
2846            EncodedFileType::Mp4 => "MP4",
2847            EncodedFileType::Ogg => "OGG",
2848            EncodedFileType::Mp3 => "MP3",
2849        }
2850    }
2851    /// Creates an enum from field names used in the ProtoBuf definition.
2852    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2853        match value {
2854            "DEFAULT_FILETYPE" => Some(Self::DefaultFiletype),
2855            "MP4" => Some(Self::Mp4),
2856            "OGG" => Some(Self::Ogg),
2857            "MP3" => Some(Self::Mp3),
2858            _ => None,
2859        }
2860    }
2861}
2862#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2863#[repr(i32)]
2864pub enum SegmentedFileProtocol {
2865    DefaultSegmentedFileProtocol = 0,
2866    HlsProtocol = 1,
2867}
2868impl SegmentedFileProtocol {
2869    /// String value of the enum field names used in the ProtoBuf definition.
2870    ///
2871    /// The values are not transformed in any way and thus are considered stable
2872    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2873    pub fn as_str_name(&self) -> &'static str {
2874        match self {
2875            SegmentedFileProtocol::DefaultSegmentedFileProtocol => "DEFAULT_SEGMENTED_FILE_PROTOCOL",
2876            SegmentedFileProtocol::HlsProtocol => "HLS_PROTOCOL",
2877        }
2878    }
2879    /// Creates an enum from field names used in the ProtoBuf definition.
2880    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2881        match value {
2882            "DEFAULT_SEGMENTED_FILE_PROTOCOL" => Some(Self::DefaultSegmentedFileProtocol),
2883            "HLS_PROTOCOL" => Some(Self::HlsProtocol),
2884            _ => None,
2885        }
2886    }
2887}
2888#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2889#[repr(i32)]
2890pub enum SegmentedFileSuffix {
2891    Index = 0,
2892    Timestamp = 1,
2893}
2894impl SegmentedFileSuffix {
2895    /// String value of the enum field names used in the ProtoBuf definition.
2896    ///
2897    /// The values are not transformed in any way and thus are considered stable
2898    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2899    pub fn as_str_name(&self) -> &'static str {
2900        match self {
2901            SegmentedFileSuffix::Index => "INDEX",
2902            SegmentedFileSuffix::Timestamp => "TIMESTAMP",
2903        }
2904    }
2905    /// Creates an enum from field names used in the ProtoBuf definition.
2906    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2907        match value {
2908            "INDEX" => Some(Self::Index),
2909            "TIMESTAMP" => Some(Self::Timestamp),
2910            _ => None,
2911        }
2912    }
2913}
2914#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2915#[repr(i32)]
2916pub enum ImageFileSuffix {
2917    ImageSuffixIndex = 0,
2918    ImageSuffixTimestamp = 1,
2919    /// Do not append any suffix and overwrite the existing image with the latest
2920    ImageSuffixNoneOverwrite = 2,
2921}
2922impl ImageFileSuffix {
2923    /// String value of the enum field names used in the ProtoBuf definition.
2924    ///
2925    /// The values are not transformed in any way and thus are considered stable
2926    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2927    pub fn as_str_name(&self) -> &'static str {
2928        match self {
2929            ImageFileSuffix::ImageSuffixIndex => "IMAGE_SUFFIX_INDEX",
2930            ImageFileSuffix::ImageSuffixTimestamp => "IMAGE_SUFFIX_TIMESTAMP",
2931            ImageFileSuffix::ImageSuffixNoneOverwrite => "IMAGE_SUFFIX_NONE_OVERWRITE",
2932        }
2933    }
2934    /// Creates an enum from field names used in the ProtoBuf definition.
2935    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2936        match value {
2937            "IMAGE_SUFFIX_INDEX" => Some(Self::ImageSuffixIndex),
2938            "IMAGE_SUFFIX_TIMESTAMP" => Some(Self::ImageSuffixTimestamp),
2939            "IMAGE_SUFFIX_NONE_OVERWRITE" => Some(Self::ImageSuffixNoneOverwrite),
2940            _ => None,
2941        }
2942    }
2943}
2944#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2945#[repr(i32)]
2946pub enum StreamProtocol {
2947    /// protocol chosen based on urls
2948    DefaultProtocol = 0,
2949    Rtmp = 1,
2950    Srt = 2,
2951}
2952impl StreamProtocol {
2953    /// String value of the enum field names used in the ProtoBuf definition.
2954    ///
2955    /// The values are not transformed in any way and thus are considered stable
2956    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2957    pub fn as_str_name(&self) -> &'static str {
2958        match self {
2959            StreamProtocol::DefaultProtocol => "DEFAULT_PROTOCOL",
2960            StreamProtocol::Rtmp => "RTMP",
2961            StreamProtocol::Srt => "SRT",
2962        }
2963    }
2964    /// Creates an enum from field names used in the ProtoBuf definition.
2965    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2966        match value {
2967            "DEFAULT_PROTOCOL" => Some(Self::DefaultProtocol),
2968            "RTMP" => Some(Self::Rtmp),
2969            "SRT" => Some(Self::Srt),
2970            _ => None,
2971        }
2972    }
2973}
2974#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2975#[repr(i32)]
2976pub enum AudioMixing {
2977    /// all users are mixed together
2978    DefaultMixing = 0,
2979    /// agent audio in the left channel, all other audio in the right channel
2980    DualChannelAgent = 1,
2981    /// each new audio track alternates between left and right channels
2982    DualChannelAlternate = 2,
2983}
2984impl AudioMixing {
2985    /// String value of the enum field names used in the ProtoBuf definition.
2986    ///
2987    /// The values are not transformed in any way and thus are considered stable
2988    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2989    pub fn as_str_name(&self) -> &'static str {
2990        match self {
2991            AudioMixing::DefaultMixing => "DEFAULT_MIXING",
2992            AudioMixing::DualChannelAgent => "DUAL_CHANNEL_AGENT",
2993            AudioMixing::DualChannelAlternate => "DUAL_CHANNEL_ALTERNATE",
2994        }
2995    }
2996    /// Creates an enum from field names used in the ProtoBuf definition.
2997    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2998        match value {
2999            "DEFAULT_MIXING" => Some(Self::DefaultMixing),
3000            "DUAL_CHANNEL_AGENT" => Some(Self::DualChannelAgent),
3001            "DUAL_CHANNEL_ALTERNATE" => Some(Self::DualChannelAlternate),
3002            _ => None,
3003        }
3004    }
3005}
3006#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3007#[repr(i32)]
3008pub enum EncodingOptionsPreset {
3009    ///   1280x720, 30fps, 3000kpbs, H.264_MAIN / OPUS
3010    H264720p30 = 0,
3011    ///   1280x720, 60fps, 4500kbps, H.264_MAIN / OPUS
3012    H264720p60 = 1,
3013    /// 1920x1080, 30fps, 4500kbps, H.264_MAIN / OPUS
3014    H2641080p30 = 2,
3015    /// 1920x1080, 60fps, 6000kbps, H.264_MAIN / OPUS
3016    H2641080p60 = 3,
3017    ///   720x1280, 30fps, 3000kpbs, H.264_MAIN / OPUS
3018    PortraitH264720p30 = 4,
3019    ///   720x1280, 60fps, 4500kbps, H.264_MAIN / OPUS
3020    PortraitH264720p60 = 5,
3021    /// 1080x1920, 30fps, 4500kbps, H.264_MAIN / OPUS
3022    PortraitH2641080p30 = 6,
3023    /// 1080x1920, 60fps, 6000kbps, H.264_MAIN / OPUS
3024    PortraitH2641080p60 = 7,
3025}
3026impl EncodingOptionsPreset {
3027    /// String value of the enum field names used in the ProtoBuf definition.
3028    ///
3029    /// The values are not transformed in any way and thus are considered stable
3030    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3031    pub fn as_str_name(&self) -> &'static str {
3032        match self {
3033            EncodingOptionsPreset::H264720p30 => "H264_720P_30",
3034            EncodingOptionsPreset::H264720p60 => "H264_720P_60",
3035            EncodingOptionsPreset::H2641080p30 => "H264_1080P_30",
3036            EncodingOptionsPreset::H2641080p60 => "H264_1080P_60",
3037            EncodingOptionsPreset::PortraitH264720p30 => "PORTRAIT_H264_720P_30",
3038            EncodingOptionsPreset::PortraitH264720p60 => "PORTRAIT_H264_720P_60",
3039            EncodingOptionsPreset::PortraitH2641080p30 => "PORTRAIT_H264_1080P_30",
3040            EncodingOptionsPreset::PortraitH2641080p60 => "PORTRAIT_H264_1080P_60",
3041        }
3042    }
3043    /// Creates an enum from field names used in the ProtoBuf definition.
3044    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3045        match value {
3046            "H264_720P_30" => Some(Self::H264720p30),
3047            "H264_720P_60" => Some(Self::H264720p60),
3048            "H264_1080P_30" => Some(Self::H2641080p30),
3049            "H264_1080P_60" => Some(Self::H2641080p60),
3050            "PORTRAIT_H264_720P_30" => Some(Self::PortraitH264720p30),
3051            "PORTRAIT_H264_720P_60" => Some(Self::PortraitH264720p60),
3052            "PORTRAIT_H264_1080P_30" => Some(Self::PortraitH2641080p30),
3053            "PORTRAIT_H264_1080P_60" => Some(Self::PortraitH2641080p60),
3054            _ => None,
3055        }
3056    }
3057}
3058#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3059#[repr(i32)]
3060pub enum EgressStatus {
3061    EgressStarting = 0,
3062    EgressActive = 1,
3063    EgressEnding = 2,
3064    EgressComplete = 3,
3065    EgressFailed = 4,
3066    EgressAborted = 5,
3067    EgressLimitReached = 6,
3068}
3069impl EgressStatus {
3070    /// String value of the enum field names used in the ProtoBuf definition.
3071    ///
3072    /// The values are not transformed in any way and thus are considered stable
3073    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3074    pub fn as_str_name(&self) -> &'static str {
3075        match self {
3076            EgressStatus::EgressStarting => "EGRESS_STARTING",
3077            EgressStatus::EgressActive => "EGRESS_ACTIVE",
3078            EgressStatus::EgressEnding => "EGRESS_ENDING",
3079            EgressStatus::EgressComplete => "EGRESS_COMPLETE",
3080            EgressStatus::EgressFailed => "EGRESS_FAILED",
3081            EgressStatus::EgressAborted => "EGRESS_ABORTED",
3082            EgressStatus::EgressLimitReached => "EGRESS_LIMIT_REACHED",
3083        }
3084    }
3085    /// Creates an enum from field names used in the ProtoBuf definition.
3086    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3087        match value {
3088            "EGRESS_STARTING" => Some(Self::EgressStarting),
3089            "EGRESS_ACTIVE" => Some(Self::EgressActive),
3090            "EGRESS_ENDING" => Some(Self::EgressEnding),
3091            "EGRESS_COMPLETE" => Some(Self::EgressComplete),
3092            "EGRESS_FAILED" => Some(Self::EgressFailed),
3093            "EGRESS_ABORTED" => Some(Self::EgressAborted),
3094            "EGRESS_LIMIT_REACHED" => Some(Self::EgressLimitReached),
3095            _ => None,
3096        }
3097    }
3098}
3099#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3100#[repr(i32)]
3101pub enum EgressSourceType {
3102    Web = 0,
3103    Sdk = 1,
3104}
3105impl EgressSourceType {
3106    /// String value of the enum field names used in the ProtoBuf definition.
3107    ///
3108    /// The values are not transformed in any way and thus are considered stable
3109    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3110    pub fn as_str_name(&self) -> &'static str {
3111        match self {
3112            EgressSourceType::Web => "EGRESS_SOURCE_TYPE_WEB",
3113            EgressSourceType::Sdk => "EGRESS_SOURCE_TYPE_SDK",
3114        }
3115    }
3116    /// Creates an enum from field names used in the ProtoBuf definition.
3117    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3118        match value {
3119            "EGRESS_SOURCE_TYPE_WEB" => Some(Self::Web),
3120            "EGRESS_SOURCE_TYPE_SDK" => Some(Self::Sdk),
3121            _ => None,
3122        }
3123    }
3124}
3125#[allow(clippy::derive_partial_eq_without_eq)]
3126#[derive(Clone, PartialEq, ::prost::Message)]
3127pub struct SignalRequest {
3128    #[prost(oneof="signal_request::Message", tags="1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21")]
3129    pub message: ::core::option::Option<signal_request::Message>,
3130}
3131/// Nested message and enum types in `SignalRequest`.
3132pub mod signal_request {
3133    #[allow(clippy::derive_partial_eq_without_eq)]
3134#[derive(Clone, PartialEq, ::prost::Oneof)]
3135    pub enum Message {
3136        /// participant offer for publisher
3137        #[prost(message, tag="1")]
3138        Offer(super::SessionDescription),
3139        /// participant answering subscriber offer
3140        #[prost(message, tag="2")]
3141        Answer(super::SessionDescription),
3142        #[prost(message, tag="3")]
3143        Trickle(super::TrickleRequest),
3144        #[prost(message, tag="4")]
3145        AddTrack(super::AddTrackRequest),
3146        /// mute the participant's published tracks
3147        #[prost(message, tag="5")]
3148        Mute(super::MuteTrackRequest),
3149        /// Subscribe or unsubscribe from tracks
3150        #[prost(message, tag="6")]
3151        Subscription(super::UpdateSubscription),
3152        /// Update settings of subscribed tracks
3153        #[prost(message, tag="7")]
3154        TrackSetting(super::UpdateTrackSettings),
3155        /// Immediately terminate session
3156        #[prost(message, tag="8")]
3157        Leave(super::LeaveRequest),
3158        /// Update published video layers
3159        #[prost(message, tag="10")]
3160        UpdateLayers(super::UpdateVideoLayers),
3161        /// Update subscriber permissions
3162        #[prost(message, tag="11")]
3163        SubscriptionPermission(super::SubscriptionPermission),
3164        /// sync client's subscribe state to server during reconnect
3165        #[prost(message, tag="12")]
3166        SyncState(super::SyncState),
3167        /// Simulate conditions, for client validations
3168        #[prost(message, tag="13")]
3169        Simulate(super::SimulateScenario),
3170        /// client triggered ping to server
3171        ///
3172        /// deprecated by ping_req (message Ping)
3173        #[prost(int64, tag="14")]
3174        Ping(i64),
3175        /// update a participant's own metadata, name, or attributes
3176        /// requires canUpdateOwnParticipantMetadata permission
3177        #[prost(message, tag="15")]
3178        UpdateMetadata(super::UpdateParticipantMetadata),
3179        #[prost(message, tag="16")]
3180        PingReq(super::Ping),
3181        /// Update local audio track settings
3182        #[prost(message, tag="17")]
3183        UpdateAudioTrack(super::UpdateLocalAudioTrack),
3184        /// Update local video track settings
3185        #[prost(message, tag="18")]
3186        UpdateVideoTrack(super::UpdateLocalVideoTrack),
3187        /// Publish a data track
3188        #[prost(message, tag="19")]
3189        PublishDataTrackRequest(super::PublishDataTrackRequest),
3190        /// Unpublish a data track
3191        #[prost(message, tag="20")]
3192        UnpublishDataTrackRequest(super::UnpublishDataTrackRequest),
3193        /// Update subscription state for one or more data tracks
3194        #[prost(message, tag="21")]
3195        UpdateDataSubscription(super::UpdateDataSubscription),
3196    }
3197}
3198#[allow(clippy::derive_partial_eq_without_eq)]
3199#[derive(Clone, PartialEq, ::prost::Message)]
3200pub struct SignalResponse {
3201    #[prost(oneof="signal_response::Message", tags="1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29")]
3202    pub message: ::core::option::Option<signal_response::Message>,
3203}
3204/// Nested message and enum types in `SignalResponse`.
3205pub mod signal_response {
3206    #[allow(clippy::derive_partial_eq_without_eq)]
3207#[derive(Clone, PartialEq, ::prost::Oneof)]
3208    pub enum Message {
3209        /// sent when join is accepted
3210        #[prost(message, tag="1")]
3211        Join(super::JoinResponse),
3212        /// sent when server answers publisher
3213        #[prost(message, tag="2")]
3214        Answer(super::SessionDescription),
3215        /// sent when server is sending subscriber an offer
3216        #[prost(message, tag="3")]
3217        Offer(super::SessionDescription),
3218        /// sent when an ICE candidate is available
3219        #[prost(message, tag="4")]
3220        Trickle(super::TrickleRequest),
3221        /// sent when participants in the room has changed
3222        #[prost(message, tag="5")]
3223        Update(super::ParticipantUpdate),
3224        /// sent to the participant when their track has been published
3225        #[prost(message, tag="6")]
3226        TrackPublished(super::TrackPublishedResponse),
3227        /// Immediately terminate session
3228        #[prost(message, tag="8")]
3229        Leave(super::LeaveRequest),
3230        /// server initiated mute
3231        #[prost(message, tag="9")]
3232        Mute(super::MuteTrackRequest),
3233        /// indicates changes to speaker status, including when they've gone to not speaking
3234        #[prost(message, tag="10")]
3235        SpeakersChanged(super::SpeakersChanged),
3236        /// sent when metadata of the room has changed
3237        #[prost(message, tag="11")]
3238        RoomUpdate(super::RoomUpdate),
3239        /// when connection quality changed
3240        #[prost(message, tag="12")]
3241        ConnectionQuality(super::ConnectionQualityUpdate),
3242        /// when streamed tracks state changed, used to notify when any of the streams were paused due to
3243        /// congestion
3244        #[prost(message, tag="13")]
3245        StreamStateUpdate(super::StreamStateUpdate),
3246        /// when max subscribe quality changed, used by dynamic broadcasting to disable unused layers
3247        #[prost(message, tag="14")]
3248        SubscribedQualityUpdate(super::SubscribedQualityUpdate),
3249        /// when subscription permission changed
3250        #[prost(message, tag="15")]
3251        SubscriptionPermissionUpdate(super::SubscriptionPermissionUpdate),
3252        /// update the token the client was using, to prevent an active client from using an expired token
3253        #[prost(string, tag="16")]
3254        RefreshToken(::prost::alloc::string::String),
3255        /// server initiated track unpublish
3256        #[prost(message, tag="17")]
3257        TrackUnpublished(super::TrackUnpublishedResponse),
3258        /// respond to ping
3259        ///
3260        /// deprecated by pong_resp (message Pong)
3261        #[prost(int64, tag="18")]
3262        Pong(i64),
3263        /// sent when client reconnects
3264        #[prost(message, tag="19")]
3265        Reconnect(super::ReconnectResponse),
3266        /// respond to Ping
3267        #[prost(message, tag="20")]
3268        PongResp(super::Pong),
3269        /// Subscription response, client should not expect any media from this subscription if it fails
3270        #[prost(message, tag="21")]
3271        SubscriptionResponse(super::SubscriptionResponse),
3272        /// Response relating to user inititated requests that carry a `request_id`
3273        #[prost(message, tag="22")]
3274        RequestResponse(super::RequestResponse),
3275        /// notify to the publisher when a published track has been subscribed for the first time
3276        #[prost(message, tag="23")]
3277        TrackSubscribed(super::TrackSubscribed),
3278        /// notify to the participant when they have been moved to a new room
3279        #[prost(message, tag="24")]
3280        RoomMoved(super::RoomMovedResponse),
3281        /// notify number of required media sections to satisfy subscribed tracks
3282        #[prost(message, tag="25")]
3283        MediaSectionsRequirement(super::MediaSectionsRequirement),
3284        /// when audio subscription changes, used to enable simulcasting of audio codecs based on subscriptions
3285        #[prost(message, tag="26")]
3286        SubscribedAudioCodecUpdate(super::SubscribedAudioCodecUpdate),
3287        /// Sent in response to `PublishDataTrackRequest`.
3288        #[prost(message, tag="27")]
3289        PublishDataTrackResponse(super::PublishDataTrackResponse),
3290        /// Sent in response to `UnpublishDataTrackRequest` or SFU-initiated unpublish.
3291        #[prost(message, tag="28")]
3292        UnpublishDataTrackResponse(super::UnpublishDataTrackResponse),
3293        /// Sent to data track subscribers to provide mapping from track SIDs to handles.
3294        #[prost(message, tag="29")]
3295        DataTrackSubscriberHandles(super::DataTrackSubscriberHandles),
3296    }
3297}
3298#[allow(clippy::derive_partial_eq_without_eq)]
3299#[derive(Clone, PartialEq, ::prost::Message)]
3300pub struct SimulcastCodec {
3301    #[prost(string, tag="1")]
3302    pub codec: ::prost::alloc::string::String,
3303    #[prost(string, tag="2")]
3304    pub cid: ::prost::alloc::string::String,
3305    #[prost(message, repeated, tag="4")]
3306    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
3307    #[prost(enumeration="video_layer::Mode", tag="5")]
3308    pub video_layer_mode: i32,
3309}
3310#[allow(clippy::derive_partial_eq_without_eq)]
3311#[derive(Clone, PartialEq, ::prost::Message)]
3312pub struct AddTrackRequest {
3313    /// client ID of track, to match it when RTC track is received
3314    #[prost(string, tag="1")]
3315    pub cid: ::prost::alloc::string::String,
3316    #[prost(string, tag="2")]
3317    pub name: ::prost::alloc::string::String,
3318    #[prost(enumeration="TrackType", tag="3")]
3319    pub r#type: i32,
3320    #[prost(uint32, tag="4")]
3321    pub width: u32,
3322    #[prost(uint32, tag="5")]
3323    pub height: u32,
3324    /// true to add track and initialize to muted
3325    #[prost(bool, tag="6")]
3326    pub muted: bool,
3327    /// true if DTX (Discontinuous Transmission) is disabled for audio
3328    ///
3329    /// deprecated in favor of audio_features
3330    #[deprecated]
3331    #[prost(bool, tag="7")]
3332    pub disable_dtx: bool,
3333    #[prost(enumeration="TrackSource", tag="8")]
3334    pub source: i32,
3335    #[prost(message, repeated, tag="9")]
3336    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
3337    #[prost(message, repeated, tag="10")]
3338    pub simulcast_codecs: ::prost::alloc::vec::Vec<SimulcastCodec>,
3339    /// server ID of track, publish new codec to exist track
3340    #[prost(string, tag="11")]
3341    pub sid: ::prost::alloc::string::String,
3342    /// deprecated in favor of audio_features
3343    #[deprecated]
3344    #[prost(bool, tag="12")]
3345    pub stereo: bool,
3346    /// true if RED (Redundant Encoding) is disabled for audio
3347    #[prost(bool, tag="13")]
3348    pub disable_red: bool,
3349    #[prost(enumeration="encryption::Type", tag="14")]
3350    pub encryption: i32,
3351    /// which stream the track belongs to, used to group tracks together.
3352    /// if not specified, server will infer it from track source to bundle camera/microphone, screenshare/audio together
3353    #[prost(string, tag="15")]
3354    pub stream: ::prost::alloc::string::String,
3355    #[prost(enumeration="BackupCodecPolicy", tag="16")]
3356    pub backup_codec_policy: i32,
3357    #[prost(enumeration="AudioTrackFeature", repeated, tag="17")]
3358    pub audio_features: ::prost::alloc::vec::Vec<i32>,
3359}
3360#[allow(clippy::derive_partial_eq_without_eq)]
3361#[derive(Clone, PartialEq, ::prost::Message)]
3362pub struct PublishDataTrackRequest {
3363    /// Client-assigned, 16-bit identifier that will be attached to packets sent by the publisher.
3364    /// This must be non-zero and unique for each data track published by the publisher.
3365    #[prost(uint32, tag="1")]
3366    pub pub_handle: u32,
3367    /// Human-readable identifier (e.g., `geoLocation`, `servoPosition.x`, etc.), unique per publisher.
3368    /// This must be non-empty and no longer than 256 characters.
3369    #[prost(string, tag="2")]
3370    pub name: ::prost::alloc::string::String,
3371    /// Method used for end-to-end encryption (E2EE) on frame payloads.
3372    #[prost(enumeration="encryption::Type", tag="3")]
3373    pub encryption: i32,
3374}
3375#[allow(clippy::derive_partial_eq_without_eq)]
3376#[derive(Clone, PartialEq, ::prost::Message)]
3377pub struct PublishDataTrackResponse {
3378    /// Information about the published track.
3379    #[prost(message, optional, tag="1")]
3380    pub info: ::core::option::Option<DataTrackInfo>,
3381}
3382#[allow(clippy::derive_partial_eq_without_eq)]
3383#[derive(Clone, PartialEq, ::prost::Message)]
3384pub struct UnpublishDataTrackRequest {
3385    /// Publisher handle of the track to unpublish.
3386    #[prost(uint32, tag="1")]
3387    pub pub_handle: u32,
3388}
3389#[allow(clippy::derive_partial_eq_without_eq)]
3390#[derive(Clone, PartialEq, ::prost::Message)]
3391pub struct UnpublishDataTrackResponse {
3392    /// Information about the unpublished track.
3393    #[prost(message, optional, tag="1")]
3394    pub info: ::core::option::Option<DataTrackInfo>,
3395}
3396#[allow(clippy::derive_partial_eq_without_eq)]
3397#[derive(Clone, PartialEq, ::prost::Message)]
3398pub struct DataTrackSubscriberHandles {
3399    /// Maps handles from incoming packets to the track SIDs that the packets belong to.
3400    #[prost(map="uint32, message", tag="1")]
3401    pub sub_handles: ::std::collections::HashMap<u32, data_track_subscriber_handles::PublishedDataTrack>,
3402}
3403/// Nested message and enum types in `DataTrackSubscriberHandles`.
3404pub mod data_track_subscriber_handles {
3405    #[allow(clippy::derive_partial_eq_without_eq)]
3406#[derive(Clone, PartialEq, ::prost::Message)]
3407    pub struct PublishedDataTrack {
3408        #[prost(string, tag="1")]
3409        pub publisher_identity: ::prost::alloc::string::String,
3410        #[prost(string, tag="2")]
3411        pub publisher_sid: ::prost::alloc::string::String,
3412        #[prost(string, tag="3")]
3413        pub track_sid: ::prost::alloc::string::String,
3414    }
3415}
3416#[allow(clippy::derive_partial_eq_without_eq)]
3417#[derive(Clone, PartialEq, ::prost::Message)]
3418pub struct TrickleRequest {
3419    #[prost(string, tag="1")]
3420    pub candidate_init: ::prost::alloc::string::String,
3421    #[prost(enumeration="SignalTarget", tag="2")]
3422    pub target: i32,
3423    #[prost(bool, tag="3")]
3424    pub r#final: bool,
3425}
3426#[allow(clippy::derive_partial_eq_without_eq)]
3427#[derive(Clone, PartialEq, ::prost::Message)]
3428pub struct MuteTrackRequest {
3429    #[prost(string, tag="1")]
3430    pub sid: ::prost::alloc::string::String,
3431    #[prost(bool, tag="2")]
3432    pub muted: bool,
3433}
3434#[allow(clippy::derive_partial_eq_without_eq)]
3435#[derive(Clone, PartialEq, ::prost::Message)]
3436pub struct JoinResponse {
3437    #[prost(message, optional, tag="1")]
3438    pub room: ::core::option::Option<Room>,
3439    #[prost(message, optional, tag="2")]
3440    pub participant: ::core::option::Option<ParticipantInfo>,
3441    #[prost(message, repeated, tag="3")]
3442    pub other_participants: ::prost::alloc::vec::Vec<ParticipantInfo>,
3443    /// deprecated. use server_info.version instead.
3444    #[prost(string, tag="4")]
3445    pub server_version: ::prost::alloc::string::String,
3446    #[prost(message, repeated, tag="5")]
3447    pub ice_servers: ::prost::alloc::vec::Vec<IceServer>,
3448    /// use subscriber as the primary PeerConnection
3449    #[prost(bool, tag="6")]
3450    pub subscriber_primary: bool,
3451    /// when the current server isn't available, return alternate url to retry connection
3452    /// when this is set, the other fields will be largely empty
3453    #[prost(string, tag="7")]
3454    pub alternative_url: ::prost::alloc::string::String,
3455    #[prost(message, optional, tag="8")]
3456    pub client_configuration: ::core::option::Option<ClientConfiguration>,
3457    /// deprecated. use server_info.region instead.
3458    #[prost(string, tag="9")]
3459    pub server_region: ::prost::alloc::string::String,
3460    #[prost(int32, tag="10")]
3461    pub ping_timeout: i32,
3462    #[prost(int32, tag="11")]
3463    pub ping_interval: i32,
3464    #[prost(message, optional, tag="12")]
3465    pub server_info: ::core::option::Option<ServerInfo>,
3466    /// Server-Injected-Frame byte trailer, used to identify unencrypted frames when e2ee is enabled
3467    #[prost(bytes="vec", tag="13")]
3468    pub sif_trailer: ::prost::alloc::vec::Vec<u8>,
3469    #[prost(message, repeated, tag="14")]
3470    pub enabled_publish_codecs: ::prost::alloc::vec::Vec<Codec>,
3471    /// when set, client should attempt to establish publish peer connection when joining room to speed up publishing
3472    #[prost(bool, tag="15")]
3473    pub fast_publish: bool,
3474}
3475#[allow(clippy::derive_partial_eq_without_eq)]
3476#[derive(Clone, PartialEq, ::prost::Message)]
3477pub struct ReconnectResponse {
3478    #[prost(message, repeated, tag="1")]
3479    pub ice_servers: ::prost::alloc::vec::Vec<IceServer>,
3480    #[prost(message, optional, tag="2")]
3481    pub client_configuration: ::core::option::Option<ClientConfiguration>,
3482    #[prost(message, optional, tag="3")]
3483    pub server_info: ::core::option::Option<ServerInfo>,
3484    /// last sequence number of reliable message received before resuming
3485    #[prost(uint32, tag="4")]
3486    pub last_message_seq: u32,
3487}
3488#[allow(clippy::derive_partial_eq_without_eq)]
3489#[derive(Clone, PartialEq, ::prost::Message)]
3490pub struct TrackPublishedResponse {
3491    #[prost(string, tag="1")]
3492    pub cid: ::prost::alloc::string::String,
3493    #[prost(message, optional, tag="2")]
3494    pub track: ::core::option::Option<TrackInfo>,
3495}
3496#[allow(clippy::derive_partial_eq_without_eq)]
3497#[derive(Clone, PartialEq, ::prost::Message)]
3498pub struct TrackUnpublishedResponse {
3499    #[prost(string, tag="1")]
3500    pub track_sid: ::prost::alloc::string::String,
3501}
3502#[allow(clippy::derive_partial_eq_without_eq)]
3503#[derive(Clone, PartialEq, ::prost::Message)]
3504pub struct SessionDescription {
3505    /// "answer" | "offer" | "pranswer" | "rollback"
3506    #[prost(string, tag="1")]
3507    pub r#type: ::prost::alloc::string::String,
3508    #[prost(string, tag="2")]
3509    pub sdp: ::prost::alloc::string::String,
3510    #[prost(uint32, tag="3")]
3511    pub id: u32,
3512    #[prost(map="string, string", tag="4")]
3513    pub mid_to_track_id: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
3514}
3515#[allow(clippy::derive_partial_eq_without_eq)]
3516#[derive(Clone, PartialEq, ::prost::Message)]
3517pub struct ParticipantUpdate {
3518    #[prost(message, repeated, tag="1")]
3519    pub participants: ::prost::alloc::vec::Vec<ParticipantInfo>,
3520}
3521#[allow(clippy::derive_partial_eq_without_eq)]
3522#[derive(Clone, PartialEq, ::prost::Message)]
3523pub struct UpdateSubscription {
3524    #[prost(string, repeated, tag="1")]
3525    pub track_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3526    #[prost(bool, tag="2")]
3527    pub subscribe: bool,
3528    #[prost(message, repeated, tag="3")]
3529    pub participant_tracks: ::prost::alloc::vec::Vec<ParticipantTracks>,
3530}
3531#[allow(clippy::derive_partial_eq_without_eq)]
3532#[derive(Clone, PartialEq, ::prost::Message)]
3533pub struct UpdateDataSubscription {
3534    #[prost(message, repeated, tag="1")]
3535    pub updates: ::prost::alloc::vec::Vec<update_data_subscription::Update>,
3536}
3537/// Nested message and enum types in `UpdateDataSubscription`.
3538pub mod update_data_subscription {
3539    #[allow(clippy::derive_partial_eq_without_eq)]
3540#[derive(Clone, PartialEq, ::prost::Message)]
3541    pub struct Update {
3542        #[prost(string, tag="1")]
3543        pub track_sid: ::prost::alloc::string::String,
3544        #[prost(bool, tag="2")]
3545        pub subscribe: bool,
3546        /// Options to apply when initially subscribing or updating an existing subscription.
3547        /// When unsubscribing, this field is ignored.
3548        #[prost(message, optional, tag="3")]
3549        pub options: ::core::option::Option<super::DataTrackSubscriptionOptions>,
3550    }
3551}
3552#[allow(clippy::derive_partial_eq_without_eq)]
3553#[derive(Clone, PartialEq, ::prost::Message)]
3554pub struct UpdateTrackSettings {
3555    #[prost(string, repeated, tag="1")]
3556    pub track_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3557    /// when true, the track is placed in a paused state, with no new data returned
3558    #[prost(bool, tag="3")]
3559    pub disabled: bool,
3560    /// deprecated in favor of width & height
3561    #[prost(enumeration="VideoQuality", tag="4")]
3562    pub quality: i32,
3563    /// for video, width to receive
3564    #[prost(uint32, tag="5")]
3565    pub width: u32,
3566    /// for video, height to receive
3567    #[prost(uint32, tag="6")]
3568    pub height: u32,
3569    #[prost(uint32, tag="7")]
3570    pub fps: u32,
3571    /// subscription priority. 1 being the highest (0 is unset)
3572    /// when unset, server sill assign priority based on the order of subscription
3573    /// server will use priority in the following ways:
3574    /// 1. when subscribed tracks exceed per-participant subscription limit, server will
3575    ///     pause the lowest priority tracks
3576    /// 2. when the network is congested, server will assign available bandwidth to
3577    ///     higher priority tracks first. lowest priority tracks can be paused
3578    #[prost(uint32, tag="8")]
3579    pub priority: u32,
3580}
3581#[allow(clippy::derive_partial_eq_without_eq)]
3582#[derive(Clone, PartialEq, ::prost::Message)]
3583pub struct UpdateLocalAudioTrack {
3584    #[prost(string, tag="1")]
3585    pub track_sid: ::prost::alloc::string::String,
3586    #[prost(enumeration="AudioTrackFeature", repeated, tag="2")]
3587    pub features: ::prost::alloc::vec::Vec<i32>,
3588}
3589#[allow(clippy::derive_partial_eq_without_eq)]
3590#[derive(Clone, PartialEq, ::prost::Message)]
3591pub struct UpdateLocalVideoTrack {
3592    #[prost(string, tag="1")]
3593    pub track_sid: ::prost::alloc::string::String,
3594    #[prost(uint32, tag="2")]
3595    pub width: u32,
3596    #[prost(uint32, tag="3")]
3597    pub height: u32,
3598}
3599#[allow(clippy::derive_partial_eq_without_eq)]
3600#[derive(Clone, PartialEq, ::prost::Message)]
3601pub struct LeaveRequest {
3602    /// sent when server initiates the disconnect due to server-restart
3603    /// indicates clients should attempt full-reconnect sequence
3604    /// NOTE: `can_reconnect` obsoleted by `action` starting in protocol version 13
3605    #[prost(bool, tag="1")]
3606    pub can_reconnect: bool,
3607    #[prost(enumeration="DisconnectReason", tag="2")]
3608    pub reason: i32,
3609    #[prost(enumeration="leave_request::Action", tag="3")]
3610    pub action: i32,
3611    #[prost(message, optional, tag="4")]
3612    pub regions: ::core::option::Option<RegionSettings>,
3613}
3614/// Nested message and enum types in `LeaveRequest`.
3615pub mod leave_request {
3616    /// indicates action clients should take on receiving this message
3617    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3618    #[repr(i32)]
3619    pub enum Action {
3620        /// should disconnect
3621        Disconnect = 0,
3622        /// should attempt a resume with `reconnect=1` in join URL
3623        Resume = 1,
3624        /// should attempt a reconnect, i. e. no `reconnect=1`
3625        Reconnect = 2,
3626    }
3627    impl Action {
3628        /// String value of the enum field names used in the ProtoBuf definition.
3629        ///
3630        /// The values are not transformed in any way and thus are considered stable
3631        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3632        pub fn as_str_name(&self) -> &'static str {
3633            match self {
3634                Action::Disconnect => "DISCONNECT",
3635                Action::Resume => "RESUME",
3636                Action::Reconnect => "RECONNECT",
3637            }
3638        }
3639        /// Creates an enum from field names used in the ProtoBuf definition.
3640        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3641            match value {
3642                "DISCONNECT" => Some(Self::Disconnect),
3643                "RESUME" => Some(Self::Resume),
3644                "RECONNECT" => Some(Self::Reconnect),
3645                _ => None,
3646            }
3647        }
3648    }
3649}
3650/// message to indicate published video track dimensions are changing
3651#[allow(clippy::derive_partial_eq_without_eq)]
3652#[derive(Clone, PartialEq, ::prost::Message)]
3653pub struct UpdateVideoLayers {
3654    #[prost(string, tag="1")]
3655    pub track_sid: ::prost::alloc::string::String,
3656    #[prost(message, repeated, tag="2")]
3657    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
3658}
3659#[allow(clippy::derive_partial_eq_without_eq)]
3660#[derive(Clone, PartialEq, ::prost::Message)]
3661pub struct UpdateParticipantMetadata {
3662    #[prost(string, tag="1")]
3663    pub metadata: ::prost::alloc::string::String,
3664    #[prost(string, tag="2")]
3665    pub name: ::prost::alloc::string::String,
3666    /// attributes to update. it only updates attributes that have been set
3667    /// to delete attributes, set the value to an empty string
3668    #[prost(map="string, string", tag="3")]
3669    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
3670    #[prost(uint32, tag="4")]
3671    pub request_id: u32,
3672}
3673#[allow(clippy::derive_partial_eq_without_eq)]
3674#[derive(Clone, PartialEq, ::prost::Message)]
3675pub struct IceServer {
3676    #[prost(string, repeated, tag="1")]
3677    pub urls: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3678    #[prost(string, tag="2")]
3679    pub username: ::prost::alloc::string::String,
3680    #[prost(string, tag="3")]
3681    pub credential: ::prost::alloc::string::String,
3682}
3683#[allow(clippy::derive_partial_eq_without_eq)]
3684#[derive(Clone, PartialEq, ::prost::Message)]
3685pub struct SpeakersChanged {
3686    #[prost(message, repeated, tag="1")]
3687    pub speakers: ::prost::alloc::vec::Vec<SpeakerInfo>,
3688}
3689#[allow(clippy::derive_partial_eq_without_eq)]
3690#[derive(Clone, PartialEq, ::prost::Message)]
3691pub struct RoomUpdate {
3692    #[prost(message, optional, tag="1")]
3693    pub room: ::core::option::Option<Room>,
3694}
3695#[allow(clippy::derive_partial_eq_without_eq)]
3696#[derive(Clone, PartialEq, ::prost::Message)]
3697pub struct ConnectionQualityInfo {
3698    #[prost(string, tag="1")]
3699    pub participant_sid: ::prost::alloc::string::String,
3700    #[prost(enumeration="ConnectionQuality", tag="2")]
3701    pub quality: i32,
3702    #[prost(float, tag="3")]
3703    pub score: f32,
3704}
3705#[allow(clippy::derive_partial_eq_without_eq)]
3706#[derive(Clone, PartialEq, ::prost::Message)]
3707pub struct ConnectionQualityUpdate {
3708    #[prost(message, repeated, tag="1")]
3709    pub updates: ::prost::alloc::vec::Vec<ConnectionQualityInfo>,
3710}
3711#[allow(clippy::derive_partial_eq_without_eq)]
3712#[derive(Clone, PartialEq, ::prost::Message)]
3713pub struct StreamStateInfo {
3714    #[prost(string, tag="1")]
3715    pub participant_sid: ::prost::alloc::string::String,
3716    #[prost(string, tag="2")]
3717    pub track_sid: ::prost::alloc::string::String,
3718    #[prost(enumeration="StreamState", tag="3")]
3719    pub state: i32,
3720}
3721#[allow(clippy::derive_partial_eq_without_eq)]
3722#[derive(Clone, PartialEq, ::prost::Message)]
3723pub struct StreamStateUpdate {
3724    #[prost(message, repeated, tag="1")]
3725    pub stream_states: ::prost::alloc::vec::Vec<StreamStateInfo>,
3726}
3727#[allow(clippy::derive_partial_eq_without_eq)]
3728#[derive(Clone, PartialEq, ::prost::Message)]
3729pub struct SubscribedQuality {
3730    #[prost(enumeration="VideoQuality", tag="1")]
3731    pub quality: i32,
3732    #[prost(bool, tag="2")]
3733    pub enabled: bool,
3734}
3735#[allow(clippy::derive_partial_eq_without_eq)]
3736#[derive(Clone, PartialEq, ::prost::Message)]
3737pub struct SubscribedCodec {
3738    #[prost(string, tag="1")]
3739    pub codec: ::prost::alloc::string::String,
3740    #[prost(message, repeated, tag="2")]
3741    pub qualities: ::prost::alloc::vec::Vec<SubscribedQuality>,
3742}
3743#[allow(clippy::derive_partial_eq_without_eq)]
3744#[derive(Clone, PartialEq, ::prost::Message)]
3745pub struct SubscribedQualityUpdate {
3746    #[prost(string, tag="1")]
3747    pub track_sid: ::prost::alloc::string::String,
3748    #[deprecated]
3749    #[prost(message, repeated, tag="2")]
3750    pub subscribed_qualities: ::prost::alloc::vec::Vec<SubscribedQuality>,
3751    #[prost(message, repeated, tag="3")]
3752    pub subscribed_codecs: ::prost::alloc::vec::Vec<SubscribedCodec>,
3753}
3754#[allow(clippy::derive_partial_eq_without_eq)]
3755#[derive(Clone, PartialEq, ::prost::Message)]
3756pub struct SubscribedAudioCodecUpdate {
3757    #[prost(string, tag="1")]
3758    pub track_sid: ::prost::alloc::string::String,
3759    #[prost(message, repeated, tag="2")]
3760    pub subscribed_audio_codecs: ::prost::alloc::vec::Vec<SubscribedAudioCodec>,
3761}
3762#[allow(clippy::derive_partial_eq_without_eq)]
3763#[derive(Clone, PartialEq, ::prost::Message)]
3764pub struct TrackPermission {
3765    /// permission could be granted either by participant sid or identity
3766    #[prost(string, tag="1")]
3767    pub participant_sid: ::prost::alloc::string::String,
3768    #[prost(bool, tag="2")]
3769    pub all_tracks: bool,
3770    #[prost(string, repeated, tag="3")]
3771    pub track_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3772    #[prost(string, tag="4")]
3773    pub participant_identity: ::prost::alloc::string::String,
3774}
3775#[allow(clippy::derive_partial_eq_without_eq)]
3776#[derive(Clone, PartialEq, ::prost::Message)]
3777pub struct SubscriptionPermission {
3778    #[prost(bool, tag="1")]
3779    pub all_participants: bool,
3780    #[prost(message, repeated, tag="2")]
3781    pub track_permissions: ::prost::alloc::vec::Vec<TrackPermission>,
3782}
3783#[allow(clippy::derive_partial_eq_without_eq)]
3784#[derive(Clone, PartialEq, ::prost::Message)]
3785pub struct SubscriptionPermissionUpdate {
3786    #[prost(string, tag="1")]
3787    pub participant_sid: ::prost::alloc::string::String,
3788    #[prost(string, tag="2")]
3789    pub track_sid: ::prost::alloc::string::String,
3790    #[prost(bool, tag="3")]
3791    pub allowed: bool,
3792}
3793#[allow(clippy::derive_partial_eq_without_eq)]
3794#[derive(Clone, PartialEq, ::prost::Message)]
3795pub struct RoomMovedResponse {
3796    /// information about the new room
3797    #[prost(message, optional, tag="1")]
3798    pub room: ::core::option::Option<Room>,
3799    /// new reconnect token that can be used to reconnect to the new room
3800    #[prost(string, tag="2")]
3801    pub token: ::prost::alloc::string::String,
3802    #[prost(message, optional, tag="3")]
3803    pub participant: ::core::option::Option<ParticipantInfo>,
3804    #[prost(message, repeated, tag="4")]
3805    pub other_participants: ::prost::alloc::vec::Vec<ParticipantInfo>,
3806}
3807#[allow(clippy::derive_partial_eq_without_eq)]
3808#[derive(Clone, PartialEq, ::prost::Message)]
3809pub struct SyncState {
3810    /// last subscribe/publish answer before reconnecting
3811    /// subscribe answer if using dual peer connection
3812    /// publish answer if using single peer connection
3813    #[prost(message, optional, tag="1")]
3814    pub answer: ::core::option::Option<SessionDescription>,
3815    #[prost(message, optional, tag="2")]
3816    pub subscription: ::core::option::Option<UpdateSubscription>,
3817    #[prost(message, repeated, tag="3")]
3818    pub publish_tracks: ::prost::alloc::vec::Vec<TrackPublishedResponse>,
3819    #[prost(message, repeated, tag="4")]
3820    pub data_channels: ::prost::alloc::vec::Vec<DataChannelInfo>,
3821    /// last received server side offer/sent client side offer before reconnecting
3822    /// received server side offer if using dual peer connection
3823    /// sent client side offer if using single peer connection
3824    #[prost(message, optional, tag="5")]
3825    pub offer: ::core::option::Option<SessionDescription>,
3826    #[prost(string, repeated, tag="6")]
3827    pub track_sids_disabled: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3828    #[prost(message, repeated, tag="7")]
3829    pub datachannel_receive_states: ::prost::alloc::vec::Vec<DataChannelReceiveState>,
3830    #[prost(message, repeated, tag="8")]
3831    pub publish_data_tracks: ::prost::alloc::vec::Vec<PublishDataTrackResponse>,
3832}
3833#[allow(clippy::derive_partial_eq_without_eq)]
3834#[derive(Clone, PartialEq, ::prost::Message)]
3835pub struct DataChannelReceiveState {
3836    #[prost(string, tag="1")]
3837    pub publisher_sid: ::prost::alloc::string::String,
3838    #[prost(uint32, tag="2")]
3839    pub last_seq: u32,
3840}
3841#[allow(clippy::derive_partial_eq_without_eq)]
3842#[derive(Clone, PartialEq, ::prost::Message)]
3843pub struct DataChannelInfo {
3844    #[prost(string, tag="1")]
3845    pub label: ::prost::alloc::string::String,
3846    #[prost(uint32, tag="2")]
3847    pub id: u32,
3848    #[prost(enumeration="SignalTarget", tag="3")]
3849    pub target: i32,
3850}
3851#[allow(clippy::derive_partial_eq_without_eq)]
3852#[derive(Clone, PartialEq, ::prost::Message)]
3853pub struct SimulateScenario {
3854    #[prost(oneof="simulate_scenario::Scenario", tags="1, 2, 3, 4, 5, 6, 7, 8, 9")]
3855    pub scenario: ::core::option::Option<simulate_scenario::Scenario>,
3856}
3857/// Nested message and enum types in `SimulateScenario`.
3858pub mod simulate_scenario {
3859    #[allow(clippy::derive_partial_eq_without_eq)]
3860#[derive(Clone, PartialEq, ::prost::Oneof)]
3861    pub enum Scenario {
3862        /// simulate N seconds of speaker activity
3863        #[prost(int32, tag="1")]
3864        SpeakerUpdate(i32),
3865        /// simulate local node failure
3866        #[prost(bool, tag="2")]
3867        NodeFailure(bool),
3868        /// simulate migration
3869        #[prost(bool, tag="3")]
3870        Migration(bool),
3871        /// server to send leave
3872        #[prost(bool, tag="4")]
3873        ServerLeave(bool),
3874        /// switch candidate protocol to tcp
3875        #[prost(enumeration="super::CandidateProtocol", tag="5")]
3876        SwitchCandidateProtocol(i32),
3877        /// maximum bandwidth for subscribers, in bps
3878        /// when zero, clears artificial bandwidth limit
3879        #[prost(int64, tag="6")]
3880        SubscriberBandwidth(i64),
3881        /// disconnect signal on resume
3882        #[prost(bool, tag="7")]
3883        DisconnectSignalOnResume(bool),
3884        /// disconnect signal on resume before sending any messages from server
3885        #[prost(bool, tag="8")]
3886        DisconnectSignalOnResumeNoMessages(bool),
3887        /// full reconnect leave request
3888        #[prost(bool, tag="9")]
3889        LeaveRequestFullReconnect(bool),
3890    }
3891}
3892#[allow(clippy::derive_partial_eq_without_eq)]
3893#[derive(Clone, PartialEq, ::prost::Message)]
3894pub struct Ping {
3895    #[prost(int64, tag="1")]
3896    pub timestamp: i64,
3897    /// rtt in milliseconds calculated by client
3898    #[prost(int64, tag="2")]
3899    pub rtt: i64,
3900}
3901#[allow(clippy::derive_partial_eq_without_eq)]
3902#[derive(Clone, PartialEq, ::prost::Message)]
3903pub struct Pong {
3904    /// timestamp field of last received ping request
3905    #[prost(int64, tag="1")]
3906    pub last_ping_timestamp: i64,
3907    #[prost(int64, tag="2")]
3908    pub timestamp: i64,
3909}
3910#[allow(clippy::derive_partial_eq_without_eq)]
3911#[derive(Clone, PartialEq, ::prost::Message)]
3912pub struct RegionSettings {
3913    #[prost(message, repeated, tag="1")]
3914    pub regions: ::prost::alloc::vec::Vec<RegionInfo>,
3915}
3916#[allow(clippy::derive_partial_eq_without_eq)]
3917#[derive(Clone, PartialEq, ::prost::Message)]
3918pub struct RegionInfo {
3919    #[prost(string, tag="1")]
3920    pub region: ::prost::alloc::string::String,
3921    #[prost(string, tag="2")]
3922    pub url: ::prost::alloc::string::String,
3923    #[prost(int64, tag="3")]
3924    pub distance: i64,
3925}
3926#[allow(clippy::derive_partial_eq_without_eq)]
3927#[derive(Clone, PartialEq, ::prost::Message)]
3928pub struct SubscriptionResponse {
3929    #[prost(string, tag="1")]
3930    pub track_sid: ::prost::alloc::string::String,
3931    #[prost(enumeration="SubscriptionError", tag="2")]
3932    pub err: i32,
3933}
3934#[allow(clippy::derive_partial_eq_without_eq)]
3935#[derive(Clone, PartialEq, ::prost::Message)]
3936pub struct RequestResponse {
3937    #[prost(uint32, tag="1")]
3938    pub request_id: u32,
3939    #[prost(enumeration="request_response::Reason", tag="2")]
3940    pub reason: i32,
3941    #[prost(string, tag="3")]
3942    pub message: ::prost::alloc::string::String,
3943    #[prost(oneof="request_response::Request", tags="4, 5, 6, 7, 8, 9, 10, 11")]
3944    pub request: ::core::option::Option<request_response::Request>,
3945}
3946/// Nested message and enum types in `RequestResponse`.
3947pub mod request_response {
3948    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3949    #[repr(i32)]
3950    pub enum Reason {
3951        Ok = 0,
3952        NotFound = 1,
3953        NotAllowed = 2,
3954        LimitExceeded = 3,
3955        Queued = 4,
3956        UnsupportedType = 5,
3957        UnclassifiedError = 6,
3958        InvalidHandle = 7,
3959        InvalidName = 8,
3960        DuplicateHandle = 9,
3961        DuplicateName = 10,
3962    }
3963    impl Reason {
3964        /// String value of the enum field names used in the ProtoBuf definition.
3965        ///
3966        /// The values are not transformed in any way and thus are considered stable
3967        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3968        pub fn as_str_name(&self) -> &'static str {
3969            match self {
3970                Reason::Ok => "OK",
3971                Reason::NotFound => "NOT_FOUND",
3972                Reason::NotAllowed => "NOT_ALLOWED",
3973                Reason::LimitExceeded => "LIMIT_EXCEEDED",
3974                Reason::Queued => "QUEUED",
3975                Reason::UnsupportedType => "UNSUPPORTED_TYPE",
3976                Reason::UnclassifiedError => "UNCLASSIFIED_ERROR",
3977                Reason::InvalidHandle => "INVALID_HANDLE",
3978                Reason::InvalidName => "INVALID_NAME",
3979                Reason::DuplicateHandle => "DUPLICATE_HANDLE",
3980                Reason::DuplicateName => "DUPLICATE_NAME",
3981            }
3982        }
3983        /// Creates an enum from field names used in the ProtoBuf definition.
3984        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3985            match value {
3986                "OK" => Some(Self::Ok),
3987                "NOT_FOUND" => Some(Self::NotFound),
3988                "NOT_ALLOWED" => Some(Self::NotAllowed),
3989                "LIMIT_EXCEEDED" => Some(Self::LimitExceeded),
3990                "QUEUED" => Some(Self::Queued),
3991                "UNSUPPORTED_TYPE" => Some(Self::UnsupportedType),
3992                "UNCLASSIFIED_ERROR" => Some(Self::UnclassifiedError),
3993                "INVALID_HANDLE" => Some(Self::InvalidHandle),
3994                "INVALID_NAME" => Some(Self::InvalidName),
3995                "DUPLICATE_HANDLE" => Some(Self::DuplicateHandle),
3996                "DUPLICATE_NAME" => Some(Self::DuplicateName),
3997                _ => None,
3998            }
3999        }
4000    }
4001    #[allow(clippy::derive_partial_eq_without_eq)]
4002#[derive(Clone, PartialEq, ::prost::Oneof)]
4003    pub enum Request {
4004        #[prost(message, tag="4")]
4005        Trickle(super::TrickleRequest),
4006        #[prost(message, tag="5")]
4007        AddTrack(super::AddTrackRequest),
4008        #[prost(message, tag="6")]
4009        Mute(super::MuteTrackRequest),
4010        #[prost(message, tag="7")]
4011        UpdateMetadata(super::UpdateParticipantMetadata),
4012        #[prost(message, tag="8")]
4013        UpdateAudioTrack(super::UpdateLocalAudioTrack),
4014        #[prost(message, tag="9")]
4015        UpdateVideoTrack(super::UpdateLocalVideoTrack),
4016        #[prost(message, tag="10")]
4017        PublishDataTrack(super::PublishDataTrackRequest),
4018        #[prost(message, tag="11")]
4019        UnpublishDataTrack(super::UnpublishDataTrackRequest),
4020    }
4021}
4022#[allow(clippy::derive_partial_eq_without_eq)]
4023#[derive(Clone, PartialEq, ::prost::Message)]
4024pub struct TrackSubscribed {
4025    #[prost(string, tag="1")]
4026    pub track_sid: ::prost::alloc::string::String,
4027}
4028#[allow(clippy::derive_partial_eq_without_eq)]
4029#[derive(Clone, PartialEq, ::prost::Message)]
4030pub struct ConnectionSettings {
4031    #[prost(bool, tag="1")]
4032    pub auto_subscribe: bool,
4033    #[prost(bool, tag="2")]
4034    pub adaptive_stream: bool,
4035    #[prost(bool, optional, tag="3")]
4036    pub subscriber_allow_pause: ::core::option::Option<bool>,
4037    #[prost(bool, tag="4")]
4038    pub disable_ice_lite: bool,
4039    #[prost(bool, optional, tag="5")]
4040    pub auto_subscribe_data_track: ::core::option::Option<bool>,
4041}
4042#[allow(clippy::derive_partial_eq_without_eq)]
4043#[derive(Clone, PartialEq, ::prost::Message)]
4044pub struct JoinRequest {
4045    #[prost(message, optional, tag="1")]
4046    pub client_info: ::core::option::Option<ClientInfo>,
4047    #[prost(message, optional, tag="2")]
4048    pub connection_settings: ::core::option::Option<ConnectionSettings>,
4049    /// if not empty, will overwrite `metadata` in token
4050    #[prost(string, tag="3")]
4051    pub metadata: ::prost::alloc::string::String,
4052    /// will set keys provided via this
4053    /// will overwrite if the same key is in the token
4054    /// will not delete keys from token if there is a key collision and this sets that key to empty value
4055    #[prost(map="string, string", tag="4")]
4056    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4057    #[prost(message, repeated, tag="5")]
4058    pub add_track_requests: ::prost::alloc::vec::Vec<AddTrackRequest>,
4059    #[prost(message, optional, tag="6")]
4060    pub publisher_offer: ::core::option::Option<SessionDescription>,
4061    #[prost(bool, tag="7")]
4062    pub reconnect: bool,
4063    #[prost(enumeration="ReconnectReason", tag="8")]
4064    pub reconnect_reason: i32,
4065    #[prost(string, tag="9")]
4066    pub participant_sid: ::prost::alloc::string::String,
4067    #[prost(message, optional, tag="10")]
4068    pub sync_state: ::core::option::Option<SyncState>,
4069}
4070#[allow(clippy::derive_partial_eq_without_eq)]
4071#[derive(Clone, PartialEq, ::prost::Message)]
4072pub struct WrappedJoinRequest {
4073    #[prost(enumeration="wrapped_join_request::Compression", tag="1")]
4074    pub compression: i32,
4075    /// marshalled JoinRequest + potentially compressed
4076    #[prost(bytes="vec", tag="2")]
4077    pub join_request: ::prost::alloc::vec::Vec<u8>,
4078}
4079/// Nested message and enum types in `WrappedJoinRequest`.
4080pub mod wrapped_join_request {
4081    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4082    #[repr(i32)]
4083    pub enum Compression {
4084        None = 0,
4085        Gzip = 1,
4086    }
4087    impl Compression {
4088        /// String value of the enum field names used in the ProtoBuf definition.
4089        ///
4090        /// The values are not transformed in any way and thus are considered stable
4091        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4092        pub fn as_str_name(&self) -> &'static str {
4093            match self {
4094                Compression::None => "NONE",
4095                Compression::Gzip => "GZIP",
4096            }
4097        }
4098        /// Creates an enum from field names used in the ProtoBuf definition.
4099        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4100            match value {
4101                "NONE" => Some(Self::None),
4102                "GZIP" => Some(Self::Gzip),
4103                _ => None,
4104            }
4105        }
4106    }
4107}
4108#[allow(clippy::derive_partial_eq_without_eq)]
4109#[derive(Clone, PartialEq, ::prost::Message)]
4110pub struct MediaSectionsRequirement {
4111    #[prost(uint32, tag="1")]
4112    pub num_audios: u32,
4113    #[prost(uint32, tag="2")]
4114    pub num_videos: u32,
4115}
4116#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4117#[repr(i32)]
4118pub enum SignalTarget {
4119    Publisher = 0,
4120    Subscriber = 1,
4121}
4122impl SignalTarget {
4123    /// String value of the enum field names used in the ProtoBuf definition.
4124    ///
4125    /// The values are not transformed in any way and thus are considered stable
4126    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4127    pub fn as_str_name(&self) -> &'static str {
4128        match self {
4129            SignalTarget::Publisher => "PUBLISHER",
4130            SignalTarget::Subscriber => "SUBSCRIBER",
4131        }
4132    }
4133    /// Creates an enum from field names used in the ProtoBuf definition.
4134    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4135        match value {
4136            "PUBLISHER" => Some(Self::Publisher),
4137            "SUBSCRIBER" => Some(Self::Subscriber),
4138            _ => None,
4139        }
4140    }
4141}
4142#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4143#[repr(i32)]
4144pub enum StreamState {
4145    Active = 0,
4146    Paused = 1,
4147}
4148impl StreamState {
4149    /// String value of the enum field names used in the ProtoBuf definition.
4150    ///
4151    /// The values are not transformed in any way and thus are considered stable
4152    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4153    pub fn as_str_name(&self) -> &'static str {
4154        match self {
4155            StreamState::Active => "ACTIVE",
4156            StreamState::Paused => "PAUSED",
4157        }
4158    }
4159    /// Creates an enum from field names used in the ProtoBuf definition.
4160    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4161        match value {
4162            "ACTIVE" => Some(Self::Active),
4163            "PAUSED" => Some(Self::Paused),
4164            _ => None,
4165        }
4166    }
4167}
4168#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4169#[repr(i32)]
4170pub enum CandidateProtocol {
4171    Udp = 0,
4172    Tcp = 1,
4173    Tls = 2,
4174}
4175impl CandidateProtocol {
4176    /// String value of the enum field names used in the ProtoBuf definition.
4177    ///
4178    /// The values are not transformed in any way and thus are considered stable
4179    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4180    pub fn as_str_name(&self) -> &'static str {
4181        match self {
4182            CandidateProtocol::Udp => "UDP",
4183            CandidateProtocol::Tcp => "TCP",
4184            CandidateProtocol::Tls => "TLS",
4185        }
4186    }
4187    /// Creates an enum from field names used in the ProtoBuf definition.
4188    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4189        match value {
4190            "UDP" => Some(Self::Udp),
4191            "TCP" => Some(Self::Tcp),
4192            "TLS" => Some(Self::Tls),
4193            _ => None,
4194        }
4195    }
4196}
4197#[allow(clippy::derive_partial_eq_without_eq)]
4198#[derive(Clone, PartialEq, ::prost::Message)]
4199pub struct Job {
4200    #[prost(string, tag="1")]
4201    pub id: ::prost::alloc::string::String,
4202    #[prost(string, tag="9")]
4203    pub dispatch_id: ::prost::alloc::string::String,
4204    #[prost(enumeration="JobType", tag="2")]
4205    pub r#type: i32,
4206    #[prost(message, optional, tag="3")]
4207    pub room: ::core::option::Option<Room>,
4208    #[prost(message, optional, tag="4")]
4209    pub participant: ::core::option::Option<ParticipantInfo>,
4210    #[deprecated]
4211    #[prost(string, tag="5")]
4212    pub namespace: ::prost::alloc::string::String,
4213    #[prost(string, tag="6")]
4214    pub metadata: ::prost::alloc::string::String,
4215    #[prost(string, tag="7")]
4216    pub agent_name: ::prost::alloc::string::String,
4217    #[prost(message, optional, tag="8")]
4218    pub state: ::core::option::Option<JobState>,
4219    #[prost(bool, tag="10")]
4220    pub enable_recording: bool,
4221}
4222#[allow(clippy::derive_partial_eq_without_eq)]
4223#[derive(Clone, PartialEq, ::prost::Message)]
4224pub struct JobState {
4225    #[prost(enumeration="JobStatus", tag="1")]
4226    pub status: i32,
4227    #[prost(string, tag="2")]
4228    pub error: ::prost::alloc::string::String,
4229    #[prost(int64, tag="3")]
4230    pub started_at: i64,
4231    #[prost(int64, tag="4")]
4232    pub ended_at: i64,
4233    #[prost(int64, tag="5")]
4234    pub updated_at: i64,
4235    #[prost(string, tag="6")]
4236    pub participant_identity: ::prost::alloc::string::String,
4237    #[prost(string, tag="7")]
4238    pub worker_id: ::prost::alloc::string::String,
4239    #[prost(string, tag="8")]
4240    pub agent_id: ::prost::alloc::string::String,
4241}
4242/// from Worker to Server
4243#[allow(clippy::derive_partial_eq_without_eq)]
4244#[derive(Clone, PartialEq, ::prost::Message)]
4245pub struct WorkerMessage {
4246    #[prost(oneof="worker_message::Message", tags="1, 2, 3, 4, 5, 6, 7, 8, 9")]
4247    pub message: ::core::option::Option<worker_message::Message>,
4248}
4249/// Nested message and enum types in `WorkerMessage`.
4250pub mod worker_message {
4251    #[allow(clippy::derive_partial_eq_without_eq)]
4252#[derive(Clone, PartialEq, ::prost::Oneof)]
4253    pub enum Message {
4254        /// agent workers need to register themselves with the server first
4255        #[prost(message, tag="1")]
4256        Register(super::RegisterWorkerRequest),
4257        /// worker confirms to server that it's available for a job, or declines it
4258        #[prost(message, tag="2")]
4259        Availability(super::AvailabilityResponse),
4260        /// worker can update its status to the server, including taking itself out of the pool
4261        #[prost(message, tag="3")]
4262        UpdateWorker(super::UpdateWorkerStatus),
4263        /// job can send status updates to the server, useful for tracking progress
4264        #[prost(message, tag="4")]
4265        UpdateJob(super::UpdateJobStatus),
4266        #[prost(message, tag="5")]
4267        Ping(super::WorkerPing),
4268        #[prost(message, tag="6")]
4269        SimulateJob(super::SimulateJobRequest),
4270        #[prost(message, tag="7")]
4271        MigrateJob(super::MigrateJobRequest),
4272        #[prost(message, tag="8")]
4273        TextResponse(super::TextMessageResponse),
4274        #[prost(message, tag="9")]
4275        PushText(super::PushTextRequest),
4276    }
4277}
4278/// from Server to Worker
4279#[allow(clippy::derive_partial_eq_without_eq)]
4280#[derive(Clone, PartialEq, ::prost::Message)]
4281pub struct ServerMessage {
4282    #[prost(oneof="server_message::Message", tags="1, 2, 3, 5, 4, 6")]
4283    pub message: ::core::option::Option<server_message::Message>,
4284}
4285/// Nested message and enum types in `ServerMessage`.
4286pub mod server_message {
4287    #[allow(clippy::derive_partial_eq_without_eq)]
4288#[derive(Clone, PartialEq, ::prost::Oneof)]
4289    pub enum Message {
4290        /// server confirms the registration, from this moment on, the worker is considered active
4291        #[prost(message, tag="1")]
4292        Register(super::RegisterWorkerResponse),
4293        /// server asks worker to confirm availability for a job
4294        #[prost(message, tag="2")]
4295        Availability(super::AvailabilityRequest),
4296        #[prost(message, tag="3")]
4297        Assignment(super::JobAssignment),
4298        #[prost(message, tag="5")]
4299        Termination(super::JobTermination),
4300        #[prost(message, tag="4")]
4301        Pong(super::WorkerPong),
4302        #[prost(message, tag="6")]
4303        TextRequest(super::TextMessageRequest),
4304    }
4305}
4306#[allow(clippy::derive_partial_eq_without_eq)]
4307#[derive(Clone, PartialEq, ::prost::Message)]
4308pub struct SimulateJobRequest {
4309    #[prost(enumeration="JobType", tag="1")]
4310    pub r#type: i32,
4311    #[prost(message, optional, tag="2")]
4312    pub room: ::core::option::Option<Room>,
4313    #[prost(message, optional, tag="3")]
4314    pub participant: ::core::option::Option<ParticipantInfo>,
4315}
4316#[allow(clippy::derive_partial_eq_without_eq)]
4317#[derive(Clone, PartialEq, ::prost::Message)]
4318pub struct WorkerPing {
4319    #[prost(int64, tag="1")]
4320    pub timestamp: i64,
4321}
4322#[allow(clippy::derive_partial_eq_without_eq)]
4323#[derive(Clone, PartialEq, ::prost::Message)]
4324pub struct WorkerPong {
4325    #[prost(int64, tag="1")]
4326    pub last_timestamp: i64,
4327    #[prost(int64, tag="2")]
4328    pub timestamp: i64,
4329}
4330#[allow(clippy::derive_partial_eq_without_eq)]
4331#[derive(Clone, PartialEq, ::prost::Message)]
4332pub struct RegisterWorkerRequest {
4333    #[prost(enumeration="JobType", tag="1")]
4334    pub r#type: i32,
4335    #[prost(string, tag="8")]
4336    pub agent_name: ::prost::alloc::string::String,
4337    /// string worker_id = 2;
4338    #[prost(string, tag="3")]
4339    pub version: ::prost::alloc::string::String,
4340    /// string name = 4 \[deprecated = true\];
4341    #[prost(uint32, tag="5")]
4342    pub ping_interval: u32,
4343    #[prost(string, optional, tag="6")]
4344    pub namespace: ::core::option::Option<::prost::alloc::string::String>,
4345    #[prost(message, optional, tag="7")]
4346    pub allowed_permissions: ::core::option::Option<ParticipantPermission>,
4347}
4348#[allow(clippy::derive_partial_eq_without_eq)]
4349#[derive(Clone, PartialEq, ::prost::Message)]
4350pub struct RegisterWorkerResponse {
4351    #[prost(string, tag="1")]
4352    pub worker_id: ::prost::alloc::string::String,
4353    #[prost(message, optional, tag="3")]
4354    pub server_info: ::core::option::Option<ServerInfo>,
4355}
4356#[allow(clippy::derive_partial_eq_without_eq)]
4357#[derive(Clone, PartialEq, ::prost::Message)]
4358pub struct MigrateJobRequest {
4359    /// string job_id = 1 \[deprecated = true\];
4360    #[prost(string, repeated, tag="2")]
4361    pub job_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4362}
4363#[allow(clippy::derive_partial_eq_without_eq)]
4364#[derive(Clone, PartialEq, ::prost::Message)]
4365pub struct AvailabilityRequest {
4366    #[prost(message, optional, tag="1")]
4367    pub job: ::core::option::Option<Job>,
4368    /// True when the job was previously assigned to another worker but has been
4369    /// migrated due to different reasons (e.g. worker failure, job migration)
4370    #[prost(bool, tag="2")]
4371    pub resuming: bool,
4372}
4373#[allow(clippy::derive_partial_eq_without_eq)]
4374#[derive(Clone, PartialEq, ::prost::Message)]
4375pub struct AvailabilityResponse {
4376    #[prost(string, tag="1")]
4377    pub job_id: ::prost::alloc::string::String,
4378    #[prost(bool, tag="2")]
4379    pub available: bool,
4380    #[prost(bool, tag="3")]
4381    pub supports_resume: bool,
4382    #[prost(bool, tag="8")]
4383    pub terminate: bool,
4384    #[prost(string, tag="4")]
4385    pub participant_name: ::prost::alloc::string::String,
4386    #[prost(string, tag="5")]
4387    pub participant_identity: ::prost::alloc::string::String,
4388    #[prost(string, tag="6")]
4389    pub participant_metadata: ::prost::alloc::string::String,
4390    /// NEXT_ID: 9
4391    #[prost(map="string, string", tag="7")]
4392    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4393}
4394#[allow(clippy::derive_partial_eq_without_eq)]
4395#[derive(Clone, PartialEq, ::prost::Message)]
4396pub struct UpdateJobStatus {
4397    #[prost(string, tag="1")]
4398    pub job_id: ::prost::alloc::string::String,
4399    /// The worker can indicate the job end by either specifying SUCCESS or FAILED
4400    #[prost(enumeration="JobStatus", tag="2")]
4401    pub status: i32,
4402    /// metadata shown on the dashboard, useful for debugging
4403    #[prost(string, tag="3")]
4404    pub error: ::prost::alloc::string::String,
4405}
4406#[allow(clippy::derive_partial_eq_without_eq)]
4407#[derive(Clone, PartialEq, ::prost::Message)]
4408pub struct UpdateWorkerStatus {
4409    #[prost(enumeration="WorkerStatus", optional, tag="1")]
4410    pub status: ::core::option::Option<i32>,
4411    /// optional string metadata = 2 \[deprecated=true\];
4412    #[prost(float, tag="3")]
4413    pub load: f32,
4414    #[prost(uint32, tag="4")]
4415    pub job_count: u32,
4416}
4417#[allow(clippy::derive_partial_eq_without_eq)]
4418#[derive(Clone, PartialEq, ::prost::Message)]
4419pub struct JobAssignment {
4420    #[prost(message, optional, tag="1")]
4421    pub job: ::core::option::Option<Job>,
4422    #[prost(string, optional, tag="2")]
4423    pub url: ::core::option::Option<::prost::alloc::string::String>,
4424    #[prost(string, tag="3")]
4425    pub token: ::prost::alloc::string::String,
4426}
4427#[allow(clippy::derive_partial_eq_without_eq)]
4428#[derive(Clone, PartialEq, ::prost::Message)]
4429pub struct JobTermination {
4430    #[prost(string, tag="1")]
4431    pub job_id: ::prost::alloc::string::String,
4432}
4433#[allow(clippy::derive_partial_eq_without_eq)]
4434#[derive(Clone, PartialEq, ::prost::Message)]
4435pub struct AgentSessionState {
4436    #[prost(uint64, tag="1")]
4437    pub version: u64,
4438    #[prost(oneof="agent_session_state::Data", tags="2, 3")]
4439    pub data: ::core::option::Option<agent_session_state::Data>,
4440}
4441/// Nested message and enum types in `AgentSessionState`.
4442pub mod agent_session_state {
4443    #[allow(clippy::derive_partial_eq_without_eq)]
4444#[derive(Clone, PartialEq, ::prost::Oneof)]
4445    pub enum Data {
4446        #[prost(bytes, tag="2")]
4447        Snapshot(::prost::alloc::vec::Vec<u8>),
4448        #[prost(bytes, tag="3")]
4449        Delta(::prost::alloc::vec::Vec<u8>),
4450    }
4451}
4452#[allow(clippy::derive_partial_eq_without_eq)]
4453#[derive(Clone, PartialEq, ::prost::Message)]
4454pub struct TextMessageRequest {
4455    #[prost(string, tag="1")]
4456    pub message_id: ::prost::alloc::string::String,
4457    #[prost(string, tag="2")]
4458    pub session_id: ::prost::alloc::string::String,
4459    #[prost(string, tag="3")]
4460    pub agent_name: ::prost::alloc::string::String,
4461    #[prost(string, tag="4")]
4462    pub metadata: ::prost::alloc::string::String,
4463    #[prost(message, optional, tag="5")]
4464    pub session_state: ::core::option::Option<AgentSessionState>,
4465    #[prost(string, tag="6")]
4466    pub text: ::prost::alloc::string::String,
4467}
4468#[allow(clippy::derive_partial_eq_without_eq)]
4469#[derive(Clone, PartialEq, ::prost::Message)]
4470pub struct PushTextRequest {
4471    /// The message_id of the TextMessageRequest that this push is for
4472    #[prost(string, tag="1")]
4473    pub message_id: ::prost::alloc::string::String,
4474    #[prost(string, tag="2")]
4475    pub content: ::prost::alloc::string::String,
4476}
4477#[allow(clippy::derive_partial_eq_without_eq)]
4478#[derive(Clone, PartialEq, ::prost::Message)]
4479pub struct TextMessageResponse {
4480    /// Indicate the request is completed
4481    #[prost(string, tag="1")]
4482    pub message_id: ::prost::alloc::string::String,
4483    #[prost(message, optional, tag="2")]
4484    pub session_state: ::core::option::Option<AgentSessionState>,
4485    #[prost(string, tag="3")]
4486    pub error: ::prost::alloc::string::String,
4487}
4488#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4489#[repr(i32)]
4490pub enum JobType {
4491    JtRoom = 0,
4492    JtPublisher = 1,
4493    JtParticipant = 2,
4494}
4495impl JobType {
4496    /// String value of the enum field names used in the ProtoBuf definition.
4497    ///
4498    /// The values are not transformed in any way and thus are considered stable
4499    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4500    pub fn as_str_name(&self) -> &'static str {
4501        match self {
4502            JobType::JtRoom => "JT_ROOM",
4503            JobType::JtPublisher => "JT_PUBLISHER",
4504            JobType::JtParticipant => "JT_PARTICIPANT",
4505        }
4506    }
4507    /// Creates an enum from field names used in the ProtoBuf definition.
4508    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4509        match value {
4510            "JT_ROOM" => Some(Self::JtRoom),
4511            "JT_PUBLISHER" => Some(Self::JtPublisher),
4512            "JT_PARTICIPANT" => Some(Self::JtParticipant),
4513            _ => None,
4514        }
4515    }
4516}
4517#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4518#[repr(i32)]
4519pub enum WorkerStatus {
4520    WsAvailable = 0,
4521    WsFull = 1,
4522}
4523impl WorkerStatus {
4524    /// String value of the enum field names used in the ProtoBuf definition.
4525    ///
4526    /// The values are not transformed in any way and thus are considered stable
4527    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4528    pub fn as_str_name(&self) -> &'static str {
4529        match self {
4530            WorkerStatus::WsAvailable => "WS_AVAILABLE",
4531            WorkerStatus::WsFull => "WS_FULL",
4532        }
4533    }
4534    /// Creates an enum from field names used in the ProtoBuf definition.
4535    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4536        match value {
4537            "WS_AVAILABLE" => Some(Self::WsAvailable),
4538            "WS_FULL" => Some(Self::WsFull),
4539            _ => None,
4540        }
4541    }
4542}
4543#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4544#[repr(i32)]
4545pub enum JobStatus {
4546    JsPending = 0,
4547    JsRunning = 1,
4548    JsSuccess = 2,
4549    JsFailed = 3,
4550}
4551impl JobStatus {
4552    /// String value of the enum field names used in the ProtoBuf definition.
4553    ///
4554    /// The values are not transformed in any way and thus are considered stable
4555    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4556    pub fn as_str_name(&self) -> &'static str {
4557        match self {
4558            JobStatus::JsPending => "JS_PENDING",
4559            JobStatus::JsRunning => "JS_RUNNING",
4560            JobStatus::JsSuccess => "JS_SUCCESS",
4561            JobStatus::JsFailed => "JS_FAILED",
4562        }
4563    }
4564    /// Creates an enum from field names used in the ProtoBuf definition.
4565    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4566        match value {
4567            "JS_PENDING" => Some(Self::JsPending),
4568            "JS_RUNNING" => Some(Self::JsRunning),
4569            "JS_SUCCESS" => Some(Self::JsSuccess),
4570            "JS_FAILED" => Some(Self::JsFailed),
4571            _ => None,
4572        }
4573    }
4574}
4575#[allow(clippy::derive_partial_eq_without_eq)]
4576#[derive(Clone, PartialEq, ::prost::Message)]
4577pub struct CreateAgentDispatchRequest {
4578    #[prost(string, tag="1")]
4579    pub agent_name: ::prost::alloc::string::String,
4580    #[prost(string, tag="2")]
4581    pub room: ::prost::alloc::string::String,
4582    #[prost(string, tag="3")]
4583    pub metadata: ::prost::alloc::string::String,
4584}
4585#[allow(clippy::derive_partial_eq_without_eq)]
4586#[derive(Clone, PartialEq, ::prost::Message)]
4587pub struct RoomAgentDispatch {
4588    #[prost(string, tag="1")]
4589    pub agent_name: ::prost::alloc::string::String,
4590    #[prost(string, tag="2")]
4591    pub metadata: ::prost::alloc::string::String,
4592}
4593#[allow(clippy::derive_partial_eq_without_eq)]
4594#[derive(Clone, PartialEq, ::prost::Message)]
4595pub struct DeleteAgentDispatchRequest {
4596    #[prost(string, tag="1")]
4597    pub dispatch_id: ::prost::alloc::string::String,
4598    #[prost(string, tag="2")]
4599    pub room: ::prost::alloc::string::String,
4600}
4601#[allow(clippy::derive_partial_eq_without_eq)]
4602#[derive(Clone, PartialEq, ::prost::Message)]
4603pub struct ListAgentDispatchRequest {
4604    /// if set, only the dispatch whose id is given will be returned
4605    #[prost(string, tag="1")]
4606    pub dispatch_id: ::prost::alloc::string::String,
4607    /// name of the room to list agents for. Must be set.
4608    #[prost(string, tag="2")]
4609    pub room: ::prost::alloc::string::String,
4610}
4611#[allow(clippy::derive_partial_eq_without_eq)]
4612#[derive(Clone, PartialEq, ::prost::Message)]
4613pub struct ListAgentDispatchResponse {
4614    #[prost(message, repeated, tag="1")]
4615    pub agent_dispatches: ::prost::alloc::vec::Vec<AgentDispatch>,
4616}
4617#[allow(clippy::derive_partial_eq_without_eq)]
4618#[derive(Clone, PartialEq, ::prost::Message)]
4619pub struct AgentDispatch {
4620    #[prost(string, tag="1")]
4621    pub id: ::prost::alloc::string::String,
4622    #[prost(string, tag="2")]
4623    pub agent_name: ::prost::alloc::string::String,
4624    #[prost(string, tag="3")]
4625    pub room: ::prost::alloc::string::String,
4626    #[prost(string, tag="4")]
4627    pub metadata: ::prost::alloc::string::String,
4628    #[prost(message, optional, tag="5")]
4629    pub state: ::core::option::Option<AgentDispatchState>,
4630}
4631#[allow(clippy::derive_partial_eq_without_eq)]
4632#[derive(Clone, PartialEq, ::prost::Message)]
4633pub struct AgentDispatchState {
4634    /// For dispatches of tyoe JT_ROOM, there will be at most 1 job.
4635    /// For dispatches of type JT_PUBLISHER, there will be 1 per publisher.
4636    #[prost(message, repeated, tag="1")]
4637    pub jobs: ::prost::alloc::vec::Vec<Job>,
4638    #[prost(int64, tag="2")]
4639    pub created_at: i64,
4640    #[prost(int64, tag="3")]
4641    pub deleted_at: i64,
4642}
4643#[allow(clippy::derive_partial_eq_without_eq)]
4644#[derive(Clone, PartialEq, ::prost::Message)]
4645pub struct CreateRoomRequest {
4646    /// name of the room
4647    #[prost(string, tag="1")]
4648    pub name: ::prost::alloc::string::String,
4649    /// configuration to use for this room parameters. Setting parameters below override the config defaults.
4650    #[prost(string, tag="12")]
4651    pub room_preset: ::prost::alloc::string::String,
4652    /// number of seconds to keep the room open if no one joins
4653    #[prost(uint32, tag="2")]
4654    pub empty_timeout: u32,
4655    /// number of seconds to keep the room open after everyone leaves
4656    #[prost(uint32, tag="10")]
4657    pub departure_timeout: u32,
4658    /// limit number of participants that can be in a room
4659    #[prost(uint32, tag="3")]
4660    pub max_participants: u32,
4661    /// override the node room is allocated to, for debugging
4662    #[prost(string, tag="4")]
4663    pub node_id: ::prost::alloc::string::String,
4664    /// metadata of room
4665    #[prost(string, tag="5")]
4666    pub metadata: ::prost::alloc::string::String,
4667    /// auto-egress configurations
4668    #[prost(message, optional, tag="6")]
4669    pub egress: ::core::option::Option<RoomEgress>,
4670    /// playout delay of subscriber
4671    #[prost(uint32, tag="7")]
4672    pub min_playout_delay: u32,
4673    #[prost(uint32, tag="8")]
4674    pub max_playout_delay: u32,
4675    /// improves A/V sync when playout_delay set to a value larger than 200ms. It will disables transceiver re-use
4676    /// so not recommended for rooms with frequent subscription changes
4677    #[prost(bool, tag="9")]
4678    pub sync_streams: bool,
4679    /// replay
4680    #[prost(bool, tag="13")]
4681    pub replay_enabled: bool,
4682    /// Define agents that should be dispatched to this room
4683    ///
4684    /// NEXT-ID: 15
4685    #[prost(message, repeated, tag="14")]
4686    pub agents: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
4687}
4688#[allow(clippy::derive_partial_eq_without_eq)]
4689#[derive(Clone, PartialEq, ::prost::Message)]
4690pub struct RoomEgress {
4691    #[prost(message, optional, tag="1")]
4692    pub room: ::core::option::Option<RoomCompositeEgressRequest>,
4693    #[prost(message, optional, tag="3")]
4694    pub participant: ::core::option::Option<AutoParticipantEgress>,
4695    #[prost(message, optional, tag="2")]
4696    pub tracks: ::core::option::Option<AutoTrackEgress>,
4697}
4698#[allow(clippy::derive_partial_eq_without_eq)]
4699#[derive(Clone, PartialEq, ::prost::Message)]
4700pub struct RoomAgent {
4701    #[prost(message, repeated, tag="1")]
4702    pub dispatches: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
4703}
4704#[allow(clippy::derive_partial_eq_without_eq)]
4705#[derive(Clone, PartialEq, ::prost::Message)]
4706pub struct ListRoomsRequest {
4707    /// when set, will only return rooms with name match
4708    #[prost(string, repeated, tag="1")]
4709    pub names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4710}
4711#[allow(clippy::derive_partial_eq_without_eq)]
4712#[derive(Clone, PartialEq, ::prost::Message)]
4713pub struct ListRoomsResponse {
4714    #[prost(message, repeated, tag="1")]
4715    pub rooms: ::prost::alloc::vec::Vec<Room>,
4716}
4717#[allow(clippy::derive_partial_eq_without_eq)]
4718#[derive(Clone, PartialEq, ::prost::Message)]
4719pub struct DeleteRoomRequest {
4720    /// name of the room
4721    #[prost(string, tag="1")]
4722    pub room: ::prost::alloc::string::String,
4723}
4724#[allow(clippy::derive_partial_eq_without_eq)]
4725#[derive(Clone, PartialEq, ::prost::Message)]
4726pub struct DeleteRoomResponse {
4727}
4728#[allow(clippy::derive_partial_eq_without_eq)]
4729#[derive(Clone, PartialEq, ::prost::Message)]
4730pub struct ListParticipantsRequest {
4731    /// name of the room
4732    #[prost(string, tag="1")]
4733    pub room: ::prost::alloc::string::String,
4734}
4735#[allow(clippy::derive_partial_eq_without_eq)]
4736#[derive(Clone, PartialEq, ::prost::Message)]
4737pub struct ListParticipantsResponse {
4738    #[prost(message, repeated, tag="1")]
4739    pub participants: ::prost::alloc::vec::Vec<ParticipantInfo>,
4740}
4741#[allow(clippy::derive_partial_eq_without_eq)]
4742#[derive(Clone, PartialEq, ::prost::Message)]
4743pub struct RoomParticipantIdentity {
4744    /// name of the room
4745    #[prost(string, tag="1")]
4746    pub room: ::prost::alloc::string::String,
4747    /// identity of the participant
4748    #[prost(string, tag="2")]
4749    pub identity: ::prost::alloc::string::String,
4750}
4751#[allow(clippy::derive_partial_eq_without_eq)]
4752#[derive(Clone, PartialEq, ::prost::Message)]
4753pub struct RemoveParticipantResponse {
4754}
4755#[allow(clippy::derive_partial_eq_without_eq)]
4756#[derive(Clone, PartialEq, ::prost::Message)]
4757pub struct MuteRoomTrackRequest {
4758    /// name of the room
4759    #[prost(string, tag="1")]
4760    pub room: ::prost::alloc::string::String,
4761    #[prost(string, tag="2")]
4762    pub identity: ::prost::alloc::string::String,
4763    /// sid of the track to mute
4764    #[prost(string, tag="3")]
4765    pub track_sid: ::prost::alloc::string::String,
4766    /// set to true to mute, false to unmute
4767    #[prost(bool, tag="4")]
4768    pub muted: bool,
4769}
4770#[allow(clippy::derive_partial_eq_without_eq)]
4771#[derive(Clone, PartialEq, ::prost::Message)]
4772pub struct MuteRoomTrackResponse {
4773    #[prost(message, optional, tag="1")]
4774    pub track: ::core::option::Option<TrackInfo>,
4775}
4776#[allow(clippy::derive_partial_eq_without_eq)]
4777#[derive(Clone, PartialEq, ::prost::Message)]
4778pub struct UpdateParticipantRequest {
4779    #[prost(string, tag="1")]
4780    pub room: ::prost::alloc::string::String,
4781    #[prost(string, tag="2")]
4782    pub identity: ::prost::alloc::string::String,
4783    /// metadata to update. skipping updates if left empty
4784    #[prost(string, tag="3")]
4785    pub metadata: ::prost::alloc::string::String,
4786    /// set to update the participant's permissions
4787    #[prost(message, optional, tag="4")]
4788    pub permission: ::core::option::Option<ParticipantPermission>,
4789    /// display name to update
4790    #[prost(string, tag="5")]
4791    pub name: ::prost::alloc::string::String,
4792    /// attributes to update. it only updates attributes that have been set
4793    /// to delete attributes, set the value to an empty string
4794    #[prost(map="string, string", tag="6")]
4795    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4796}
4797#[allow(clippy::derive_partial_eq_without_eq)]
4798#[derive(Clone, PartialEq, ::prost::Message)]
4799pub struct UpdateSubscriptionsRequest {
4800    #[prost(string, tag="1")]
4801    pub room: ::prost::alloc::string::String,
4802    #[prost(string, tag="2")]
4803    pub identity: ::prost::alloc::string::String,
4804    /// list of sids of tracks
4805    #[prost(string, repeated, tag="3")]
4806    pub track_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4807    /// set to true to subscribe, false to unsubscribe from tracks
4808    #[prost(bool, tag="4")]
4809    pub subscribe: bool,
4810    /// list of participants and their tracks
4811    #[prost(message, repeated, tag="5")]
4812    pub participant_tracks: ::prost::alloc::vec::Vec<ParticipantTracks>,
4813}
4814/// empty for now
4815#[allow(clippy::derive_partial_eq_without_eq)]
4816#[derive(Clone, PartialEq, ::prost::Message)]
4817pub struct UpdateSubscriptionsResponse {
4818}
4819#[allow(clippy::derive_partial_eq_without_eq)]
4820#[derive(Clone, PartialEq, ::prost::Message)]
4821pub struct SendDataRequest {
4822    #[prost(string, tag="1")]
4823    pub room: ::prost::alloc::string::String,
4824    #[prost(bytes="vec", tag="2")]
4825    pub data: ::prost::alloc::vec::Vec<u8>,
4826    #[prost(enumeration="data_packet::Kind", tag="3")]
4827    pub kind: i32,
4828    /// mark deprecated
4829    #[deprecated]
4830    #[prost(string, repeated, tag="4")]
4831    pub destination_sids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4832    /// when set, only forward to these identities
4833    #[prost(string, repeated, tag="6")]
4834    pub destination_identities: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4835    #[prost(string, optional, tag="5")]
4836    pub topic: ::core::option::Option<::prost::alloc::string::String>,
4837    /// added by SDK to enable de-duping of messages, for INTERNAL USE ONLY
4838    #[prost(bytes="vec", tag="7")]
4839    pub nonce: ::prost::alloc::vec::Vec<u8>,
4840}
4841///
4842#[allow(clippy::derive_partial_eq_without_eq)]
4843#[derive(Clone, PartialEq, ::prost::Message)]
4844pub struct SendDataResponse {
4845}
4846#[allow(clippy::derive_partial_eq_without_eq)]
4847#[derive(Clone, PartialEq, ::prost::Message)]
4848pub struct UpdateRoomMetadataRequest {
4849    #[prost(string, tag="1")]
4850    pub room: ::prost::alloc::string::String,
4851    /// metadata to update. skipping updates if left empty
4852    #[prost(string, tag="2")]
4853    pub metadata: ::prost::alloc::string::String,
4854}
4855#[allow(clippy::derive_partial_eq_without_eq)]
4856#[derive(Clone, PartialEq, ::prost::Message)]
4857pub struct RoomConfiguration {
4858    /// Used as ID, must be unique
4859    #[prost(string, tag="1")]
4860    pub name: ::prost::alloc::string::String,
4861    /// number of seconds to keep the room open if no one joins
4862    #[prost(uint32, tag="2")]
4863    pub empty_timeout: u32,
4864    /// number of seconds to keep the room open after everyone leaves
4865    #[prost(uint32, tag="3")]
4866    pub departure_timeout: u32,
4867    /// limit number of participants that can be in a room, excluding Egress and Ingress participants
4868    #[prost(uint32, tag="4")]
4869    pub max_participants: u32,
4870    /// metadata of room
4871    #[prost(string, tag="11")]
4872    pub metadata: ::prost::alloc::string::String,
4873    /// egress
4874    #[prost(message, optional, tag="5")]
4875    pub egress: ::core::option::Option<RoomEgress>,
4876    /// playout delay of subscriber
4877    #[prost(uint32, tag="7")]
4878    pub min_playout_delay: u32,
4879    #[prost(uint32, tag="8")]
4880    pub max_playout_delay: u32,
4881    /// improves A/V sync when playout_delay set to a value larger than 200ms. It will disables transceiver re-use
4882    /// so not recommended for rooms with frequent subscription changes
4883    #[prost(bool, tag="9")]
4884    pub sync_streams: bool,
4885    /// Define agents that should be dispatched to this room
4886    #[prost(message, repeated, tag="10")]
4887    pub agents: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
4888}
4889#[allow(clippy::derive_partial_eq_without_eq)]
4890#[derive(Clone, PartialEq, ::prost::Message)]
4891pub struct ForwardParticipantRequest {
4892    /// room to forward participant from
4893    #[prost(string, tag="1")]
4894    pub room: ::prost::alloc::string::String,
4895    /// identity of the participant to forward
4896    #[prost(string, tag="2")]
4897    pub identity: ::prost::alloc::string::String,
4898    /// room to forward participant to
4899    #[prost(string, tag="3")]
4900    pub destination_room: ::prost::alloc::string::String,
4901}
4902#[allow(clippy::derive_partial_eq_without_eq)]
4903#[derive(Clone, PartialEq, ::prost::Message)]
4904pub struct ForwardParticipantResponse {
4905}
4906#[allow(clippy::derive_partial_eq_without_eq)]
4907#[derive(Clone, PartialEq, ::prost::Message)]
4908pub struct MoveParticipantRequest {
4909    /// room to move participant from
4910    #[prost(string, tag="1")]
4911    pub room: ::prost::alloc::string::String,
4912    /// identity of the participant to move to
4913    #[prost(string, tag="2")]
4914    pub identity: ::prost::alloc::string::String,
4915    /// room to move participant to
4916    #[prost(string, tag="3")]
4917    pub destination_room: ::prost::alloc::string::String,
4918}
4919#[allow(clippy::derive_partial_eq_without_eq)]
4920#[derive(Clone, PartialEq, ::prost::Message)]
4921pub struct MoveParticipantResponse {
4922}
4923#[allow(clippy::derive_partial_eq_without_eq)]
4924#[derive(Clone, PartialEq, ::prost::Message)]
4925pub struct PerformRpcRequest {
4926    #[prost(string, tag="1")]
4927    pub room: ::prost::alloc::string::String,
4928    #[prost(string, tag="2")]
4929    pub destination_identity: ::prost::alloc::string::String,
4930    #[prost(string, tag="3")]
4931    pub method: ::prost::alloc::string::String,
4932    #[prost(string, tag="4")]
4933    pub payload: ::prost::alloc::string::String,
4934    #[prost(uint32, tag="5")]
4935    pub response_timeout_ms: u32,
4936}
4937#[allow(clippy::derive_partial_eq_without_eq)]
4938#[derive(Clone, PartialEq, ::prost::Message)]
4939pub struct PerformRpcResponse {
4940    #[prost(string, tag="1")]
4941    pub payload: ::prost::alloc::string::String,
4942}
4943#[allow(clippy::derive_partial_eq_without_eq)]
4944#[derive(Clone, PartialEq, ::prost::Message)]
4945pub struct CreateIngressRequest {
4946    #[prost(enumeration="IngressInput", tag="1")]
4947    pub input_type: i32,
4948    /// Where to pull media from, only for URL input type
4949    #[prost(string, tag="9")]
4950    pub url: ::prost::alloc::string::String,
4951    /// User provided identifier for the ingress
4952    #[prost(string, tag="2")]
4953    pub name: ::prost::alloc::string::String,
4954    /// room to publish to
4955    #[prost(string, tag="3")]
4956    pub room_name: ::prost::alloc::string::String,
4957    /// publish as participant
4958    #[prost(string, tag="4")]
4959    pub participant_identity: ::prost::alloc::string::String,
4960    /// name of publishing participant (used for display only)
4961    #[prost(string, tag="5")]
4962    pub participant_name: ::prost::alloc::string::String,
4963    /// metadata associated with the publishing participant
4964    #[prost(string, tag="10")]
4965    pub participant_metadata: ::prost::alloc::string::String,
4966    /// \[depreacted \] whether to pass through the incoming media without transcoding, only compatible with some input types. Use `enable_transcoding` instead.
4967    #[deprecated]
4968    #[prost(bool, tag="8")]
4969    pub bypass_transcoding: bool,
4970    /// Whether to transcode the ingested media. Only WHIP supports disabling transcoding currently. WHIP will default to transcoding disabled. Replaces `bypass_transcoding. 
4971    #[prost(bool, optional, tag="11")]
4972    pub enable_transcoding: ::core::option::Option<bool>,
4973    #[prost(message, optional, tag="6")]
4974    pub audio: ::core::option::Option<IngressAudioOptions>,
4975    #[prost(message, optional, tag="7")]
4976    pub video: ::core::option::Option<IngressVideoOptions>,
4977    /// The default value is true and when set to false, the new connection attempts will be rejected
4978    #[prost(bool, optional, tag="12")]
4979    pub enabled: ::core::option::Option<bool>,
4980}
4981#[allow(clippy::derive_partial_eq_without_eq)]
4982#[derive(Clone, PartialEq, ::prost::Message)]
4983pub struct IngressAudioOptions {
4984    #[prost(string, tag="1")]
4985    pub name: ::prost::alloc::string::String,
4986    #[prost(enumeration="TrackSource", tag="2")]
4987    pub source: i32,
4988    #[prost(oneof="ingress_audio_options::EncodingOptions", tags="3, 4")]
4989    pub encoding_options: ::core::option::Option<ingress_audio_options::EncodingOptions>,
4990}
4991/// Nested message and enum types in `IngressAudioOptions`.
4992pub mod ingress_audio_options {
4993    #[allow(clippy::derive_partial_eq_without_eq)]
4994#[derive(Clone, PartialEq, ::prost::Oneof)]
4995    pub enum EncodingOptions {
4996        #[prost(enumeration="super::IngressAudioEncodingPreset", tag="3")]
4997        Preset(i32),
4998        #[prost(message, tag="4")]
4999        Options(super::IngressAudioEncodingOptions),
5000    }
5001}
5002#[allow(clippy::derive_partial_eq_without_eq)]
5003#[derive(Clone, PartialEq, ::prost::Message)]
5004pub struct IngressVideoOptions {
5005    #[prost(string, tag="1")]
5006    pub name: ::prost::alloc::string::String,
5007    #[prost(enumeration="TrackSource", tag="2")]
5008    pub source: i32,
5009    #[prost(oneof="ingress_video_options::EncodingOptions", tags="3, 4")]
5010    pub encoding_options: ::core::option::Option<ingress_video_options::EncodingOptions>,
5011}
5012/// Nested message and enum types in `IngressVideoOptions`.
5013pub mod ingress_video_options {
5014    #[allow(clippy::derive_partial_eq_without_eq)]
5015#[derive(Clone, PartialEq, ::prost::Oneof)]
5016    pub enum EncodingOptions {
5017        #[prost(enumeration="super::IngressVideoEncodingPreset", tag="3")]
5018        Preset(i32),
5019        #[prost(message, tag="4")]
5020        Options(super::IngressVideoEncodingOptions),
5021    }
5022}
5023#[allow(clippy::derive_partial_eq_without_eq)]
5024#[derive(Clone, PartialEq, ::prost::Message)]
5025pub struct IngressAudioEncodingOptions {
5026    /// desired audio codec to publish to room
5027    #[prost(enumeration="AudioCodec", tag="1")]
5028    pub audio_codec: i32,
5029    #[prost(uint32, tag="2")]
5030    pub bitrate: u32,
5031    #[prost(bool, tag="3")]
5032    pub disable_dtx: bool,
5033    #[prost(uint32, tag="4")]
5034    pub channels: u32,
5035}
5036#[allow(clippy::derive_partial_eq_without_eq)]
5037#[derive(Clone, PartialEq, ::prost::Message)]
5038pub struct IngressVideoEncodingOptions {
5039    /// desired codec to publish to room
5040    #[prost(enumeration="VideoCodec", tag="1")]
5041    pub video_codec: i32,
5042    #[prost(double, tag="2")]
5043    pub frame_rate: f64,
5044    /// simulcast layers to publish, when empty, should usually be set to layers at 1/2 and 1/4 of the dimensions
5045    #[prost(message, repeated, tag="3")]
5046    pub layers: ::prost::alloc::vec::Vec<VideoLayer>,
5047}
5048#[allow(clippy::derive_partial_eq_without_eq)]
5049#[derive(Clone, PartialEq, ::prost::Message)]
5050pub struct IngressInfo {
5051    #[prost(string, tag="1")]
5052    pub ingress_id: ::prost::alloc::string::String,
5053    #[prost(string, tag="2")]
5054    pub name: ::prost::alloc::string::String,
5055    #[prost(string, tag="3")]
5056    pub stream_key: ::prost::alloc::string::String,
5057    /// URL to point the encoder to for push (RTMP, WHIP), or location to pull media from for pull (URL)
5058    #[prost(string, tag="4")]
5059    pub url: ::prost::alloc::string::String,
5060    /// for RTMP input, it'll be a rtmp:// URL
5061    /// for FILE input, it'll be a http:// URL
5062    /// for SRT input, it'll be a srt:// URL
5063    #[prost(enumeration="IngressInput", tag="5")]
5064    pub input_type: i32,
5065    #[deprecated]
5066    #[prost(bool, tag="13")]
5067    pub bypass_transcoding: bool,
5068    #[prost(bool, optional, tag="15")]
5069    pub enable_transcoding: ::core::option::Option<bool>,
5070    #[prost(message, optional, tag="6")]
5071    pub audio: ::core::option::Option<IngressAudioOptions>,
5072    #[prost(message, optional, tag="7")]
5073    pub video: ::core::option::Option<IngressVideoOptions>,
5074    #[prost(string, tag="8")]
5075    pub room_name: ::prost::alloc::string::String,
5076    #[prost(string, tag="9")]
5077    pub participant_identity: ::prost::alloc::string::String,
5078    #[prost(string, tag="10")]
5079    pub participant_name: ::prost::alloc::string::String,
5080    #[prost(string, tag="14")]
5081    pub participant_metadata: ::prost::alloc::string::String,
5082    #[prost(bool, tag="11")]
5083    pub reusable: bool,
5084    /// Description of error/stream non compliance and debug info for publisher otherwise (received bitrate, resolution, bandwidth)
5085    #[prost(message, optional, tag="12")]
5086    pub state: ::core::option::Option<IngressState>,
5087    /// The default value is true and when set to false, the new connection attempts will be rejected
5088    #[prost(bool, optional, tag="16")]
5089    pub enabled: ::core::option::Option<bool>,
5090}
5091#[allow(clippy::derive_partial_eq_without_eq)]
5092#[derive(Clone, PartialEq, ::prost::Message)]
5093pub struct IngressState {
5094    #[prost(enumeration="ingress_state::Status", tag="1")]
5095    pub status: i32,
5096    /// Error/non compliance description if any
5097    #[prost(string, tag="2")]
5098    pub error: ::prost::alloc::string::String,
5099    #[prost(message, optional, tag="3")]
5100    pub video: ::core::option::Option<InputVideoState>,
5101    #[prost(message, optional, tag="4")]
5102    pub audio: ::core::option::Option<InputAudioState>,
5103    /// ID of the current/previous room published to
5104    #[prost(string, tag="5")]
5105    pub room_id: ::prost::alloc::string::String,
5106    #[prost(int64, tag="7")]
5107    pub started_at: i64,
5108    #[prost(int64, tag="8")]
5109    pub ended_at: i64,
5110    #[prost(int64, tag="10")]
5111    pub updated_at: i64,
5112    #[prost(string, tag="9")]
5113    pub resource_id: ::prost::alloc::string::String,
5114    #[prost(message, repeated, tag="6")]
5115    pub tracks: ::prost::alloc::vec::Vec<TrackInfo>,
5116}
5117/// Nested message and enum types in `IngressState`.
5118pub mod ingress_state {
5119    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5120    #[repr(i32)]
5121    pub enum Status {
5122        EndpointInactive = 0,
5123        EndpointBuffering = 1,
5124        EndpointPublishing = 2,
5125        EndpointError = 3,
5126        EndpointComplete = 4,
5127    }
5128    impl Status {
5129        /// String value of the enum field names used in the ProtoBuf definition.
5130        ///
5131        /// The values are not transformed in any way and thus are considered stable
5132        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5133        pub fn as_str_name(&self) -> &'static str {
5134            match self {
5135                Status::EndpointInactive => "ENDPOINT_INACTIVE",
5136                Status::EndpointBuffering => "ENDPOINT_BUFFERING",
5137                Status::EndpointPublishing => "ENDPOINT_PUBLISHING",
5138                Status::EndpointError => "ENDPOINT_ERROR",
5139                Status::EndpointComplete => "ENDPOINT_COMPLETE",
5140            }
5141        }
5142        /// Creates an enum from field names used in the ProtoBuf definition.
5143        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5144            match value {
5145                "ENDPOINT_INACTIVE" => Some(Self::EndpointInactive),
5146                "ENDPOINT_BUFFERING" => Some(Self::EndpointBuffering),
5147                "ENDPOINT_PUBLISHING" => Some(Self::EndpointPublishing),
5148                "ENDPOINT_ERROR" => Some(Self::EndpointError),
5149                "ENDPOINT_COMPLETE" => Some(Self::EndpointComplete),
5150                _ => None,
5151            }
5152        }
5153    }
5154}
5155#[allow(clippy::derive_partial_eq_without_eq)]
5156#[derive(Clone, PartialEq, ::prost::Message)]
5157pub struct InputVideoState {
5158    #[prost(string, tag="1")]
5159    pub mime_type: ::prost::alloc::string::String,
5160    #[prost(uint32, tag="2")]
5161    pub average_bitrate: u32,
5162    #[prost(uint32, tag="3")]
5163    pub width: u32,
5164    #[prost(uint32, tag="4")]
5165    pub height: u32,
5166    #[prost(double, tag="5")]
5167    pub framerate: f64,
5168}
5169#[allow(clippy::derive_partial_eq_without_eq)]
5170#[derive(Clone, PartialEq, ::prost::Message)]
5171pub struct InputAudioState {
5172    #[prost(string, tag="1")]
5173    pub mime_type: ::prost::alloc::string::String,
5174    #[prost(uint32, tag="2")]
5175    pub average_bitrate: u32,
5176    #[prost(uint32, tag="3")]
5177    pub channels: u32,
5178    #[prost(uint32, tag="4")]
5179    pub sample_rate: u32,
5180}
5181#[allow(clippy::derive_partial_eq_without_eq)]
5182#[derive(Clone, PartialEq, ::prost::Message)]
5183pub struct UpdateIngressRequest {
5184    #[prost(string, tag="1")]
5185    pub ingress_id: ::prost::alloc::string::String,
5186    #[prost(string, tag="2")]
5187    pub name: ::prost::alloc::string::String,
5188    #[prost(string, tag="3")]
5189    pub room_name: ::prost::alloc::string::String,
5190    #[prost(string, tag="4")]
5191    pub participant_identity: ::prost::alloc::string::String,
5192    #[prost(string, tag="5")]
5193    pub participant_name: ::prost::alloc::string::String,
5194    #[prost(string, tag="9")]
5195    pub participant_metadata: ::prost::alloc::string::String,
5196    #[deprecated]
5197    #[prost(bool, optional, tag="8")]
5198    pub bypass_transcoding: ::core::option::Option<bool>,
5199    #[prost(bool, optional, tag="10")]
5200    pub enable_transcoding: ::core::option::Option<bool>,
5201    #[prost(message, optional, tag="6")]
5202    pub audio: ::core::option::Option<IngressAudioOptions>,
5203    #[prost(message, optional, tag="7")]
5204    pub video: ::core::option::Option<IngressVideoOptions>,
5205    /// The default value is true and when set to false, the new connection attempts will be rejected
5206    #[prost(bool, optional, tag="11")]
5207    pub enabled: ::core::option::Option<bool>,
5208}
5209#[allow(clippy::derive_partial_eq_without_eq)]
5210#[derive(Clone, PartialEq, ::prost::Message)]
5211pub struct ListIngressRequest {
5212    #[prost(message, optional, tag="3")]
5213    pub page_token: ::core::option::Option<TokenPagination>,
5214    /// when blank, lists all ingress endpoints
5215    ///
5216    /// (optional, filter by room name)
5217    #[prost(string, tag="1")]
5218    pub room_name: ::prost::alloc::string::String,
5219    /// (optional, filter by ingress ID)
5220    #[prost(string, tag="2")]
5221    pub ingress_id: ::prost::alloc::string::String,
5222}
5223#[allow(clippy::derive_partial_eq_without_eq)]
5224#[derive(Clone, PartialEq, ::prost::Message)]
5225pub struct ListIngressResponse {
5226    #[prost(message, optional, tag="2")]
5227    pub next_page_token: ::core::option::Option<TokenPagination>,
5228    /// next field id: 3
5229    #[prost(message, repeated, tag="1")]
5230    pub items: ::prost::alloc::vec::Vec<IngressInfo>,
5231}
5232#[allow(clippy::derive_partial_eq_without_eq)]
5233#[derive(Clone, PartialEq, ::prost::Message)]
5234pub struct DeleteIngressRequest {
5235    #[prost(string, tag="1")]
5236    pub ingress_id: ::prost::alloc::string::String,
5237}
5238#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5239#[repr(i32)]
5240pub enum IngressInput {
5241    RtmpInput = 0,
5242    WhipInput = 1,
5243    /// Pull from the provided URL. Only HTTP url are supported, serving either a single media file or a HLS stream
5244    UrlInput = 2,
5245}
5246impl IngressInput {
5247    /// String value of the enum field names used in the ProtoBuf definition.
5248    ///
5249    /// The values are not transformed in any way and thus are considered stable
5250    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5251    pub fn as_str_name(&self) -> &'static str {
5252        match self {
5253            IngressInput::RtmpInput => "RTMP_INPUT",
5254            IngressInput::WhipInput => "WHIP_INPUT",
5255            IngressInput::UrlInput => "URL_INPUT",
5256        }
5257    }
5258    /// Creates an enum from field names used in the ProtoBuf definition.
5259    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5260        match value {
5261            "RTMP_INPUT" => Some(Self::RtmpInput),
5262            "WHIP_INPUT" => Some(Self::WhipInput),
5263            "URL_INPUT" => Some(Self::UrlInput),
5264            _ => None,
5265        }
5266    }
5267}
5268#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5269#[repr(i32)]
5270pub enum IngressAudioEncodingPreset {
5271    /// OPUS, 2 channels, 96kbps
5272    OpusStereo96kbps = 0,
5273    /// OPUS, 1 channel, 64kbps
5274    OpusMono64kbs = 1,
5275}
5276impl IngressAudioEncodingPreset {
5277    /// String value of the enum field names used in the ProtoBuf definition.
5278    ///
5279    /// The values are not transformed in any way and thus are considered stable
5280    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5281    pub fn as_str_name(&self) -> &'static str {
5282        match self {
5283            IngressAudioEncodingPreset::OpusStereo96kbps => "OPUS_STEREO_96KBPS",
5284            IngressAudioEncodingPreset::OpusMono64kbs => "OPUS_MONO_64KBS",
5285        }
5286    }
5287    /// Creates an enum from field names used in the ProtoBuf definition.
5288    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5289        match value {
5290            "OPUS_STEREO_96KBPS" => Some(Self::OpusStereo96kbps),
5291            "OPUS_MONO_64KBS" => Some(Self::OpusMono64kbs),
5292            _ => None,
5293        }
5294    }
5295}
5296#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5297#[repr(i32)]
5298pub enum IngressVideoEncodingPreset {
5299    /// 1280x720,  30fps, 1900kbps main layer, 3 layers total
5300    H264720p30fps3Layers = 0,
5301    /// 1980x1080, 30fps, 3500kbps main layer, 3 layers total
5302    H2641080p30fps3Layers = 1,
5303    ///   960x540,  25fps, 1000kbps  main layer, 2 layers total
5304    H264540p25fps2Layers = 2,
5305    /// 1280x720,  30fps, 1900kbps, no simulcast
5306    H264720p30fps1Layer = 3,
5307    /// 1980x1080, 30fps, 3500kbps, no simulcast
5308    H2641080p30fps1Layer = 4,
5309    /// 1280x720,  30fps, 2500kbps main layer, 3 layers total, higher bitrate for high motion, harder to encode content
5310    H264720p30fps3LayersHighMotion = 5,
5311    /// 1980x1080, 30fps, 4500kbps main layer, 3 layers total, higher bitrate for high motion, harder to encode content
5312    H2641080p30fps3LayersHighMotion = 6,
5313    ///   960x540,  25fps, 1300kbps  main layer, 2 layers total, higher bitrate for high motion, harder to encode content
5314    H264540p25fps2LayersHighMotion = 7,
5315    /// 1280x720,  30fps, 2500kbps, no simulcast, higher bitrate for high motion, harder to encode content
5316    H264720p30fps1LayerHighMotion = 8,
5317    /// 1980x1080, 30fps, 4500kbps, no simulcast, higher bitrate for high motion, harder to encode content
5318    H2641080p30fps1LayerHighMotion = 9,
5319}
5320impl IngressVideoEncodingPreset {
5321    /// String value of the enum field names used in the ProtoBuf definition.
5322    ///
5323    /// The values are not transformed in any way and thus are considered stable
5324    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5325    pub fn as_str_name(&self) -> &'static str {
5326        match self {
5327            IngressVideoEncodingPreset::H264720p30fps3Layers => "H264_720P_30FPS_3_LAYERS",
5328            IngressVideoEncodingPreset::H2641080p30fps3Layers => "H264_1080P_30FPS_3_LAYERS",
5329            IngressVideoEncodingPreset::H264540p25fps2Layers => "H264_540P_25FPS_2_LAYERS",
5330            IngressVideoEncodingPreset::H264720p30fps1Layer => "H264_720P_30FPS_1_LAYER",
5331            IngressVideoEncodingPreset::H2641080p30fps1Layer => "H264_1080P_30FPS_1_LAYER",
5332            IngressVideoEncodingPreset::H264720p30fps3LayersHighMotion => "H264_720P_30FPS_3_LAYERS_HIGH_MOTION",
5333            IngressVideoEncodingPreset::H2641080p30fps3LayersHighMotion => "H264_1080P_30FPS_3_LAYERS_HIGH_MOTION",
5334            IngressVideoEncodingPreset::H264540p25fps2LayersHighMotion => "H264_540P_25FPS_2_LAYERS_HIGH_MOTION",
5335            IngressVideoEncodingPreset::H264720p30fps1LayerHighMotion => "H264_720P_30FPS_1_LAYER_HIGH_MOTION",
5336            IngressVideoEncodingPreset::H2641080p30fps1LayerHighMotion => "H264_1080P_30FPS_1_LAYER_HIGH_MOTION",
5337        }
5338    }
5339    /// Creates an enum from field names used in the ProtoBuf definition.
5340    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5341        match value {
5342            "H264_720P_30FPS_3_LAYERS" => Some(Self::H264720p30fps3Layers),
5343            "H264_1080P_30FPS_3_LAYERS" => Some(Self::H2641080p30fps3Layers),
5344            "H264_540P_25FPS_2_LAYERS" => Some(Self::H264540p25fps2Layers),
5345            "H264_720P_30FPS_1_LAYER" => Some(Self::H264720p30fps1Layer),
5346            "H264_1080P_30FPS_1_LAYER" => Some(Self::H2641080p30fps1Layer),
5347            "H264_720P_30FPS_3_LAYERS_HIGH_MOTION" => Some(Self::H264720p30fps3LayersHighMotion),
5348            "H264_1080P_30FPS_3_LAYERS_HIGH_MOTION" => Some(Self::H2641080p30fps3LayersHighMotion),
5349            "H264_540P_25FPS_2_LAYERS_HIGH_MOTION" => Some(Self::H264540p25fps2LayersHighMotion),
5350            "H264_720P_30FPS_1_LAYER_HIGH_MOTION" => Some(Self::H264720p30fps1LayerHighMotion),
5351            "H264_1080P_30FPS_1_LAYER_HIGH_MOTION" => Some(Self::H2641080p30fps1LayerHighMotion),
5352            _ => None,
5353        }
5354    }
5355}
5356#[allow(clippy::derive_partial_eq_without_eq)]
5357#[derive(Clone, PartialEq, ::prost::Message)]
5358pub struct WebhookEvent {
5359    /// one of room_started, room_finished, participant_joined, participant_left, participant_connection_aborted,
5360    /// track_published, track_unpublished, egress_started, egress_updated, egress_ended,
5361    /// ingress_started, ingress_ended
5362    #[prost(string, tag="1")]
5363    pub event: ::prost::alloc::string::String,
5364    #[prost(message, optional, tag="2")]
5365    pub room: ::core::option::Option<Room>,
5366    /// set when event is participant_* or track_*
5367    #[prost(message, optional, tag="3")]
5368    pub participant: ::core::option::Option<ParticipantInfo>,
5369    /// set when event is egress_*
5370    #[prost(message, optional, tag="9")]
5371    pub egress_info: ::core::option::Option<EgressInfo>,
5372    /// set when event is ingress_*
5373    #[prost(message, optional, tag="10")]
5374    pub ingress_info: ::core::option::Option<IngressInfo>,
5375    /// set when event is track_*
5376    #[prost(message, optional, tag="8")]
5377    pub track: ::core::option::Option<TrackInfo>,
5378    /// unique event uuid
5379    #[prost(string, tag="6")]
5380    pub id: ::prost::alloc::string::String,
5381    /// timestamp in seconds
5382    #[prost(int64, tag="7")]
5383    pub created_at: i64,
5384    #[deprecated]
5385    #[prost(int32, tag="11")]
5386    pub num_dropped: i32,
5387}
5388/// SIPStatus is returned as an error detail in CreateSIPParticipant.
5389#[allow(clippy::derive_partial_eq_without_eq)]
5390#[derive(Clone, PartialEq, ::prost::Message)]
5391pub struct SipStatus {
5392    #[prost(enumeration="SipStatusCode", tag="1")]
5393    pub code: i32,
5394    #[prost(string, tag="2")]
5395    pub status: ::prost::alloc::string::String,
5396}
5397#[allow(clippy::derive_partial_eq_without_eq)]
5398#[derive(Clone, PartialEq, ::prost::Message)]
5399pub struct CreateSipTrunkRequest {
5400    /// CIDR or IPs that traffic is accepted from
5401    /// An empty list means all inbound traffic is accepted.
5402    #[prost(string, repeated, tag="1")]
5403    pub inbound_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5404    /// IP that SIP INVITE is sent too
5405    #[prost(string, tag="2")]
5406    pub outbound_address: ::prost::alloc::string::String,
5407    /// Number used to make outbound calls
5408    #[prost(string, tag="3")]
5409    pub outbound_number: ::prost::alloc::string::String,
5410    #[deprecated]
5411    #[prost(string, repeated, tag="4")]
5412    pub inbound_numbers_regex: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5413    /// Accepted `To` values. This Trunk will only accept a call made to
5414    /// these numbers. This allows you to have distinct Trunks for different phone
5415    /// numbers at the same provider.
5416    #[prost(string, repeated, tag="9")]
5417    pub inbound_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5418    /// Username and password used to authenticate inbound and outbound SIP invites
5419    /// May be empty to have no Authentication
5420    #[prost(string, tag="5")]
5421    pub inbound_username: ::prost::alloc::string::String,
5422    #[prost(string, tag="6")]
5423    pub inbound_password: ::prost::alloc::string::String,
5424    #[prost(string, tag="7")]
5425    pub outbound_username: ::prost::alloc::string::String,
5426    #[prost(string, tag="8")]
5427    pub outbound_password: ::prost::alloc::string::String,
5428    /// Optional human-readable name for the Trunk.
5429    #[prost(string, tag="10")]
5430    pub name: ::prost::alloc::string::String,
5431    /// Optional user-defined metadata for the Trunk.
5432    #[prost(string, tag="11")]
5433    pub metadata: ::prost::alloc::string::String,
5434}
5435#[allow(clippy::derive_partial_eq_without_eq)]
5436#[derive(Clone, PartialEq, ::prost::Message)]
5437pub struct ProviderInfo {
5438    #[prost(string, tag="1")]
5439    pub id: ::prost::alloc::string::String,
5440    #[prost(string, tag="2")]
5441    pub name: ::prost::alloc::string::String,
5442    #[prost(enumeration="ProviderType", tag="3")]
5443    pub r#type: i32,
5444    #[prost(bool, tag="4")]
5445    pub prevent_transfer: bool,
5446}
5447#[allow(clippy::derive_partial_eq_without_eq)]
5448#[derive(Clone, PartialEq, ::prost::Message)]
5449pub struct SipTrunkInfo {
5450    #[prost(string, tag="1")]
5451    pub sip_trunk_id: ::prost::alloc::string::String,
5452    #[prost(enumeration="sip_trunk_info::TrunkKind", tag="14")]
5453    pub kind: i32,
5454    /// CIDR or IPs that traffic is accepted from
5455    /// An empty list means all inbound traffic is accepted.
5456    #[prost(string, repeated, tag="2")]
5457    pub inbound_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5458    /// IP that SIP INVITE is sent too
5459    #[prost(string, tag="3")]
5460    pub outbound_address: ::prost::alloc::string::String,
5461    /// Number used to make outbound calls
5462    #[prost(string, tag="4")]
5463    pub outbound_number: ::prost::alloc::string::String,
5464    /// Transport used for inbound and outbound calls.
5465    #[prost(enumeration="SipTransport", tag="13")]
5466    pub transport: i32,
5467    #[deprecated]
5468    #[prost(string, repeated, tag="5")]
5469    pub inbound_numbers_regex: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5470    /// Accepted `To` values. This Trunk will only accept a call made to
5471    /// these numbers. This allows you to have distinct Trunks for different phone
5472    /// numbers at the same provider.
5473    #[prost(string, repeated, tag="10")]
5474    pub inbound_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5475    /// Username and password used to authenticate inbound and outbound SIP invites
5476    /// May be empty to have no Authentication
5477    #[prost(string, tag="6")]
5478    pub inbound_username: ::prost::alloc::string::String,
5479    #[prost(string, tag="7")]
5480    pub inbound_password: ::prost::alloc::string::String,
5481    #[prost(string, tag="8")]
5482    pub outbound_username: ::prost::alloc::string::String,
5483    #[prost(string, tag="9")]
5484    pub outbound_password: ::prost::alloc::string::String,
5485    /// Human-readable name for the Trunk.
5486    #[prost(string, tag="11")]
5487    pub name: ::prost::alloc::string::String,
5488    /// User-defined metadata for the Trunk.
5489    #[prost(string, tag="12")]
5490    pub metadata: ::prost::alloc::string::String,
5491}
5492/// Nested message and enum types in `SIPTrunkInfo`.
5493pub mod sip_trunk_info {
5494    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5495    #[repr(i32)]
5496    pub enum TrunkKind {
5497        TrunkLegacy = 0,
5498        TrunkInbound = 1,
5499        TrunkOutbound = 2,
5500    }
5501    impl TrunkKind {
5502        /// String value of the enum field names used in the ProtoBuf definition.
5503        ///
5504        /// The values are not transformed in any way and thus are considered stable
5505        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5506        pub fn as_str_name(&self) -> &'static str {
5507            match self {
5508                TrunkKind::TrunkLegacy => "TRUNK_LEGACY",
5509                TrunkKind::TrunkInbound => "TRUNK_INBOUND",
5510                TrunkKind::TrunkOutbound => "TRUNK_OUTBOUND",
5511            }
5512        }
5513        /// Creates an enum from field names used in the ProtoBuf definition.
5514        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5515            match value {
5516                "TRUNK_LEGACY" => Some(Self::TrunkLegacy),
5517                "TRUNK_INBOUND" => Some(Self::TrunkInbound),
5518                "TRUNK_OUTBOUND" => Some(Self::TrunkOutbound),
5519                _ => None,
5520            }
5521        }
5522    }
5523}
5524#[allow(clippy::derive_partial_eq_without_eq)]
5525#[derive(Clone, PartialEq, ::prost::Message)]
5526pub struct CreateSipInboundTrunkRequest {
5527    /// Trunk ID is ignored
5528    #[prost(message, optional, tag="1")]
5529    pub trunk: ::core::option::Option<SipInboundTrunkInfo>,
5530}
5531#[allow(clippy::derive_partial_eq_without_eq)]
5532#[derive(Clone, PartialEq, ::prost::Message)]
5533pub struct UpdateSipInboundTrunkRequest {
5534    #[prost(string, tag="1")]
5535    pub sip_trunk_id: ::prost::alloc::string::String,
5536    #[prost(oneof="update_sip_inbound_trunk_request::Action", tags="2, 3")]
5537    pub action: ::core::option::Option<update_sip_inbound_trunk_request::Action>,
5538}
5539/// Nested message and enum types in `UpdateSIPInboundTrunkRequest`.
5540pub mod update_sip_inbound_trunk_request {
5541    #[allow(clippy::derive_partial_eq_without_eq)]
5542#[derive(Clone, PartialEq, ::prost::Oneof)]
5543    pub enum Action {
5544        #[prost(message, tag="2")]
5545        Replace(super::SipInboundTrunkInfo),
5546        #[prost(message, tag="3")]
5547        Update(super::SipInboundTrunkUpdate),
5548    }
5549}
5550#[allow(clippy::derive_partial_eq_without_eq)]
5551#[derive(Clone, PartialEq, ::prost::Message)]
5552pub struct SipInboundTrunkInfo {
5553    #[prost(string, tag="1")]
5554    pub sip_trunk_id: ::prost::alloc::string::String,
5555    /// Human-readable name for the Trunk.
5556    #[prost(string, tag="2")]
5557    pub name: ::prost::alloc::string::String,
5558    /// User-defined metadata for the Trunk.
5559    #[prost(string, tag="3")]
5560    pub metadata: ::prost::alloc::string::String,
5561    /// Numbers associated with LiveKit SIP. The Trunk will only accept calls made to these numbers.
5562    /// Creating multiple Trunks with different phone numbers allows having different rules for a single provider.
5563    #[prost(string, repeated, tag="4")]
5564    pub numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5565    /// CIDR or IPs that traffic is accepted from.
5566    /// An empty list means all inbound traffic is accepted.
5567    #[prost(string, repeated, tag="5")]
5568    pub allowed_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5569    /// Numbers that are allowed to make calls to this Trunk.
5570    /// An empty list means calls from any phone number is accepted.
5571    #[prost(string, repeated, tag="6")]
5572    pub allowed_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5573    /// Username and password used to authenticate inbound SIP invites.
5574    /// May be empty to have no authentication.
5575    #[prost(string, tag="7")]
5576    pub auth_username: ::prost::alloc::string::String,
5577    #[prost(string, tag="8")]
5578    pub auth_password: ::prost::alloc::string::String,
5579    /// Include these SIP X-* headers in 200 OK responses.
5580    #[prost(map="string, string", tag="9")]
5581    pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5582    /// Map SIP X-* headers from INVITE to SIP participant attributes.
5583    #[prost(map="string, string", tag="10")]
5584    pub headers_to_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5585    /// Map LiveKit attributes to SIP X-* headers when sending BYE or REFER requests.
5586    /// Keys are the names of attributes and values are the names of X-* headers they will be mapped to.
5587    #[prost(map="string, string", tag="14")]
5588    pub attributes_to_headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5589    /// Map SIP headers from INVITE to sip.h.* participant attributes automatically.
5590    ///
5591    /// When the names of required headers is known, using headers_to_attributes is strongly recommended.
5592    ///
5593    /// When mapping INVITE headers to response headers with attributes_to_headers map,
5594    /// lowercase header names should be used, for example: sip.h.x-custom-header.
5595    #[prost(enumeration="SipHeaderOptions", tag="15")]
5596    pub include_headers: i32,
5597    /// Max time for the caller to wait for track subscription.
5598    #[prost(message, optional, tag="11")]
5599    pub ringing_timeout: ::core::option::Option<::pbjson_types::Duration>,
5600    /// Max call duration.
5601    #[prost(message, optional, tag="12")]
5602    pub max_call_duration: ::core::option::Option<::pbjson_types::Duration>,
5603    #[prost(bool, tag="13")]
5604    pub krisp_enabled: bool,
5605    #[prost(enumeration="SipMediaEncryption", tag="16")]
5606    pub media_encryption: i32,
5607}
5608#[allow(clippy::derive_partial_eq_without_eq)]
5609#[derive(Clone, PartialEq, ::prost::Message)]
5610pub struct SipInboundTrunkUpdate {
5611    #[prost(message, optional, tag="1")]
5612    pub numbers: ::core::option::Option<ListUpdate>,
5613    #[prost(message, optional, tag="2")]
5614    pub allowed_addresses: ::core::option::Option<ListUpdate>,
5615    #[prost(message, optional, tag="3")]
5616    pub allowed_numbers: ::core::option::Option<ListUpdate>,
5617    #[prost(string, optional, tag="4")]
5618    pub auth_username: ::core::option::Option<::prost::alloc::string::String>,
5619    #[prost(string, optional, tag="5")]
5620    pub auth_password: ::core::option::Option<::prost::alloc::string::String>,
5621    #[prost(string, optional, tag="6")]
5622    pub name: ::core::option::Option<::prost::alloc::string::String>,
5623    #[prost(string, optional, tag="7")]
5624    pub metadata: ::core::option::Option<::prost::alloc::string::String>,
5625    #[prost(enumeration="SipMediaEncryption", optional, tag="8")]
5626    pub media_encryption: ::core::option::Option<i32>,
5627}
5628#[allow(clippy::derive_partial_eq_without_eq)]
5629#[derive(Clone, PartialEq, ::prost::Message)]
5630pub struct CreateSipOutboundTrunkRequest {
5631    /// Trunk ID is ignored
5632    #[prost(message, optional, tag="1")]
5633    pub trunk: ::core::option::Option<SipOutboundTrunkInfo>,
5634}
5635#[allow(clippy::derive_partial_eq_without_eq)]
5636#[derive(Clone, PartialEq, ::prost::Message)]
5637pub struct UpdateSipOutboundTrunkRequest {
5638    #[prost(string, tag="1")]
5639    pub sip_trunk_id: ::prost::alloc::string::String,
5640    #[prost(oneof="update_sip_outbound_trunk_request::Action", tags="2, 3")]
5641    pub action: ::core::option::Option<update_sip_outbound_trunk_request::Action>,
5642}
5643/// Nested message and enum types in `UpdateSIPOutboundTrunkRequest`.
5644pub mod update_sip_outbound_trunk_request {
5645    #[allow(clippy::derive_partial_eq_without_eq)]
5646#[derive(Clone, PartialEq, ::prost::Oneof)]
5647    pub enum Action {
5648        #[prost(message, tag="2")]
5649        Replace(super::SipOutboundTrunkInfo),
5650        #[prost(message, tag="3")]
5651        Update(super::SipOutboundTrunkUpdate),
5652    }
5653}
5654#[allow(clippy::derive_partial_eq_without_eq)]
5655#[derive(Clone, PartialEq, ::prost::Message)]
5656pub struct SipOutboundTrunkInfo {
5657    #[prost(string, tag="1")]
5658    pub sip_trunk_id: ::prost::alloc::string::String,
5659    /// Human-readable name for the Trunk.
5660    #[prost(string, tag="2")]
5661    pub name: ::prost::alloc::string::String,
5662    /// User-defined metadata for the Trunk.
5663    #[prost(string, tag="3")]
5664    pub metadata: ::prost::alloc::string::String,
5665    /// Hostname or IP that SIP INVITE is sent too.
5666    /// Note that this is not a SIP URI and should not contain the 'sip:' protocol prefix.
5667    #[prost(string, tag="4")]
5668    pub address: ::prost::alloc::string::String,
5669    /// country where the call terminates as ISO 3166-1 alpha-2 (<https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2>). This will be used by the livekit infrastructure to route calls.
5670    #[prost(string, tag="14")]
5671    pub destination_country: ::prost::alloc::string::String,
5672    /// SIP Transport used for outbound call.
5673    #[prost(enumeration="SipTransport", tag="5")]
5674    pub transport: i32,
5675    /// Numbers used to make the calls. Random one from this list will be selected.
5676    #[prost(string, repeated, tag="6")]
5677    pub numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5678    /// Username and password used to authenticate with SIP server.
5679    /// May be empty to have no authentication.
5680    #[prost(string, tag="7")]
5681    pub auth_username: ::prost::alloc::string::String,
5682    #[prost(string, tag="8")]
5683    pub auth_password: ::prost::alloc::string::String,
5684    /// Include these SIP X-* headers in INVITE request.
5685    /// These headers are sent as-is and may help identify this call as coming from LiveKit for the other SIP endpoint.
5686    #[prost(map="string, string", tag="9")]
5687    pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5688    /// Map SIP X-* headers from 200 OK to SIP participant attributes.
5689    /// Keys are the names of X-* headers and values are the names of attributes they will be mapped to.
5690    #[prost(map="string, string", tag="10")]
5691    pub headers_to_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5692    /// Map LiveKit attributes to SIP X-* headers when sending BYE or REFER requests.
5693    /// Keys are the names of attributes and values are the names of X-* headers they will be mapped to.
5694    #[prost(map="string, string", tag="11")]
5695    pub attributes_to_headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5696    /// Map SIP headers from 200 OK to sip.h.* participant attributes automatically.
5697    ///
5698    /// When the names of required headers is known, using headers_to_attributes is strongly recommended.
5699    ///
5700    /// When mapping 200 OK headers to follow-up request headers with attributes_to_headers map,
5701    /// lowercase header names should be used, for example: sip.h.x-custom-header.
5702    #[prost(enumeration="SipHeaderOptions", tag="12")]
5703    pub include_headers: i32,
5704    #[prost(enumeration="SipMediaEncryption", tag="13")]
5705    pub media_encryption: i32,
5706}
5707#[allow(clippy::derive_partial_eq_without_eq)]
5708#[derive(Clone, PartialEq, ::prost::Message)]
5709pub struct SipOutboundTrunkUpdate {
5710    #[prost(string, optional, tag="1")]
5711    pub address: ::core::option::Option<::prost::alloc::string::String>,
5712    #[prost(enumeration="SipTransport", optional, tag="2")]
5713    pub transport: ::core::option::Option<i32>,
5714    #[prost(string, optional, tag="9")]
5715    pub destination_country: ::core::option::Option<::prost::alloc::string::String>,
5716    #[prost(message, optional, tag="3")]
5717    pub numbers: ::core::option::Option<ListUpdate>,
5718    #[prost(string, optional, tag="4")]
5719    pub auth_username: ::core::option::Option<::prost::alloc::string::String>,
5720    #[prost(string, optional, tag="5")]
5721    pub auth_password: ::core::option::Option<::prost::alloc::string::String>,
5722    #[prost(string, optional, tag="6")]
5723    pub name: ::core::option::Option<::prost::alloc::string::String>,
5724    #[prost(string, optional, tag="7")]
5725    pub metadata: ::core::option::Option<::prost::alloc::string::String>,
5726    #[prost(enumeration="SipMediaEncryption", optional, tag="8")]
5727    pub media_encryption: ::core::option::Option<i32>,
5728}
5729#[allow(clippy::derive_partial_eq_without_eq)]
5730#[derive(Clone, PartialEq, ::prost::Message)]
5731pub struct GetSipInboundTrunkRequest {
5732    #[prost(string, tag="1")]
5733    pub sip_trunk_id: ::prost::alloc::string::String,
5734}
5735#[allow(clippy::derive_partial_eq_without_eq)]
5736#[derive(Clone, PartialEq, ::prost::Message)]
5737pub struct GetSipInboundTrunkResponse {
5738    #[prost(message, optional, tag="1")]
5739    pub trunk: ::core::option::Option<SipInboundTrunkInfo>,
5740}
5741#[allow(clippy::derive_partial_eq_without_eq)]
5742#[derive(Clone, PartialEq, ::prost::Message)]
5743pub struct GetSipOutboundTrunkRequest {
5744    #[prost(string, tag="1")]
5745    pub sip_trunk_id: ::prost::alloc::string::String,
5746}
5747#[allow(clippy::derive_partial_eq_without_eq)]
5748#[derive(Clone, PartialEq, ::prost::Message)]
5749pub struct GetSipOutboundTrunkResponse {
5750    #[prost(message, optional, tag="1")]
5751    pub trunk: ::core::option::Option<SipOutboundTrunkInfo>,
5752}
5753#[allow(clippy::derive_partial_eq_without_eq)]
5754#[derive(Clone, PartialEq, ::prost::Message)]
5755pub struct ListSipTrunkRequest {
5756    #[prost(message, optional, tag="1")]
5757    pub page: ::core::option::Option<Pagination>,
5758}
5759#[allow(clippy::derive_partial_eq_without_eq)]
5760#[derive(Clone, PartialEq, ::prost::Message)]
5761pub struct ListSipTrunkResponse {
5762    #[prost(message, repeated, tag="1")]
5763    pub items: ::prost::alloc::vec::Vec<SipTrunkInfo>,
5764}
5765/// ListSIPInboundTrunkRequest lists inbound trunks for given filters. If no filters are set, all trunks are listed.
5766#[allow(clippy::derive_partial_eq_without_eq)]
5767#[derive(Clone, PartialEq, ::prost::Message)]
5768pub struct ListSipInboundTrunkRequest {
5769    #[prost(message, optional, tag="3")]
5770    pub page: ::core::option::Option<Pagination>,
5771    /// Trunk IDs to list. If this option is set, the response will contains trunks in the same order.
5772    /// If any of the trunks is missing, a nil item in that position will be sent in the response.
5773    #[prost(string, repeated, tag="1")]
5774    pub trunk_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5775    /// Only list trunks that contain one of the numbers, including wildcard trunks.
5776    #[prost(string, repeated, tag="2")]
5777    pub numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5778}
5779#[allow(clippy::derive_partial_eq_without_eq)]
5780#[derive(Clone, PartialEq, ::prost::Message)]
5781pub struct ListSipInboundTrunkResponse {
5782    #[prost(message, repeated, tag="1")]
5783    pub items: ::prost::alloc::vec::Vec<SipInboundTrunkInfo>,
5784}
5785/// ListSIPOutboundTrunkRequest lists outbound trunks for given filters. If no filters are set, all trunks are listed.
5786#[allow(clippy::derive_partial_eq_without_eq)]
5787#[derive(Clone, PartialEq, ::prost::Message)]
5788pub struct ListSipOutboundTrunkRequest {
5789    #[prost(message, optional, tag="3")]
5790    pub page: ::core::option::Option<Pagination>,
5791    /// Trunk IDs to list. If this option is set, the response will contains trunks in the same order.
5792    /// If any of the trunks is missing, a nil item in that position will be sent in the response.
5793    #[prost(string, repeated, tag="1")]
5794    pub trunk_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5795    /// Only list trunks that contain one of the numbers, including wildcard trunks.
5796    #[prost(string, repeated, tag="2")]
5797    pub numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5798}
5799#[allow(clippy::derive_partial_eq_without_eq)]
5800#[derive(Clone, PartialEq, ::prost::Message)]
5801pub struct ListSipOutboundTrunkResponse {
5802    #[prost(message, repeated, tag="1")]
5803    pub items: ::prost::alloc::vec::Vec<SipOutboundTrunkInfo>,
5804}
5805#[allow(clippy::derive_partial_eq_without_eq)]
5806#[derive(Clone, PartialEq, ::prost::Message)]
5807pub struct DeleteSipTrunkRequest {
5808    #[prost(string, tag="1")]
5809    pub sip_trunk_id: ::prost::alloc::string::String,
5810}
5811#[allow(clippy::derive_partial_eq_without_eq)]
5812#[derive(Clone, PartialEq, ::prost::Message)]
5813pub struct SipDispatchRuleDirect {
5814    /// What room should call be directed into
5815    #[prost(string, tag="1")]
5816    pub room_name: ::prost::alloc::string::String,
5817    /// Optional pin required to enter room
5818    #[prost(string, tag="2")]
5819    pub pin: ::prost::alloc::string::String,
5820}
5821#[allow(clippy::derive_partial_eq_without_eq)]
5822#[derive(Clone, PartialEq, ::prost::Message)]
5823pub struct SipDispatchRuleIndividual {
5824    /// Prefix used on new room name
5825    #[prost(string, tag="1")]
5826    pub room_prefix: ::prost::alloc::string::String,
5827    /// Optional pin required to enter room
5828    #[prost(string, tag="2")]
5829    pub pin: ::prost::alloc::string::String,
5830}
5831#[allow(clippy::derive_partial_eq_without_eq)]
5832#[derive(Clone, PartialEq, ::prost::Message)]
5833pub struct SipDispatchRuleCallee {
5834    /// Prefix used on new room name
5835    #[prost(string, tag="1")]
5836    pub room_prefix: ::prost::alloc::string::String,
5837    /// Optional pin required to enter room
5838    #[prost(string, tag="2")]
5839    pub pin: ::prost::alloc::string::String,
5840    /// Optionally append random suffix
5841    #[prost(bool, tag="3")]
5842    pub randomize: bool,
5843}
5844#[allow(clippy::derive_partial_eq_without_eq)]
5845#[derive(Clone, PartialEq, ::prost::Message)]
5846pub struct SipDispatchRule {
5847    #[prost(oneof="sip_dispatch_rule::Rule", tags="1, 2, 3")]
5848    pub rule: ::core::option::Option<sip_dispatch_rule::Rule>,
5849}
5850/// Nested message and enum types in `SIPDispatchRule`.
5851pub mod sip_dispatch_rule {
5852    #[allow(clippy::derive_partial_eq_without_eq)]
5853#[derive(Clone, PartialEq, ::prost::Oneof)]
5854    pub enum Rule {
5855        /// SIPDispatchRuleDirect is a `SIP Dispatch Rule` that puts a user directly into a room
5856        /// This places users into an existing room. Optionally you can require a pin before a user can
5857        /// enter the room
5858        #[prost(message, tag="1")]
5859        DispatchRuleDirect(super::SipDispatchRuleDirect),
5860        /// SIPDispatchRuleIndividual is a `SIP Dispatch Rule` that creates a new room for each caller.
5861        #[prost(message, tag="2")]
5862        DispatchRuleIndividual(super::SipDispatchRuleIndividual),
5863        /// SIPDispatchRuleCallee is a `SIP Dispatch Rule` that creates a new room for each callee.
5864        #[prost(message, tag="3")]
5865        DispatchRuleCallee(super::SipDispatchRuleCallee),
5866    }
5867}
5868#[allow(clippy::derive_partial_eq_without_eq)]
5869#[derive(Clone, PartialEq, ::prost::Message)]
5870pub struct CreateSipDispatchRuleRequest {
5871    /// Rule ID is ignored
5872    #[prost(message, optional, tag="10")]
5873    pub dispatch_rule: ::core::option::Option<SipDispatchRuleInfo>,
5874    #[deprecated]
5875    #[prost(message, optional, tag="1")]
5876    pub rule: ::core::option::Option<SipDispatchRule>,
5877    /// What trunks are accepted for this dispatch rule
5878    /// If empty all trunks will match this dispatch rule
5879    #[deprecated]
5880    #[prost(string, repeated, tag="2")]
5881    pub trunk_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5882    /// By default the From value (Phone number) is used for participant name/identity and added to attributes.
5883    /// If true, a random value for identity will be used and numbers will be omitted from attributes.
5884    #[deprecated]
5885    #[prost(bool, tag="3")]
5886    pub hide_phone_number: bool,
5887    /// Dispatch Rule will only accept a call made to these numbers (if set).
5888    #[deprecated]
5889    #[prost(string, repeated, tag="6")]
5890    pub inbound_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5891    /// Optional human-readable name for the Dispatch Rule.
5892    #[deprecated]
5893    #[prost(string, tag="4")]
5894    pub name: ::prost::alloc::string::String,
5895    /// User-defined metadata for the Dispatch Rule.
5896    /// Participants created by this rule will inherit this metadata.
5897    #[deprecated]
5898    #[prost(string, tag="5")]
5899    pub metadata: ::prost::alloc::string::String,
5900    /// User-defined attributes for the Dispatch Rule.
5901    /// Participants created by this rule will inherit these attributes.
5902    #[prost(map="string, string", tag="7")]
5903    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5904    /// Cloud-only, config preset to use
5905    #[deprecated]
5906    #[prost(string, tag="8")]
5907    pub room_preset: ::prost::alloc::string::String,
5908    /// RoomConfiguration to use if the participant initiates the room
5909    #[deprecated]
5910    #[prost(message, optional, tag="9")]
5911    pub room_config: ::core::option::Option<RoomConfiguration>,
5912}
5913#[allow(clippy::derive_partial_eq_without_eq)]
5914#[derive(Clone, PartialEq, ::prost::Message)]
5915pub struct UpdateSipDispatchRuleRequest {
5916    #[prost(string, tag="1")]
5917    pub sip_dispatch_rule_id: ::prost::alloc::string::String,
5918    #[prost(oneof="update_sip_dispatch_rule_request::Action", tags="2, 3")]
5919    pub action: ::core::option::Option<update_sip_dispatch_rule_request::Action>,
5920}
5921/// Nested message and enum types in `UpdateSIPDispatchRuleRequest`.
5922pub mod update_sip_dispatch_rule_request {
5923    #[allow(clippy::derive_partial_eq_without_eq)]
5924#[derive(Clone, PartialEq, ::prost::Oneof)]
5925    pub enum Action {
5926        #[prost(message, tag="2")]
5927        Replace(super::SipDispatchRuleInfo),
5928        #[prost(message, tag="3")]
5929        Update(super::SipDispatchRuleUpdate),
5930    }
5931}
5932#[allow(clippy::derive_partial_eq_without_eq)]
5933#[derive(Clone, PartialEq, ::prost::Message)]
5934pub struct SipDispatchRuleInfo {
5935    #[prost(string, tag="1")]
5936    pub sip_dispatch_rule_id: ::prost::alloc::string::String,
5937    #[prost(message, optional, tag="2")]
5938    pub rule: ::core::option::Option<SipDispatchRule>,
5939    #[prost(string, repeated, tag="3")]
5940    pub trunk_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5941    #[prost(bool, tag="4")]
5942    pub hide_phone_number: bool,
5943    /// Dispatch Rule will only accept a call made from these numbers (if set).
5944    #[prost(string, repeated, tag="7")]
5945    pub inbound_numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5946    /// Dispatch Rule will only accept a call made to these numbers (if set).
5947    #[prost(string, repeated, tag="13")]
5948    pub numbers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5949    /// Human-readable name for the Dispatch Rule.
5950    #[prost(string, tag="5")]
5951    pub name: ::prost::alloc::string::String,
5952    /// User-defined metadata for the Dispatch Rule.
5953    /// Participants created by this rule will inherit this metadata.
5954    #[prost(string, tag="6")]
5955    pub metadata: ::prost::alloc::string::String,
5956    /// User-defined attributes for the Dispatch Rule.
5957    /// Participants created by this rule will inherit these attributes.
5958    #[prost(map="string, string", tag="8")]
5959    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5960    /// Cloud-only, config preset to use
5961    #[prost(string, tag="9")]
5962    pub room_preset: ::prost::alloc::string::String,
5963    /// RoomConfiguration to use if the participant initiates the room
5964    #[prost(message, optional, tag="10")]
5965    pub room_config: ::core::option::Option<RoomConfiguration>,
5966    #[prost(bool, tag="11")]
5967    pub krisp_enabled: bool,
5968    /// NEXT ID: 14
5969    #[prost(enumeration="SipMediaEncryption", tag="12")]
5970    pub media_encryption: i32,
5971}
5972#[allow(clippy::derive_partial_eq_without_eq)]
5973#[derive(Clone, PartialEq, ::prost::Message)]
5974pub struct SipDispatchRuleUpdate {
5975    #[prost(message, optional, tag="1")]
5976    pub trunk_ids: ::core::option::Option<ListUpdate>,
5977    #[prost(message, optional, tag="2")]
5978    pub rule: ::core::option::Option<SipDispatchRule>,
5979    #[prost(string, optional, tag="3")]
5980    pub name: ::core::option::Option<::prost::alloc::string::String>,
5981    #[prost(string, optional, tag="4")]
5982    pub metadata: ::core::option::Option<::prost::alloc::string::String>,
5983    #[prost(map="string, string", tag="5")]
5984    pub attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5985    #[prost(enumeration="SipMediaEncryption", optional, tag="6")]
5986    pub media_encryption: ::core::option::Option<i32>,
5987}
5988/// ListSIPDispatchRuleRequest lists dispatch rules for given filters. If no filters are set, all rules are listed.
5989#[allow(clippy::derive_partial_eq_without_eq)]
5990#[derive(Clone, PartialEq, ::prost::Message)]
5991pub struct ListSipDispatchRuleRequest {
5992    #[prost(message, optional, tag="3")]
5993    pub page: ::core::option::Option<Pagination>,
5994    /// Rule IDs to list. If this option is set, the response will contains rules in the same order.
5995    /// If any of the rules is missing, a nil item in that position will be sent in the response.
5996    #[prost(string, repeated, tag="1")]
5997    pub dispatch_rule_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5998    /// Only list rules that contain one of the Trunk IDs, including wildcard rules.
5999    #[prost(string, repeated, tag="2")]
6000    pub trunk_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6001}
6002#[allow(clippy::derive_partial_eq_without_eq)]
6003#[derive(Clone, PartialEq, ::prost::Message)]
6004pub struct ListSipDispatchRuleResponse {
6005    #[prost(message, repeated, tag="1")]
6006    pub items: ::prost::alloc::vec::Vec<SipDispatchRuleInfo>,
6007}
6008#[allow(clippy::derive_partial_eq_without_eq)]
6009#[derive(Clone, PartialEq, ::prost::Message)]
6010pub struct DeleteSipDispatchRuleRequest {
6011    #[prost(string, tag="1")]
6012    pub sip_dispatch_rule_id: ::prost::alloc::string::String,
6013}
6014#[allow(clippy::derive_partial_eq_without_eq)]
6015#[derive(Clone, PartialEq, ::prost::Message)]
6016pub struct SipOutboundConfig {
6017    /// SIP server address
6018    #[prost(string, tag="1")]
6019    pub hostname: ::prost::alloc::string::String,
6020    /// country where the call terminates as ISO 3166-1 alpha-2 (<https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2>). This will be used by the livekit infrastructure to route calls.
6021    #[prost(string, tag="7")]
6022    pub destination_country: ::prost::alloc::string::String,
6023    /// SIP Transport used for outbound call.
6024    #[prost(enumeration="SipTransport", tag="2")]
6025    pub transport: i32,
6026    /// Username and password used to authenticate with SIP server.
6027    /// May be empty to have no authentication.
6028    #[prost(string, tag="3")]
6029    pub auth_username: ::prost::alloc::string::String,
6030    #[prost(string, tag="4")]
6031    pub auth_password: ::prost::alloc::string::String,
6032    /// Map SIP X-* headers from 200 OK to SIP participant attributes.
6033    /// Keys are the names of X-* headers and values are the names of attributes they will be mapped to.
6034    #[prost(map="string, string", tag="5")]
6035    pub headers_to_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6036    /// Map LiveKit attributes to SIP X-* headers when sending BYE or REFER requests.
6037    /// Keys are the names of attributes and values are the names of X-* headers they will be mapped to.
6038    #[prost(map="string, string", tag="6")]
6039    pub attributes_to_headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6040}
6041/// A SIP Participant is a singular SIP session connected to a LiveKit room via
6042/// a SIP Trunk into a SIP DispatchRule
6043#[allow(clippy::derive_partial_eq_without_eq)]
6044#[derive(Clone, PartialEq, ::prost::Message)]
6045pub struct CreateSipParticipantRequest {
6046    /// What SIP Trunk should be used to dial the user
6047    #[prost(string, tag="1")]
6048    pub sip_trunk_id: ::prost::alloc::string::String,
6049    #[prost(message, optional, tag="20")]
6050    pub trunk: ::core::option::Option<SipOutboundConfig>,
6051    /// What number should be dialed via SIP
6052    #[prost(string, tag="2")]
6053    pub sip_call_to: ::prost::alloc::string::String,
6054    /// Optional SIP From number to use. If empty, trunk number is used.
6055    #[prost(string, tag="15")]
6056    pub sip_number: ::prost::alloc::string::String,
6057    /// What LiveKit room should this participant be connected too
6058    #[prost(string, tag="3")]
6059    pub room_name: ::prost::alloc::string::String,
6060    /// Optional identity of the participant in LiveKit room
6061    #[prost(string, tag="4")]
6062    pub participant_identity: ::prost::alloc::string::String,
6063    /// Optional name of the participant in LiveKit room
6064    #[prost(string, tag="7")]
6065    pub participant_name: ::prost::alloc::string::String,
6066    /// Optional user-defined metadata. Will be attached to a created Participant in the room.
6067    #[prost(string, tag="8")]
6068    pub participant_metadata: ::prost::alloc::string::String,
6069    /// Optional user-defined attributes. Will be attached to a created Participant in the room.
6070    #[prost(map="string, string", tag="9")]
6071    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6072    /// Optionally send following DTMF digits (extension codes) when making a call.
6073    /// Character 'w' can be used to add a 0.5 sec delay.
6074    #[prost(string, tag="5")]
6075    pub dtmf: ::prost::alloc::string::String,
6076    /// Optionally play dialtone in the room as an audible indicator for existing participants. The `play_ringtone` option is deprectated but has the same effect.
6077    #[deprecated]
6078    #[prost(bool, tag="6")]
6079    pub play_ringtone: bool,
6080    #[prost(bool, tag="13")]
6081    pub play_dialtone: bool,
6082    /// By default the From value (Phone number) is used for participant name/identity (if not set) and added to attributes.
6083    /// If true, a random value for identity will be used and numbers will be omitted from attributes.
6084    #[prost(bool, tag="10")]
6085    pub hide_phone_number: bool,
6086    /// These headers are sent as-is and may help identify this call as coming from LiveKit for the other SIP endpoint.
6087    #[prost(map="string, string", tag="16")]
6088    pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6089    /// Map SIP headers from 200 OK to sip.h.* participant attributes automatically.
6090    ///
6091    /// When the names of required headers is known, using headers_to_attributes is strongly recommended.
6092    ///
6093    /// When mapping 200 OK headers to follow-up request headers with attributes_to_headers map,
6094    /// lowercase header names should be used, for example: sip.h.x-custom-header.
6095    #[prost(enumeration="SipHeaderOptions", tag="17")]
6096    pub include_headers: i32,
6097    /// Max time for the callee to answer the call.
6098    #[prost(message, optional, tag="11")]
6099    pub ringing_timeout: ::core::option::Option<::pbjson_types::Duration>,
6100    /// Max call duration.
6101    #[prost(message, optional, tag="12")]
6102    pub max_call_duration: ::core::option::Option<::pbjson_types::Duration>,
6103    /// Enable voice isolation for the callee.
6104    #[prost(bool, tag="14")]
6105    pub krisp_enabled: bool,
6106    #[prost(enumeration="SipMediaEncryption", tag="18")]
6107    pub media_encryption: i32,
6108    /// Wait for the answer for the call before returning.
6109    #[prost(bool, tag="19")]
6110    pub wait_until_answered: bool,
6111    /// Optional display name for the 'From' SIP header.
6112    ///
6113    /// Cases:
6114    /// 1) Unspecified: Use legacy behavior - display name will be set to be the caller's number.
6115    /// 2) Empty string: Do not send a display name, which will result in a CNAM lookup downstream.
6116    /// 3) Non-empty: Use the specified value as the display name.
6117    #[prost(string, optional, tag="21")]
6118    pub display_name: ::core::option::Option<::prost::alloc::string::String>,
6119    /// NEXT ID: 23
6120    #[prost(message, optional, tag="22")]
6121    pub destination: ::core::option::Option<Destination>,
6122}
6123#[allow(clippy::derive_partial_eq_without_eq)]
6124#[derive(Clone, PartialEq, ::prost::Message)]
6125pub struct SipParticipantInfo {
6126    #[prost(string, tag="1")]
6127    pub participant_id: ::prost::alloc::string::String,
6128    #[prost(string, tag="2")]
6129    pub participant_identity: ::prost::alloc::string::String,
6130    #[prost(string, tag="3")]
6131    pub room_name: ::prost::alloc::string::String,
6132    #[prost(string, tag="4")]
6133    pub sip_call_id: ::prost::alloc::string::String,
6134}
6135#[allow(clippy::derive_partial_eq_without_eq)]
6136#[derive(Clone, PartialEq, ::prost::Message)]
6137pub struct TransferSipParticipantRequest {
6138    #[prost(string, tag="1")]
6139    pub participant_identity: ::prost::alloc::string::String,
6140    #[prost(string, tag="2")]
6141    pub room_name: ::prost::alloc::string::String,
6142    #[prost(string, tag="3")]
6143    pub transfer_to: ::prost::alloc::string::String,
6144    /// Optionally play dialtone to the SIP participant as an audible indicator of being transferred
6145    #[prost(bool, tag="4")]
6146    pub play_dialtone: bool,
6147    /// Add the following headers to the REFER SIP request.
6148    #[prost(map="string, string", tag="5")]
6149    pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6150    /// Max time for the transfer destination to answer the call.
6151    #[prost(message, optional, tag="6")]
6152    pub ringing_timeout: ::core::option::Option<::pbjson_types::Duration>,
6153}
6154#[allow(clippy::derive_partial_eq_without_eq)]
6155#[derive(Clone, PartialEq, ::prost::Message)]
6156pub struct SipCallInfo {
6157    #[prost(string, tag="1")]
6158    pub call_id: ::prost::alloc::string::String,
6159    #[prost(string, tag="2")]
6160    pub trunk_id: ::prost::alloc::string::String,
6161    #[prost(string, tag="16")]
6162    pub dispatch_rule_id: ::prost::alloc::string::String,
6163    #[prost(string, tag="17")]
6164    pub region: ::prost::alloc::string::String,
6165    #[prost(string, tag="3")]
6166    pub room_name: ::prost::alloc::string::String,
6167    /// ID of the current/previous room published to
6168    #[prost(string, tag="4")]
6169    pub room_id: ::prost::alloc::string::String,
6170    #[prost(string, tag="5")]
6171    pub participant_identity: ::prost::alloc::string::String,
6172    #[prost(map="string, string", tag="18")]
6173    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6174    #[prost(message, optional, tag="6")]
6175    pub from_uri: ::core::option::Option<SipUri>,
6176    #[prost(message, optional, tag="7")]
6177    pub to_uri: ::core::option::Option<SipUri>,
6178    #[deprecated]
6179    #[prost(int64, tag="9")]
6180    pub created_at: i64,
6181    #[deprecated]
6182    #[prost(int64, tag="10")]
6183    pub started_at: i64,
6184    #[deprecated]
6185    #[prost(int64, tag="11")]
6186    pub ended_at: i64,
6187    #[prost(enumeration="SipFeature", repeated, tag="14")]
6188    pub enabled_features: ::prost::alloc::vec::Vec<i32>,
6189    #[prost(enumeration="SipCallDirection", tag="15")]
6190    pub call_direction: i32,
6191    #[prost(enumeration="SipCallStatus", tag="8")]
6192    pub call_status: i32,
6193    #[prost(int64, tag="22")]
6194    pub created_at_ns: i64,
6195    #[prost(int64, tag="23")]
6196    pub started_at_ns: i64,
6197    #[prost(int64, tag="24")]
6198    pub ended_at_ns: i64,
6199    #[prost(enumeration="DisconnectReason", tag="12")]
6200    pub disconnect_reason: i32,
6201    #[prost(string, tag="13")]
6202    pub error: ::prost::alloc::string::String,
6203    #[prost(message, optional, tag="19")]
6204    pub call_status_code: ::core::option::Option<SipStatus>,
6205    #[prost(string, tag="20")]
6206    pub audio_codec: ::prost::alloc::string::String,
6207    #[prost(string, tag="21")]
6208    pub media_encryption: ::prost::alloc::string::String,
6209    #[prost(string, tag="25")]
6210    pub pcap_file_link: ::prost::alloc::string::String,
6211    #[prost(message, repeated, tag="26")]
6212    pub call_context: ::prost::alloc::vec::Vec<::pbjson_types::Any>,
6213    #[prost(message, optional, tag="27")]
6214    pub provider_info: ::core::option::Option<ProviderInfo>,
6215    #[prost(string, tag="28")]
6216    pub sip_call_id: ::prost::alloc::string::String,
6217}
6218#[allow(clippy::derive_partial_eq_without_eq)]
6219#[derive(Clone, PartialEq, ::prost::Message)]
6220pub struct SipTransferInfo {
6221    #[prost(string, tag="1")]
6222    pub transfer_id: ::prost::alloc::string::String,
6223    #[prost(string, tag="2")]
6224    pub call_id: ::prost::alloc::string::String,
6225    #[prost(string, tag="3")]
6226    pub transfer_to: ::prost::alloc::string::String,
6227    #[prost(int64, tag="4")]
6228    pub transfer_initiated_at_ns: i64,
6229    #[prost(int64, tag="5")]
6230    pub transfer_completed_at_ns: i64,
6231    #[prost(enumeration="SipTransferStatus", tag="6")]
6232    pub transfer_status: i32,
6233    #[prost(string, tag="7")]
6234    pub error: ::prost::alloc::string::String,
6235    #[prost(message, optional, tag="8")]
6236    pub transfer_status_code: ::core::option::Option<SipStatus>,
6237}
6238#[allow(clippy::derive_partial_eq_without_eq)]
6239#[derive(Clone, PartialEq, ::prost::Message)]
6240pub struct SipUri {
6241    #[prost(string, tag="1")]
6242    pub user: ::prost::alloc::string::String,
6243    #[prost(string, tag="2")]
6244    pub host: ::prost::alloc::string::String,
6245    #[prost(string, tag="3")]
6246    pub ip: ::prost::alloc::string::String,
6247    #[prost(uint32, tag="4")]
6248    pub port: u32,
6249    #[prost(enumeration="SipTransport", tag="5")]
6250    pub transport: i32,
6251}
6252#[allow(clippy::derive_partial_eq_without_eq)]
6253#[derive(Clone, PartialEq, ::prost::Message)]
6254pub struct Destination {
6255    #[prost(string, tag="1")]
6256    pub city: ::prost::alloc::string::String,
6257    #[prost(string, tag="2")]
6258    pub country: ::prost::alloc::string::String,
6259    #[prost(string, tag="3")]
6260    pub region: ::prost::alloc::string::String,
6261}
6262#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6263#[repr(i32)]
6264pub enum SipStatusCode {
6265    SipStatusUnknown = 0,
6266    SipStatusTrying = 100,
6267    SipStatusRinging = 180,
6268    SipStatusCallIsForwarded = 181,
6269    SipStatusQueued = 182,
6270    SipStatusSessionProgress = 183,
6271    SipStatusEarlyDialogTerminated = 199,
6272    SipStatusOk = 200,
6273    SipStatusAccepted = 202,
6274    SipStatusNoNotification = 204,
6275    SipStatusMultipleChoices = 300,
6276    SipStatusMovedPermanently = 301,
6277    SipStatusMovedTemporarily = 302,
6278    SipStatusUseProxy = 305,
6279    SipStatusAlternativeService = 380,
6280    SipStatusBadRequest = 400,
6281    SipStatusUnauthorized = 401,
6282    SipStatusPaymentRequired = 402,
6283    SipStatusForbidden = 403,
6284    SipStatusNotfound = 404,
6285    SipStatusMethodNotAllowed = 405,
6286    SipStatusNotAcceptable = 406,
6287    SipStatusProxyAuthRequired = 407,
6288    SipStatusRequestTimeout = 408,
6289    SipStatusConflict = 409,
6290    SipStatusGone = 410,
6291    SipStatusLengthRequired = 411,
6292    SipStatusConditionalRequestFailed = 412,
6293    SipStatusRequestEntityTooLarge = 413,
6294    SipStatusRequestUriTooLong = 414,
6295    SipStatusUnsupportedMediaType = 415,
6296    SipStatusRequestedRangeNotSatisfiable = 416,
6297    SipStatusUnknownResourcePriority = 417,
6298    SipStatusBadExtension = 420,
6299    SipStatusExtensionRequired = 421,
6300    SipStatusSessionIntervalTooSmall = 422,
6301    SipStatusIntervalTooBrief = 423,
6302    SipStatusBadLocationInformation = 424,
6303    SipStatusBadAlertMessage = 425,
6304    SipStatusUseIdentityHeader = 428,
6305    SipStatusProvideReferrerIdentity = 429,
6306    SipStatusFlowFailed = 430,
6307    SipStatusAnonymityDisallowed = 433,
6308    SipStatusBadIdentityInfo = 436,
6309    SipStatusUnsupportedCertificate = 437,
6310    SipStatusInvalidIdentityHeader = 438,
6311    SipStatusFirstHopLacksOutboundSupport = 439,
6312    SipStatusMaxBreadthExceeded = 440,
6313    SipStatusBadInfoPackage = 469,
6314    SipStatusConsentNeeded = 470,
6315    SipStatusTemporarilyUnavailable = 480,
6316    SipStatusCallTransactionDoesNotExists = 481,
6317    SipStatusLoopDetected = 482,
6318    SipStatusTooManyHops = 483,
6319    SipStatusAddressIncomplete = 484,
6320    SipStatusAmbiguous = 485,
6321    SipStatusBusyHere = 486,
6322    SipStatusRequestTerminated = 487,
6323    SipStatusNotAcceptableHere = 488,
6324    SipStatusBadEvent = 489,
6325    SipStatusRequestPending = 491,
6326    SipStatusUndecipherable = 493,
6327    SipStatusSecurityAgreementRequired = 494,
6328    SipStatusInternalServerError = 500,
6329    SipStatusNotImplemented = 501,
6330    SipStatusBadGateway = 502,
6331    SipStatusServiceUnavailable = 503,
6332    SipStatusGatewayTimeout = 504,
6333    SipStatusVersionNotSupported = 505,
6334    SipStatusMessageTooLarge = 513,
6335    SipStatusGlobalBusyEverywhere = 600,
6336    SipStatusGlobalDecline = 603,
6337    SipStatusGlobalDoesNotExistAnywhere = 604,
6338    SipStatusGlobalNotAcceptable = 606,
6339    SipStatusGlobalUnwanted = 607,
6340    SipStatusGlobalRejected = 608,
6341}
6342impl SipStatusCode {
6343    /// String value of the enum field names used in the ProtoBuf definition.
6344    ///
6345    /// The values are not transformed in any way and thus are considered stable
6346    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6347    pub fn as_str_name(&self) -> &'static str {
6348        match self {
6349            SipStatusCode::SipStatusUnknown => "SIP_STATUS_UNKNOWN",
6350            SipStatusCode::SipStatusTrying => "SIP_STATUS_TRYING",
6351            SipStatusCode::SipStatusRinging => "SIP_STATUS_RINGING",
6352            SipStatusCode::SipStatusCallIsForwarded => "SIP_STATUS_CALL_IS_FORWARDED",
6353            SipStatusCode::SipStatusQueued => "SIP_STATUS_QUEUED",
6354            SipStatusCode::SipStatusSessionProgress => "SIP_STATUS_SESSION_PROGRESS",
6355            SipStatusCode::SipStatusEarlyDialogTerminated => "SIP_STATUS_EARLY_DIALOG_TERMINATED",
6356            SipStatusCode::SipStatusOk => "SIP_STATUS_OK",
6357            SipStatusCode::SipStatusAccepted => "SIP_STATUS_ACCEPTED",
6358            SipStatusCode::SipStatusNoNotification => "SIP_STATUS_NO_NOTIFICATION",
6359            SipStatusCode::SipStatusMultipleChoices => "SIP_STATUS_MULTIPLE_CHOICES",
6360            SipStatusCode::SipStatusMovedPermanently => "SIP_STATUS_MOVED_PERMANENTLY",
6361            SipStatusCode::SipStatusMovedTemporarily => "SIP_STATUS_MOVED_TEMPORARILY",
6362            SipStatusCode::SipStatusUseProxy => "SIP_STATUS_USE_PROXY",
6363            SipStatusCode::SipStatusAlternativeService => "SIP_STATUS_ALTERNATIVE_SERVICE",
6364            SipStatusCode::SipStatusBadRequest => "SIP_STATUS_BAD_REQUEST",
6365            SipStatusCode::SipStatusUnauthorized => "SIP_STATUS_UNAUTHORIZED",
6366            SipStatusCode::SipStatusPaymentRequired => "SIP_STATUS_PAYMENT_REQUIRED",
6367            SipStatusCode::SipStatusForbidden => "SIP_STATUS_FORBIDDEN",
6368            SipStatusCode::SipStatusNotfound => "SIP_STATUS_NOTFOUND",
6369            SipStatusCode::SipStatusMethodNotAllowed => "SIP_STATUS_METHOD_NOT_ALLOWED",
6370            SipStatusCode::SipStatusNotAcceptable => "SIP_STATUS_NOT_ACCEPTABLE",
6371            SipStatusCode::SipStatusProxyAuthRequired => "SIP_STATUS_PROXY_AUTH_REQUIRED",
6372            SipStatusCode::SipStatusRequestTimeout => "SIP_STATUS_REQUEST_TIMEOUT",
6373            SipStatusCode::SipStatusConflict => "SIP_STATUS_CONFLICT",
6374            SipStatusCode::SipStatusGone => "SIP_STATUS_GONE",
6375            SipStatusCode::SipStatusLengthRequired => "SIP_STATUS_LENGTH_REQUIRED",
6376            SipStatusCode::SipStatusConditionalRequestFailed => "SIP_STATUS_CONDITIONAL_REQUEST_FAILED",
6377            SipStatusCode::SipStatusRequestEntityTooLarge => "SIP_STATUS_REQUEST_ENTITY_TOO_LARGE",
6378            SipStatusCode::SipStatusRequestUriTooLong => "SIP_STATUS_REQUEST_URI_TOO_LONG",
6379            SipStatusCode::SipStatusUnsupportedMediaType => "SIP_STATUS_UNSUPPORTED_MEDIA_TYPE",
6380            SipStatusCode::SipStatusRequestedRangeNotSatisfiable => "SIP_STATUS_REQUESTED_RANGE_NOT_SATISFIABLE",
6381            SipStatusCode::SipStatusUnknownResourcePriority => "SIP_STATUS_UNKNOWN_RESOURCE_PRIORITY",
6382            SipStatusCode::SipStatusBadExtension => "SIP_STATUS_BAD_EXTENSION",
6383            SipStatusCode::SipStatusExtensionRequired => "SIP_STATUS_EXTENSION_REQUIRED",
6384            SipStatusCode::SipStatusSessionIntervalTooSmall => "SIP_STATUS_SESSION_INTERVAL_TOO_SMALL",
6385            SipStatusCode::SipStatusIntervalTooBrief => "SIP_STATUS_INTERVAL_TOO_BRIEF",
6386            SipStatusCode::SipStatusBadLocationInformation => "SIP_STATUS_BAD_LOCATION_INFORMATION",
6387            SipStatusCode::SipStatusBadAlertMessage => "SIP_STATUS_BAD_ALERT_MESSAGE",
6388            SipStatusCode::SipStatusUseIdentityHeader => "SIP_STATUS_USE_IDENTITY_HEADER",
6389            SipStatusCode::SipStatusProvideReferrerIdentity => "SIP_STATUS_PROVIDE_REFERRER_IDENTITY",
6390            SipStatusCode::SipStatusFlowFailed => "SIP_STATUS_FLOW_FAILED",
6391            SipStatusCode::SipStatusAnonymityDisallowed => "SIP_STATUS_ANONYMITY_DISALLOWED",
6392            SipStatusCode::SipStatusBadIdentityInfo => "SIP_STATUS_BAD_IDENTITY_INFO",
6393            SipStatusCode::SipStatusUnsupportedCertificate => "SIP_STATUS_UNSUPPORTED_CERTIFICATE",
6394            SipStatusCode::SipStatusInvalidIdentityHeader => "SIP_STATUS_INVALID_IDENTITY_HEADER",
6395            SipStatusCode::SipStatusFirstHopLacksOutboundSupport => "SIP_STATUS_FIRST_HOP_LACKS_OUTBOUND_SUPPORT",
6396            SipStatusCode::SipStatusMaxBreadthExceeded => "SIP_STATUS_MAX_BREADTH_EXCEEDED",
6397            SipStatusCode::SipStatusBadInfoPackage => "SIP_STATUS_BAD_INFO_PACKAGE",
6398            SipStatusCode::SipStatusConsentNeeded => "SIP_STATUS_CONSENT_NEEDED",
6399            SipStatusCode::SipStatusTemporarilyUnavailable => "SIP_STATUS_TEMPORARILY_UNAVAILABLE",
6400            SipStatusCode::SipStatusCallTransactionDoesNotExists => "SIP_STATUS_CALL_TRANSACTION_DOES_NOT_EXISTS",
6401            SipStatusCode::SipStatusLoopDetected => "SIP_STATUS_LOOP_DETECTED",
6402            SipStatusCode::SipStatusTooManyHops => "SIP_STATUS_TOO_MANY_HOPS",
6403            SipStatusCode::SipStatusAddressIncomplete => "SIP_STATUS_ADDRESS_INCOMPLETE",
6404            SipStatusCode::SipStatusAmbiguous => "SIP_STATUS_AMBIGUOUS",
6405            SipStatusCode::SipStatusBusyHere => "SIP_STATUS_BUSY_HERE",
6406            SipStatusCode::SipStatusRequestTerminated => "SIP_STATUS_REQUEST_TERMINATED",
6407            SipStatusCode::SipStatusNotAcceptableHere => "SIP_STATUS_NOT_ACCEPTABLE_HERE",
6408            SipStatusCode::SipStatusBadEvent => "SIP_STATUS_BAD_EVENT",
6409            SipStatusCode::SipStatusRequestPending => "SIP_STATUS_REQUEST_PENDING",
6410            SipStatusCode::SipStatusUndecipherable => "SIP_STATUS_UNDECIPHERABLE",
6411            SipStatusCode::SipStatusSecurityAgreementRequired => "SIP_STATUS_SECURITY_AGREEMENT_REQUIRED",
6412            SipStatusCode::SipStatusInternalServerError => "SIP_STATUS_INTERNAL_SERVER_ERROR",
6413            SipStatusCode::SipStatusNotImplemented => "SIP_STATUS_NOT_IMPLEMENTED",
6414            SipStatusCode::SipStatusBadGateway => "SIP_STATUS_BAD_GATEWAY",
6415            SipStatusCode::SipStatusServiceUnavailable => "SIP_STATUS_SERVICE_UNAVAILABLE",
6416            SipStatusCode::SipStatusGatewayTimeout => "SIP_STATUS_GATEWAY_TIMEOUT",
6417            SipStatusCode::SipStatusVersionNotSupported => "SIP_STATUS_VERSION_NOT_SUPPORTED",
6418            SipStatusCode::SipStatusMessageTooLarge => "SIP_STATUS_MESSAGE_TOO_LARGE",
6419            SipStatusCode::SipStatusGlobalBusyEverywhere => "SIP_STATUS_GLOBAL_BUSY_EVERYWHERE",
6420            SipStatusCode::SipStatusGlobalDecline => "SIP_STATUS_GLOBAL_DECLINE",
6421            SipStatusCode::SipStatusGlobalDoesNotExistAnywhere => "SIP_STATUS_GLOBAL_DOES_NOT_EXIST_ANYWHERE",
6422            SipStatusCode::SipStatusGlobalNotAcceptable => "SIP_STATUS_GLOBAL_NOT_ACCEPTABLE",
6423            SipStatusCode::SipStatusGlobalUnwanted => "SIP_STATUS_GLOBAL_UNWANTED",
6424            SipStatusCode::SipStatusGlobalRejected => "SIP_STATUS_GLOBAL_REJECTED",
6425        }
6426    }
6427    /// Creates an enum from field names used in the ProtoBuf definition.
6428    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6429        match value {
6430            "SIP_STATUS_UNKNOWN" => Some(Self::SipStatusUnknown),
6431            "SIP_STATUS_TRYING" => Some(Self::SipStatusTrying),
6432            "SIP_STATUS_RINGING" => Some(Self::SipStatusRinging),
6433            "SIP_STATUS_CALL_IS_FORWARDED" => Some(Self::SipStatusCallIsForwarded),
6434            "SIP_STATUS_QUEUED" => Some(Self::SipStatusQueued),
6435            "SIP_STATUS_SESSION_PROGRESS" => Some(Self::SipStatusSessionProgress),
6436            "SIP_STATUS_EARLY_DIALOG_TERMINATED" => Some(Self::SipStatusEarlyDialogTerminated),
6437            "SIP_STATUS_OK" => Some(Self::SipStatusOk),
6438            "SIP_STATUS_ACCEPTED" => Some(Self::SipStatusAccepted),
6439            "SIP_STATUS_NO_NOTIFICATION" => Some(Self::SipStatusNoNotification),
6440            "SIP_STATUS_MULTIPLE_CHOICES" => Some(Self::SipStatusMultipleChoices),
6441            "SIP_STATUS_MOVED_PERMANENTLY" => Some(Self::SipStatusMovedPermanently),
6442            "SIP_STATUS_MOVED_TEMPORARILY" => Some(Self::SipStatusMovedTemporarily),
6443            "SIP_STATUS_USE_PROXY" => Some(Self::SipStatusUseProxy),
6444            "SIP_STATUS_ALTERNATIVE_SERVICE" => Some(Self::SipStatusAlternativeService),
6445            "SIP_STATUS_BAD_REQUEST" => Some(Self::SipStatusBadRequest),
6446            "SIP_STATUS_UNAUTHORIZED" => Some(Self::SipStatusUnauthorized),
6447            "SIP_STATUS_PAYMENT_REQUIRED" => Some(Self::SipStatusPaymentRequired),
6448            "SIP_STATUS_FORBIDDEN" => Some(Self::SipStatusForbidden),
6449            "SIP_STATUS_NOTFOUND" => Some(Self::SipStatusNotfound),
6450            "SIP_STATUS_METHOD_NOT_ALLOWED" => Some(Self::SipStatusMethodNotAllowed),
6451            "SIP_STATUS_NOT_ACCEPTABLE" => Some(Self::SipStatusNotAcceptable),
6452            "SIP_STATUS_PROXY_AUTH_REQUIRED" => Some(Self::SipStatusProxyAuthRequired),
6453            "SIP_STATUS_REQUEST_TIMEOUT" => Some(Self::SipStatusRequestTimeout),
6454            "SIP_STATUS_CONFLICT" => Some(Self::SipStatusConflict),
6455            "SIP_STATUS_GONE" => Some(Self::SipStatusGone),
6456            "SIP_STATUS_LENGTH_REQUIRED" => Some(Self::SipStatusLengthRequired),
6457            "SIP_STATUS_CONDITIONAL_REQUEST_FAILED" => Some(Self::SipStatusConditionalRequestFailed),
6458            "SIP_STATUS_REQUEST_ENTITY_TOO_LARGE" => Some(Self::SipStatusRequestEntityTooLarge),
6459            "SIP_STATUS_REQUEST_URI_TOO_LONG" => Some(Self::SipStatusRequestUriTooLong),
6460            "SIP_STATUS_UNSUPPORTED_MEDIA_TYPE" => Some(Self::SipStatusUnsupportedMediaType),
6461            "SIP_STATUS_REQUESTED_RANGE_NOT_SATISFIABLE" => Some(Self::SipStatusRequestedRangeNotSatisfiable),
6462            "SIP_STATUS_UNKNOWN_RESOURCE_PRIORITY" => Some(Self::SipStatusUnknownResourcePriority),
6463            "SIP_STATUS_BAD_EXTENSION" => Some(Self::SipStatusBadExtension),
6464            "SIP_STATUS_EXTENSION_REQUIRED" => Some(Self::SipStatusExtensionRequired),
6465            "SIP_STATUS_SESSION_INTERVAL_TOO_SMALL" => Some(Self::SipStatusSessionIntervalTooSmall),
6466            "SIP_STATUS_INTERVAL_TOO_BRIEF" => Some(Self::SipStatusIntervalTooBrief),
6467            "SIP_STATUS_BAD_LOCATION_INFORMATION" => Some(Self::SipStatusBadLocationInformation),
6468            "SIP_STATUS_BAD_ALERT_MESSAGE" => Some(Self::SipStatusBadAlertMessage),
6469            "SIP_STATUS_USE_IDENTITY_HEADER" => Some(Self::SipStatusUseIdentityHeader),
6470            "SIP_STATUS_PROVIDE_REFERRER_IDENTITY" => Some(Self::SipStatusProvideReferrerIdentity),
6471            "SIP_STATUS_FLOW_FAILED" => Some(Self::SipStatusFlowFailed),
6472            "SIP_STATUS_ANONYMITY_DISALLOWED" => Some(Self::SipStatusAnonymityDisallowed),
6473            "SIP_STATUS_BAD_IDENTITY_INFO" => Some(Self::SipStatusBadIdentityInfo),
6474            "SIP_STATUS_UNSUPPORTED_CERTIFICATE" => Some(Self::SipStatusUnsupportedCertificate),
6475            "SIP_STATUS_INVALID_IDENTITY_HEADER" => Some(Self::SipStatusInvalidIdentityHeader),
6476            "SIP_STATUS_FIRST_HOP_LACKS_OUTBOUND_SUPPORT" => Some(Self::SipStatusFirstHopLacksOutboundSupport),
6477            "SIP_STATUS_MAX_BREADTH_EXCEEDED" => Some(Self::SipStatusMaxBreadthExceeded),
6478            "SIP_STATUS_BAD_INFO_PACKAGE" => Some(Self::SipStatusBadInfoPackage),
6479            "SIP_STATUS_CONSENT_NEEDED" => Some(Self::SipStatusConsentNeeded),
6480            "SIP_STATUS_TEMPORARILY_UNAVAILABLE" => Some(Self::SipStatusTemporarilyUnavailable),
6481            "SIP_STATUS_CALL_TRANSACTION_DOES_NOT_EXISTS" => Some(Self::SipStatusCallTransactionDoesNotExists),
6482            "SIP_STATUS_LOOP_DETECTED" => Some(Self::SipStatusLoopDetected),
6483            "SIP_STATUS_TOO_MANY_HOPS" => Some(Self::SipStatusTooManyHops),
6484            "SIP_STATUS_ADDRESS_INCOMPLETE" => Some(Self::SipStatusAddressIncomplete),
6485            "SIP_STATUS_AMBIGUOUS" => Some(Self::SipStatusAmbiguous),
6486            "SIP_STATUS_BUSY_HERE" => Some(Self::SipStatusBusyHere),
6487            "SIP_STATUS_REQUEST_TERMINATED" => Some(Self::SipStatusRequestTerminated),
6488            "SIP_STATUS_NOT_ACCEPTABLE_HERE" => Some(Self::SipStatusNotAcceptableHere),
6489            "SIP_STATUS_BAD_EVENT" => Some(Self::SipStatusBadEvent),
6490            "SIP_STATUS_REQUEST_PENDING" => Some(Self::SipStatusRequestPending),
6491            "SIP_STATUS_UNDECIPHERABLE" => Some(Self::SipStatusUndecipherable),
6492            "SIP_STATUS_SECURITY_AGREEMENT_REQUIRED" => Some(Self::SipStatusSecurityAgreementRequired),
6493            "SIP_STATUS_INTERNAL_SERVER_ERROR" => Some(Self::SipStatusInternalServerError),
6494            "SIP_STATUS_NOT_IMPLEMENTED" => Some(Self::SipStatusNotImplemented),
6495            "SIP_STATUS_BAD_GATEWAY" => Some(Self::SipStatusBadGateway),
6496            "SIP_STATUS_SERVICE_UNAVAILABLE" => Some(Self::SipStatusServiceUnavailable),
6497            "SIP_STATUS_GATEWAY_TIMEOUT" => Some(Self::SipStatusGatewayTimeout),
6498            "SIP_STATUS_VERSION_NOT_SUPPORTED" => Some(Self::SipStatusVersionNotSupported),
6499            "SIP_STATUS_MESSAGE_TOO_LARGE" => Some(Self::SipStatusMessageTooLarge),
6500            "SIP_STATUS_GLOBAL_BUSY_EVERYWHERE" => Some(Self::SipStatusGlobalBusyEverywhere),
6501            "SIP_STATUS_GLOBAL_DECLINE" => Some(Self::SipStatusGlobalDecline),
6502            "SIP_STATUS_GLOBAL_DOES_NOT_EXIST_ANYWHERE" => Some(Self::SipStatusGlobalDoesNotExistAnywhere),
6503            "SIP_STATUS_GLOBAL_NOT_ACCEPTABLE" => Some(Self::SipStatusGlobalNotAcceptable),
6504            "SIP_STATUS_GLOBAL_UNWANTED" => Some(Self::SipStatusGlobalUnwanted),
6505            "SIP_STATUS_GLOBAL_REJECTED" => Some(Self::SipStatusGlobalRejected),
6506            _ => None,
6507        }
6508    }
6509}
6510#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6511#[repr(i32)]
6512pub enum SipTransport {
6513    Auto = 0,
6514    Udp = 1,
6515    Tcp = 2,
6516    Tls = 3,
6517}
6518impl SipTransport {
6519    /// String value of the enum field names used in the ProtoBuf definition.
6520    ///
6521    /// The values are not transformed in any way and thus are considered stable
6522    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6523    pub fn as_str_name(&self) -> &'static str {
6524        match self {
6525            SipTransport::Auto => "SIP_TRANSPORT_AUTO",
6526            SipTransport::Udp => "SIP_TRANSPORT_UDP",
6527            SipTransport::Tcp => "SIP_TRANSPORT_TCP",
6528            SipTransport::Tls => "SIP_TRANSPORT_TLS",
6529        }
6530    }
6531    /// Creates an enum from field names used in the ProtoBuf definition.
6532    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6533        match value {
6534            "SIP_TRANSPORT_AUTO" => Some(Self::Auto),
6535            "SIP_TRANSPORT_UDP" => Some(Self::Udp),
6536            "SIP_TRANSPORT_TCP" => Some(Self::Tcp),
6537            "SIP_TRANSPORT_TLS" => Some(Self::Tls),
6538            _ => None,
6539        }
6540    }
6541}
6542#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6543#[repr(i32)]
6544pub enum SipHeaderOptions {
6545    /// do not map any headers, except ones mapped explicitly
6546    SipNoHeaders = 0,
6547    /// map all X-* headers to sip.h.x-* attributes
6548    SipXHeaders = 1,
6549    /// map all headers to sip.h.* attributes
6550    SipAllHeaders = 2,
6551}
6552impl SipHeaderOptions {
6553    /// String value of the enum field names used in the ProtoBuf definition.
6554    ///
6555    /// The values are not transformed in any way and thus are considered stable
6556    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6557    pub fn as_str_name(&self) -> &'static str {
6558        match self {
6559            SipHeaderOptions::SipNoHeaders => "SIP_NO_HEADERS",
6560            SipHeaderOptions::SipXHeaders => "SIP_X_HEADERS",
6561            SipHeaderOptions::SipAllHeaders => "SIP_ALL_HEADERS",
6562        }
6563    }
6564    /// Creates an enum from field names used in the ProtoBuf definition.
6565    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6566        match value {
6567            "SIP_NO_HEADERS" => Some(Self::SipNoHeaders),
6568            "SIP_X_HEADERS" => Some(Self::SipXHeaders),
6569            "SIP_ALL_HEADERS" => Some(Self::SipAllHeaders),
6570            _ => None,
6571        }
6572    }
6573}
6574#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6575#[repr(i32)]
6576pub enum SipMediaEncryption {
6577    /// do not enable encryption
6578    SipMediaEncryptDisable = 0,
6579    /// use encryption if available
6580    SipMediaEncryptAllow = 1,
6581    /// require encryption
6582    SipMediaEncryptRequire = 2,
6583}
6584impl SipMediaEncryption {
6585    /// String value of the enum field names used in the ProtoBuf definition.
6586    ///
6587    /// The values are not transformed in any way and thus are considered stable
6588    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6589    pub fn as_str_name(&self) -> &'static str {
6590        match self {
6591            SipMediaEncryption::SipMediaEncryptDisable => "SIP_MEDIA_ENCRYPT_DISABLE",
6592            SipMediaEncryption::SipMediaEncryptAllow => "SIP_MEDIA_ENCRYPT_ALLOW",
6593            SipMediaEncryption::SipMediaEncryptRequire => "SIP_MEDIA_ENCRYPT_REQUIRE",
6594        }
6595    }
6596    /// Creates an enum from field names used in the ProtoBuf definition.
6597    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6598        match value {
6599            "SIP_MEDIA_ENCRYPT_DISABLE" => Some(Self::SipMediaEncryptDisable),
6600            "SIP_MEDIA_ENCRYPT_ALLOW" => Some(Self::SipMediaEncryptAllow),
6601            "SIP_MEDIA_ENCRYPT_REQUIRE" => Some(Self::SipMediaEncryptRequire),
6602            _ => None,
6603        }
6604    }
6605}
6606#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6607#[repr(i32)]
6608pub enum ProviderType {
6609    Unknown = 0,
6610    /// Internally implemented
6611    Internal = 1,
6612    /// Vendor provided
6613    External = 2,
6614}
6615impl ProviderType {
6616    /// String value of the enum field names used in the ProtoBuf definition.
6617    ///
6618    /// The values are not transformed in any way and thus are considered stable
6619    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6620    pub fn as_str_name(&self) -> &'static str {
6621        match self {
6622            ProviderType::Unknown => "PROVIDER_TYPE_UNKNOWN",
6623            ProviderType::Internal => "PROVIDER_TYPE_INTERNAL",
6624            ProviderType::External => "PROVIDER_TYPE_EXTERNAL",
6625        }
6626    }
6627    /// Creates an enum from field names used in the ProtoBuf definition.
6628    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6629        match value {
6630            "PROVIDER_TYPE_UNKNOWN" => Some(Self::Unknown),
6631            "PROVIDER_TYPE_INTERNAL" => Some(Self::Internal),
6632            "PROVIDER_TYPE_EXTERNAL" => Some(Self::External),
6633            _ => None,
6634        }
6635    }
6636}
6637#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6638#[repr(i32)]
6639pub enum SipCallStatus {
6640    /// Incoming call is being handled by the SIP service. The SIP participant hasn't joined a LiveKit room yet
6641    ScsCallIncoming = 0,
6642    /// SIP participant for outgoing call has been created. The SIP outgoing call is being established
6643    ScsParticipantJoined = 1,
6644    /// Call is ongoing. SIP participant is active in the LiveKit room
6645    ScsActive = 2,
6646    /// Call has ended
6647    ScsDisconnected = 3,
6648    /// Call has ended or never succeeded because of an error
6649    ScsError = 4,
6650}
6651impl SipCallStatus {
6652    /// String value of the enum field names used in the ProtoBuf definition.
6653    ///
6654    /// The values are not transformed in any way and thus are considered stable
6655    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6656    pub fn as_str_name(&self) -> &'static str {
6657        match self {
6658            SipCallStatus::ScsCallIncoming => "SCS_CALL_INCOMING",
6659            SipCallStatus::ScsParticipantJoined => "SCS_PARTICIPANT_JOINED",
6660            SipCallStatus::ScsActive => "SCS_ACTIVE",
6661            SipCallStatus::ScsDisconnected => "SCS_DISCONNECTED",
6662            SipCallStatus::ScsError => "SCS_ERROR",
6663        }
6664    }
6665    /// Creates an enum from field names used in the ProtoBuf definition.
6666    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6667        match value {
6668            "SCS_CALL_INCOMING" => Some(Self::ScsCallIncoming),
6669            "SCS_PARTICIPANT_JOINED" => Some(Self::ScsParticipantJoined),
6670            "SCS_ACTIVE" => Some(Self::ScsActive),
6671            "SCS_DISCONNECTED" => Some(Self::ScsDisconnected),
6672            "SCS_ERROR" => Some(Self::ScsError),
6673            _ => None,
6674        }
6675    }
6676}
6677#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6678#[repr(i32)]
6679pub enum SipTransferStatus {
6680    StsTransferOngoing = 0,
6681    StsTransferFailed = 1,
6682    StsTransferSuccessful = 2,
6683}
6684impl SipTransferStatus {
6685    /// String value of the enum field names used in the ProtoBuf definition.
6686    ///
6687    /// The values are not transformed in any way and thus are considered stable
6688    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6689    pub fn as_str_name(&self) -> &'static str {
6690        match self {
6691            SipTransferStatus::StsTransferOngoing => "STS_TRANSFER_ONGOING",
6692            SipTransferStatus::StsTransferFailed => "STS_TRANSFER_FAILED",
6693            SipTransferStatus::StsTransferSuccessful => "STS_TRANSFER_SUCCESSFUL",
6694        }
6695    }
6696    /// Creates an enum from field names used in the ProtoBuf definition.
6697    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6698        match value {
6699            "STS_TRANSFER_ONGOING" => Some(Self::StsTransferOngoing),
6700            "STS_TRANSFER_FAILED" => Some(Self::StsTransferFailed),
6701            "STS_TRANSFER_SUCCESSFUL" => Some(Self::StsTransferSuccessful),
6702            _ => None,
6703        }
6704    }
6705}
6706#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6707#[repr(i32)]
6708pub enum SipFeature {
6709    None = 0,
6710    KrispEnabled = 1,
6711}
6712impl SipFeature {
6713    /// String value of the enum field names used in the ProtoBuf definition.
6714    ///
6715    /// The values are not transformed in any way and thus are considered stable
6716    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6717    pub fn as_str_name(&self) -> &'static str {
6718        match self {
6719            SipFeature::None => "NONE",
6720            SipFeature::KrispEnabled => "KRISP_ENABLED",
6721        }
6722    }
6723    /// Creates an enum from field names used in the ProtoBuf definition.
6724    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6725        match value {
6726            "NONE" => Some(Self::None),
6727            "KRISP_ENABLED" => Some(Self::KrispEnabled),
6728            _ => None,
6729        }
6730    }
6731}
6732#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6733#[repr(i32)]
6734pub enum SipCallDirection {
6735    ScdUnknown = 0,
6736    ScdInbound = 1,
6737    ScdOutbound = 2,
6738}
6739impl SipCallDirection {
6740    /// String value of the enum field names used in the ProtoBuf definition.
6741    ///
6742    /// The values are not transformed in any way and thus are considered stable
6743    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6744    pub fn as_str_name(&self) -> &'static str {
6745        match self {
6746            SipCallDirection::ScdUnknown => "SCD_UNKNOWN",
6747            SipCallDirection::ScdInbound => "SCD_INBOUND",
6748            SipCallDirection::ScdOutbound => "SCD_OUTBOUND",
6749        }
6750    }
6751    /// Creates an enum from field names used in the ProtoBuf definition.
6752    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6753        match value {
6754            "SCD_UNKNOWN" => Some(Self::ScdUnknown),
6755            "SCD_INBOUND" => Some(Self::ScdInbound),
6756            "SCD_OUTBOUND" => Some(Self::ScdOutbound),
6757            _ => None,
6758        }
6759    }
6760}
6761#[allow(clippy::derive_partial_eq_without_eq)]
6762#[derive(Clone, PartialEq, ::prost::Message)]
6763pub struct DialWhatsAppCallRequest {
6764    /// Required - The phone number id of the business that is initiating the call
6765    #[prost(string, tag="1")]
6766    pub whatsapp_phone_number_id: ::prost::alloc::string::String,
6767    /// Required - The number of the user that is supossed to receive the call
6768    #[prost(string, tag="2")]
6769    pub whatsapp_to_phone_number: ::prost::alloc::string::String,
6770    /// Required - The API key of the business that is initiating the call
6771    #[prost(string, tag="3")]
6772    pub whatsapp_api_key: ::prost::alloc::string::String,
6773    /// Required - WhatsApp Cloud API version, eg: 23.0, 24.0, etc.
6774    #[prost(string, tag="12")]
6775    pub whatsapp_cloud_api_version: ::prost::alloc::string::String,
6776    /// Optional - An arbitrary string you can pass in that is useful for tracking and logging purposes.
6777    #[prost(string, tag="4")]
6778    pub whatsapp_biz_opaque_callback_data: ::prost::alloc::string::String,
6779    /// Optional - What LiveKit room should this participant be connected too
6780    #[prost(string, tag="5")]
6781    pub room_name: ::prost::alloc::string::String,
6782    /// Optional - Agents to dispatch the call to
6783    #[prost(message, repeated, tag="6")]
6784    pub agents: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
6785    /// Optional - Identity of the participant in LiveKit room
6786    /// This is used for logging purposes, so it is advised to not put PII in this field.
6787    #[prost(string, tag="7")]
6788    pub participant_identity: ::prost::alloc::string::String,
6789    /// Optional - Name of the participant in LiveKit room
6790    #[prost(string, tag="8")]
6791    pub participant_name: ::prost::alloc::string::String,
6792    /// Optional - User-defined metadata. Will be attached to a created Participant in the room.
6793    #[prost(string, tag="9")]
6794    pub participant_metadata: ::prost::alloc::string::String,
6795    /// Optional - User-defined attributes. Will be attached to a created Participant in the room.
6796    #[prost(map="string, string", tag="10")]
6797    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6798    /// Optional - Country where the call terminates as ISO 3166-1 alpha-2 (<https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2>). This will be used by the livekit infrastructure to route calls.
6799    ///
6800    /// Next - 13
6801    #[prost(string, tag="11")]
6802    pub destination_country: ::prost::alloc::string::String,
6803}
6804#[allow(clippy::derive_partial_eq_without_eq)]
6805#[derive(Clone, PartialEq, ::prost::Message)]
6806pub struct DialWhatsAppCallResponse {
6807    /// Call ID sent by Meta
6808    #[prost(string, tag="1")]
6809    pub whatsapp_call_id: ::prost::alloc::string::String,
6810    /// The name of the LiveKit room that the call is connected to
6811    #[prost(string, tag="2")]
6812    pub room_name: ::prost::alloc::string::String,
6813}
6814#[allow(clippy::derive_partial_eq_without_eq)]
6815#[derive(Clone, PartialEq, ::prost::Message)]
6816pub struct DisconnectWhatsAppCallRequest {
6817    /// Required - Call ID sent by Meta
6818    #[prost(string, tag="1")]
6819    pub whatsapp_call_id: ::prost::alloc::string::String,
6820    /// The API key of the whatsapp business.
6821    /// Required if the DisconnectReason is BUSINESS_INITIATED.
6822    /// Optional for  USER_INITIATED as no API call to WhatsApp is needed.
6823    #[prost(string, tag="2")]
6824    pub whatsapp_api_key: ::prost::alloc::string::String,
6825    /// The reason for disconnecting the call
6826    #[prost(enumeration="disconnect_whats_app_call_request::DisconnectReason", tag="3")]
6827    pub disconnect_reason: i32,
6828}
6829/// Nested message and enum types in `DisconnectWhatsAppCallRequest`.
6830pub mod disconnect_whats_app_call_request {
6831    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6832    #[repr(i32)]
6833    pub enum DisconnectReason {
6834        /// The call is being disconnected by the business
6835        BusinessInitiated = 0,
6836        /// The call is disconnected by the user.
6837        /// This can be tracked as part of call terminate webhook
6838        /// <https://developers.facebook.com/documentation/business-messaging/whatsapp/calling/user-initiated-calls#call-terminate-webhook>
6839        /// Note that this webhook will also be sent when the call is disconnected by the business.
6840        /// Calling the API twice in such cases will result in an error.
6841        UserInitiated = 1,
6842    }
6843    impl DisconnectReason {
6844        /// String value of the enum field names used in the ProtoBuf definition.
6845        ///
6846        /// The values are not transformed in any way and thus are considered stable
6847        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6848        pub fn as_str_name(&self) -> &'static str {
6849            match self {
6850                DisconnectReason::BusinessInitiated => "BUSINESS_INITIATED",
6851                DisconnectReason::UserInitiated => "USER_INITIATED",
6852            }
6853        }
6854        /// Creates an enum from field names used in the ProtoBuf definition.
6855        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6856            match value {
6857                "BUSINESS_INITIATED" => Some(Self::BusinessInitiated),
6858                "USER_INITIATED" => Some(Self::UserInitiated),
6859                _ => None,
6860            }
6861        }
6862    }
6863}
6864#[allow(clippy::derive_partial_eq_without_eq)]
6865#[derive(Clone, PartialEq, ::prost::Message)]
6866pub struct DisconnectWhatsAppCallResponse {
6867}
6868#[allow(clippy::derive_partial_eq_without_eq)]
6869#[derive(Clone, PartialEq, ::prost::Message)]
6870pub struct ConnectWhatsAppCallRequest {
6871    /// Required - Call ID sent by Meta
6872    #[prost(string, tag="1")]
6873    pub whatsapp_call_id: ::prost::alloc::string::String,
6874    /// Required - The call connect webhook comes with SDP from Meta
6875    /// It is the answer SDP for a business initiated call
6876    #[prost(message, optional, tag="2")]
6877    pub sdp: ::core::option::Option<SessionDescription>,
6878}
6879#[allow(clippy::derive_partial_eq_without_eq)]
6880#[derive(Clone, PartialEq, ::prost::Message)]
6881pub struct ConnectWhatsAppCallResponse {
6882}
6883#[allow(clippy::derive_partial_eq_without_eq)]
6884#[derive(Clone, PartialEq, ::prost::Message)]
6885pub struct AcceptWhatsAppCallRequest {
6886    /// Required - The phone number id of the business that is conencting the call
6887    #[prost(string, tag="1")]
6888    pub whatsapp_phone_number_id: ::prost::alloc::string::String,
6889    /// Required - The API key of the business that is connecting the call
6890    #[prost(string, tag="2")]
6891    pub whatsapp_api_key: ::prost::alloc::string::String,
6892    /// Required - WhatsApp Cloud API version, eg: 23.0, 24.0, etc.
6893    #[prost(string, tag="13")]
6894    pub whatsapp_cloud_api_version: ::prost::alloc::string::String,
6895    /// Required - Call ID sent by Meta
6896    #[prost(string, tag="3")]
6897    pub whatsapp_call_id: ::prost::alloc::string::String,
6898    /// Optional - An arbitrary string you can pass in that is useful for tracking and logging purposes.
6899    #[prost(string, tag="4")]
6900    pub whatsapp_biz_opaque_callback_data: ::prost::alloc::string::String,
6901    /// Required - The call accept webhook comes with SDP from Meta
6902    /// It is the for a user initiated call
6903    #[prost(message, optional, tag="5")]
6904    pub sdp: ::core::option::Option<SessionDescription>,
6905    /// Optional - What LiveKit room should this participant be connected too
6906    #[prost(string, tag="6")]
6907    pub room_name: ::prost::alloc::string::String,
6908    /// Optional - Agents to dispatch the call to
6909    #[prost(message, repeated, tag="7")]
6910    pub agents: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
6911    /// Optional - Identity of the participant in LiveKit room
6912    /// This is used for logging purposes, so it is advised to not put PII in this field.
6913    #[prost(string, tag="8")]
6914    pub participant_identity: ::prost::alloc::string::String,
6915    /// Optional - Name of the participant in LiveKit room
6916    #[prost(string, tag="9")]
6917    pub participant_name: ::prost::alloc::string::String,
6918    /// Optional - User-defined metadata. Will be attached to a created Participant in the room.
6919    #[prost(string, tag="10")]
6920    pub participant_metadata: ::prost::alloc::string::String,
6921    /// Optional - User-defined attributes. Will be attached to a created Participant in the room.
6922    #[prost(map="string, string", tag="11")]
6923    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6924    /// Optional - Country where the call terminates as ISO 3166-1 alpha-2 (<https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2>). This will be used by the livekit infrastructure to route calls.
6925    ///
6926    /// Next - 14
6927    #[prost(string, tag="12")]
6928    pub destination_country: ::prost::alloc::string::String,
6929}
6930#[allow(clippy::derive_partial_eq_without_eq)]
6931#[derive(Clone, PartialEq, ::prost::Message)]
6932pub struct AcceptWhatsAppCallResponse {
6933    /// The name of the LiveKit room that the call is connected to
6934    #[prost(string, tag="1")]
6935    pub room_name: ::prost::alloc::string::String,
6936}
6937#[allow(clippy::derive_partial_eq_without_eq)]
6938#[derive(Clone, PartialEq, ::prost::Message)]
6939pub struct WhatsAppCall {
6940    /// list of call ids that are currently active
6941    #[prost(string, tag="1")]
6942    pub whatsapp_call_id: ::prost::alloc::string::String,
6943    /// Direction of the call
6944    #[prost(enumeration="WhatsAppCallDirection", tag="2")]
6945    pub direction: i32,
6946}
6947#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6948#[repr(i32)]
6949pub enum WhatsAppCallDirection {
6950    WhatsappCallDirectionInbound = 0,
6951    WhatsappCallDirectionOutbound = 2,
6952}
6953impl WhatsAppCallDirection {
6954    /// String value of the enum field names used in the ProtoBuf definition.
6955    ///
6956    /// The values are not transformed in any way and thus are considered stable
6957    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6958    pub fn as_str_name(&self) -> &'static str {
6959        match self {
6960            WhatsAppCallDirection::WhatsappCallDirectionInbound => "WHATSAPP_CALL_DIRECTION_INBOUND",
6961            WhatsAppCallDirection::WhatsappCallDirectionOutbound => "WHATSAPP_CALL_DIRECTION_OUTBOUND",
6962        }
6963    }
6964    /// Creates an enum from field names used in the ProtoBuf definition.
6965    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6966        match value {
6967            "WHATSAPP_CALL_DIRECTION_INBOUND" => Some(Self::WhatsappCallDirectionInbound),
6968            "WHATSAPP_CALL_DIRECTION_OUTBOUND" => Some(Self::WhatsappCallDirectionOutbound),
6969            _ => None,
6970        }
6971    }
6972}
6973#[allow(clippy::derive_partial_eq_without_eq)]
6974#[derive(Clone, PartialEq, ::prost::Message)]
6975pub struct ConnectTwilioCallRequest {
6976    /// The Direction of the call
6977    #[prost(enumeration="connect_twilio_call_request::TwilioCallDirection", tag="1")]
6978    pub twilio_call_direction: i32,
6979    /// What LiveKit room should this call be connected to
6980    #[prost(string, tag="2")]
6981    pub room_name: ::prost::alloc::string::String,
6982    /// Optional agents to dispatch the call to
6983    #[prost(message, repeated, tag="3")]
6984    pub agents: ::prost::alloc::vec::Vec<RoomAgentDispatch>,
6985    /// Optional identity of the participant in LiveKit room
6986    /// This is used for logging purposes, so it is advised to not put PII in this field.
6987    #[prost(string, tag="4")]
6988    pub participant_identity: ::prost::alloc::string::String,
6989    /// Optional name of the participant in LiveKit room
6990    #[prost(string, tag="5")]
6991    pub participant_name: ::prost::alloc::string::String,
6992    /// Optional user-defined metadata. Will be attached to a created Participant in the room.
6993    #[prost(string, tag="6")]
6994    pub participant_metadata: ::prost::alloc::string::String,
6995    /// Optional user-defined attributes. Will be attached to a created Participant in the room.
6996    #[prost(map="string, string", tag="7")]
6997    pub participant_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
6998    /// Country where the call terminates as ISO 3166-1 alpha-2 (<https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2>). This will be used by the livekit infrastructure to route calls.
6999    #[prost(string, tag="8")]
7000    pub destination_country: ::prost::alloc::string::String,
7001}
7002/// Nested message and enum types in `ConnectTwilioCallRequest`.
7003pub mod connect_twilio_call_request {
7004    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7005    #[repr(i32)]
7006    pub enum TwilioCallDirection {
7007        /// Call is inbound to LiveKit from Twilio
7008        Inbound = 0,
7009        /// Call is outbound from LiveKit to Twilio
7010        Outbound = 1,
7011    }
7012    impl TwilioCallDirection {
7013        /// String value of the enum field names used in the ProtoBuf definition.
7014        ///
7015        /// The values are not transformed in any way and thus are considered stable
7016        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7017        pub fn as_str_name(&self) -> &'static str {
7018            match self {
7019                TwilioCallDirection::Inbound => "TWILIO_CALL_DIRECTION_INBOUND",
7020                TwilioCallDirection::Outbound => "TWILIO_CALL_DIRECTION_OUTBOUND",
7021            }
7022        }
7023        /// Creates an enum from field names used in the ProtoBuf definition.
7024        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7025            match value {
7026                "TWILIO_CALL_DIRECTION_INBOUND" => Some(Self::Inbound),
7027                "TWILIO_CALL_DIRECTION_OUTBOUND" => Some(Self::Outbound),
7028                _ => None,
7029            }
7030        }
7031    }
7032}
7033#[allow(clippy::derive_partial_eq_without_eq)]
7034#[derive(Clone, PartialEq, ::prost::Message)]
7035pub struct ConnectTwilioCallResponse {
7036    /// The websocket URL which twilio media stream will connect to
7037    #[prost(string, tag="1")]
7038    pub connect_url: ::prost::alloc::string::String,
7039}
7040#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7041#[repr(i32)]
7042pub enum ConnectorType {
7043    Unspecified = 0,
7044    WhatsApp = 1,
7045    Twilio = 2,
7046}
7047impl ConnectorType {
7048    /// String value of the enum field names used in the ProtoBuf definition.
7049    ///
7050    /// The values are not transformed in any way and thus are considered stable
7051    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7052    pub fn as_str_name(&self) -> &'static str {
7053        match self {
7054            ConnectorType::Unspecified => "Unspecified",
7055            ConnectorType::WhatsApp => "WhatsApp",
7056            ConnectorType::Twilio => "Twilio",
7057        }
7058    }
7059    /// Creates an enum from field names used in the ProtoBuf definition.
7060    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7061        match value {
7062            "Unspecified" => Some(Self::Unspecified),
7063            "WhatsApp" => Some(Self::WhatsApp),
7064            "Twilio" => Some(Self::Twilio),
7065            _ => None,
7066        }
7067    }
7068}
7069include!("livekit.serde.rs");
7070// @@protoc_insertion_point(module)